N3_a_Random_Forest_Regression.ipynb 64 KB
 Olivier Michel committed Oct 21, 2020 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 ``````{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook can be run on mybinder: [![Binder](https://mybinder.org/badge_logo.svg)](https://mybinder.org/v2/git/https%3A%2F%2Fgricad-gitlab.univ-grenoble-alpes.fr%2Fchatelaf%2Fml-sicom3a/master?urlpath=lab/tree/notebooks/8_Trees_Boosting/N3_a_Random_Forest_Regression.ipynb)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## RANDOM FORESTS regressors " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Consider first the same example as in notebook `N2_Regression_tree.ipynb`\n", "This is a regression problem. Rather than evaluating the optimal tree structure of a single tree, random forest is considered. \n", "See\n", "https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The number of point in the set is 629\n" ] }, { "data": { `````` Olivier Michel committed Oct 22, 2021 41 `````` "image/png": "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\n", `````` Olivier Michel committed Oct 21, 2020 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 `````` "text/plain": [ "