{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Random forest in scikit-learn" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We illustrate the following regression method on a data set called \"Hitters\", which includes 20 variables and 322 observations of major league baseball players. The goal is to predict a baseball player’s salary on the basis of various features associated with performance in the previous year. We don't cover the topic of exploratory data analysis in this notebook. \n", "\n", "- Visit [this documentation](https://cran.r-project.org/web/packages/ISLR/ISLR.pdf) if you want to learn more about the data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "from collections import OrderedDict\n", "\n", "from sklearn.ensemble import RandomForestRegressor\n", "from sklearn.metrics import mean_squared_error\n", "from sklearn.inspection import permutation_importance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Import" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "\n", "df = pd.read_csv(\"https://raw.githubusercontent.com/kirenz/datasets/master/Hitters.csv\")" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AtBatHitsHmRunRunsRBIWalksYearsCAtBatCHitsCHmRunCRunsCRBICWalksLeagueDivisionPutOutsAssistsErrorsSalaryNewLeague
02936613029141293661302914AE4463320NaNA
131581724383914344983569321414375NW6324310475.0N
2479130186672763162445763224266263AW8808214480.0A
3496141206578371156281575225828838354NE200113500.0N
43218710394230239610112484633NE80540491.5N
...............................................................
31749712776548375270380632379311138NE32593700.0N
3184921365765094125511151139897451875AE31338120875.0A
319475126361435261700433721793146AW371137385.0A
32057314498560788319885797470420332AE131413112960.0A
3216311709774431114908145730775357249AW408431000.0A
\n", "

322 rows × 20 columns

\n", "
" ], "text/plain": [ " AtBat Hits HmRun Runs RBI Walks Years CAtBat CHits CHmRun \\\n", "0 293 66 1 30 29 14 1 293 66 1 \n", "1 315 81 7 24 38 39 14 3449 835 69 \n", "2 479 130 18 66 72 76 3 1624 457 63 \n", "3 496 141 20 65 78 37 11 5628 1575 225 \n", "4 321 87 10 39 42 30 2 396 101 12 \n", ".. ... ... ... ... ... ... ... ... ... ... \n", "317 497 127 7 65 48 37 5 2703 806 32 \n", "318 492 136 5 76 50 94 12 5511 1511 39 \n", "319 475 126 3 61 43 52 6 1700 433 7 \n", "320 573 144 9 85 60 78 8 3198 857 97 \n", "321 631 170 9 77 44 31 11 4908 1457 30 \n", "\n", " CRuns CRBI CWalks League Division PutOuts Assists Errors Salary \\\n", "0 30 29 14 A E 446 33 20 NaN \n", "1 321 414 375 N W 632 43 10 475.0 \n", "2 224 266 263 A W 880 82 14 480.0 \n", "3 828 838 354 N E 200 11 3 500.0 \n", "4 48 46 33 N E 805 40 4 91.5 \n", ".. ... ... ... ... ... ... ... ... ... \n", "317 379 311 138 N E 325 9 3 700.0 \n", "318 897 451 875 A E 313 381 20 875.0 \n", "319 217 93 146 A W 37 113 7 385.0 \n", "320 470 420 332 A E 1314 131 12 960.0 \n", "321 775 357 249 A W 408 4 3 1000.0 \n", "\n", " NewLeague \n", "0 A \n", "1 N \n", "2 A \n", "3 N \n", "4 N \n", ".. ... \n", "317 N \n", "318 A \n", "319 A \n", "320 A \n", "321 A \n", "\n", "[322 rows x 20 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "RangeIndex: 322 entries, 0 to 321\n", "Data columns (total 20 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 AtBat 322 non-null int64 \n", " 1 Hits 322 non-null int64 \n", " 2 HmRun 322 non-null int64 \n", " 3 Runs 322 non-null int64 \n", " 4 RBI 322 non-null int64 \n", " 5 Walks 322 non-null int64 \n", " 6 Years 322 non-null int64 \n", " 7 CAtBat 322 non-null int64 \n", " 8 CHits 322 non-null int64 \n", " 9 CHmRun 322 non-null int64 \n", " 10 CRuns 322 non-null int64 \n", " 11 CRBI 322 non-null int64 \n", " 12 CWalks 322 non-null int64 \n", " 13 League 322 non-null object \n", " 14 Division 322 non-null object \n", " 15 PutOuts 322 non-null int64 \n", " 16 Assists 322 non-null int64 \n", " 17 Errors 322 non-null int64 \n", " 18 Salary 263 non-null float64\n", " 19 NewLeague 322 non-null object \n", "dtypes: float64(1), int64(16), object(3)\n", "memory usage: 50.4+ KB\n" ] } ], "source": [ "df.info()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Missing values\n", "\n", "Note that the salary is missing for some of the players:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "AtBat 0\n", "Hits 0\n", "HmRun 0\n", "Runs 0\n", "RBI 0\n", "Walks 0\n", "Years 0\n", "CAtBat 0\n", "CHits 0\n", "CHmRun 0\n", "CRuns 0\n", "CRBI 0\n", "CWalks 0\n", "League 0\n", "Division 0\n", "PutOuts 0\n", "Assists 0\n", "Errors 0\n", "Salary 59\n", "NewLeague 0\n", "dtype: int64\n" ] } ], "source": [ "print(df.isnull().sum())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We simply drop the missing cases: " ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# drop missing cases\n", "df = df.dropna()" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Create label and features\n", "\n", "Since we will use algorithms from scikit learn, we need to encode our categorical features as one-hot numeric features (dummy variables):" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "dummies = pd.get_dummies(df[['League', 'Division','NewLeague']])" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 263 entries, 1 to 321\n", "Data columns (total 6 columns):\n", " # Column Non-Null Count Dtype\n", "--- ------ -------------- -----\n", " 0 League_A 263 non-null uint8\n", " 1 League_N 263 non-null uint8\n", " 2 Division_E 263 non-null uint8\n", " 3 Division_W 263 non-null uint8\n", " 4 NewLeague_A 263 non-null uint8\n", " 5 NewLeague_N 263 non-null uint8\n", "dtypes: uint8(6)\n", "memory usage: 3.6 KB\n" ] } ], "source": [ "dummies.info()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " League_A League_N Division_E Division_W NewLeague_A NewLeague_N\n", "1 0 1 0 1 0 1\n", "2 1 0 0 1 1 0\n", "3 0 1 1 0 0 1\n", "4 0 1 1 0 0 1\n", "5 1 0 0 1 1 0\n" ] } ], "source": [ "print(dummies.head())" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, we create our label y:" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "y = df[['Salary']]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We drop the column with the outcome variable (Salary), and categorical columns for which we already created dummy variables:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "X_numerical = df.drop(['Salary', 'League', 'Division', 'NewLeague'], axis=1).astype('float64')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Make a list of all numerical features (we need them later):" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['AtBat', 'Hits', 'HmRun', 'Runs', 'RBI', 'Walks', 'Years', 'CAtBat',\n", " 'CHits', 'CHmRun', 'CRuns', 'CRBI', 'CWalks', 'PutOuts', 'Assists',\n", " 'Errors'],\n", " dtype='object')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list_numerical = X_numerical.columns\n", "list_numerical" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Int64Index: 263 entries, 1 to 321\n", "Data columns (total 19 columns):\n", " # Column Non-Null Count Dtype \n", "--- ------ -------------- ----- \n", " 0 AtBat 263 non-null float64\n", " 1 Hits 263 non-null float64\n", " 2 HmRun 263 non-null float64\n", " 3 Runs 263 non-null float64\n", " 4 RBI 263 non-null float64\n", " 5 Walks 263 non-null float64\n", " 6 Years 263 non-null float64\n", " 7 CAtBat 263 non-null float64\n", " 8 CHits 263 non-null float64\n", " 9 CHmRun 263 non-null float64\n", " 10 CRuns 263 non-null float64\n", " 11 CRBI 263 non-null float64\n", " 12 CWalks 263 non-null float64\n", " 13 PutOuts 263 non-null float64\n", " 14 Assists 263 non-null float64\n", " 15 Errors 263 non-null float64\n", " 16 League_N 263 non-null uint8 \n", " 17 Division_W 263 non-null uint8 \n", " 18 NewLeague_N 263 non-null uint8 \n", "dtypes: float64(16), uint8(3)\n", "memory usage: 35.7 KB\n" ] } ], "source": [ "# Create all features\n", "X = pd.concat([X_numerical, dummies[['League_N', 'Division_W', 'NewLeague_N']]], axis=1)\n", "X.info()" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "# Create a list of feature names\n", "feature_names = X.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Split the data set into train and test set with the first 70% of the data for training and the remaining 30% for testing." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=10)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AtBatHitsHmRunRunsRBIWalksYearsCAtBatCHitsCHmRunCRunsCRBICWalksPutOutsAssistsErrorsLeague_NDivision_WNewLeague_N
260496.0119.08.057.033.021.07.03358.0882.036.0365.0280.0165.0155.0371.029.0111
92317.078.07.035.035.032.01.0317.078.07.035.035.032.045.0122.026.0000
137343.0103.06.048.036.040.015.04338.01193.070.0581.0421.0325.0211.056.013.0000
90314.083.013.039.046.016.05.01457.0405.028.0156.0159.076.0533.040.04.0010
100495.0151.017.061.084.078.010.05624.01679.0275.0884.01015.0709.01045.088.013.0000
\n", "
" ], "text/plain": [ " AtBat Hits HmRun Runs RBI Walks Years CAtBat CHits CHmRun \\\n", "260 496.0 119.0 8.0 57.0 33.0 21.0 7.0 3358.0 882.0 36.0 \n", "92 317.0 78.0 7.0 35.0 35.0 32.0 1.0 317.0 78.0 7.0 \n", "137 343.0 103.0 6.0 48.0 36.0 40.0 15.0 4338.0 1193.0 70.0 \n", "90 314.0 83.0 13.0 39.0 46.0 16.0 5.0 1457.0 405.0 28.0 \n", "100 495.0 151.0 17.0 61.0 84.0 78.0 10.0 5624.0 1679.0 275.0 \n", "\n", " CRuns CRBI CWalks PutOuts Assists Errors League_N Division_W \\\n", "260 365.0 280.0 165.0 155.0 371.0 29.0 1 1 \n", "92 35.0 35.0 32.0 45.0 122.0 26.0 0 0 \n", "137 581.0 421.0 325.0 211.0 56.0 13.0 0 0 \n", "90 156.0 159.0 76.0 533.0 40.0 4.0 0 1 \n", "100 884.0 1015.0 709.0 1045.0 88.0 13.0 0 0 \n", "\n", " NewLeague_N \n", "260 1 \n", "92 0 \n", "137 0 \n", "90 0 \n", "100 0 " ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X_train.head()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Salary
260875.0
9270.0
137430.0
90431.5
1002460.0
......
274200.0
196587.5
159200.0
17175.0
16275.0
\n", "

184 rows × 1 columns

\n", "
" ], "text/plain": [ " Salary\n", "260 875.0\n", "92 70.0\n", "137 430.0\n", "90 431.5\n", "100 2460.0\n", ".. ...\n", "274 200.0\n", "196 587.5\n", "159 200.0\n", "17 175.0\n", "162 75.0\n", "\n", "[184 rows x 1 columns]" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y_train" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data standardization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Some of our models perform best when all numerical features are centered around 0 and have variance in the same order (like Lasso, Ridge or GAMs).\n", "- To avoid [data leakage](https://en.wikipedia.org/wiki/Leakage_(machine_learning)), the standardization of numerical features should always be performed after data splitting and only from training data. \n", "- Furthermore, we obtain all necessary statistics for our features (mean and standard deviation) from training data and also use them on test data. Note that we don't standardize our dummy variables (which only have values of 0 or 1)." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "\n", "scaler = StandardScaler().fit(X_train[list_numerical]) \n", "\n", "X_train[list_numerical] = scaler.transform(X_train[list_numerical])\n", "X_test[list_numerical] = scaler.transform(X_test[list_numerical])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Make contiguous flattened arrays (for our scikit-learn model):" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [], "source": [ "y_train = np.ravel(y_train)\n", "y_test = np.ravel(y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Define hyperparameters:" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": [ "params = {\n", " \"n_estimators\": 500,\n", " \"max_depth\": 4,\n", " \"min_samples_split\": 5,\n", " \"warm_start\":True,\n", " \"oob_score\":True,\n", " \"random_state\": 42,\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Build and fit model" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
RandomForestRegressor(max_depth=4, min_samples_split=5, n_estimators=500,\n",
       "                      oob_score=True, random_state=42, warm_start=True)
In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
On GitHub, the HTML representation is unable to render, please try loading this page with nbviewer.org.
" ], "text/plain": [ "RandomForestRegressor(max_depth=4, min_samples_split=5, n_estimators=500,\n", " oob_score=True, random_state=42, warm_start=True)" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reg =RandomForestRegressor(**params)\n", "\n", "reg.fit(X_train, y_train)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Make predictions" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "y_pred = reg.predict(X_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Evaluate model with RMSE" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "296.37036964432764" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean_squared_error(y_test, y_pred, squared=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature importance\n", "\n", "- Next, we take a look at the tree based feature importance and the permutation importance.\n", "\n", "### Mean decrease in impurity (MDI)\n", "\n", "- Mean decrease in impurity (MDI) is a measure of feature importance for decision tree models. \n", "\n", "```{Note}\n", "Visit [this notebook](https://kirenz.github.io/feature-engineering/docs/mdi.html#) to learn more about MDI\n", "```" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Feature importances are provided by the fitted attribute `feature_importances_` \n" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# obtain feature importance\n", "feature_importance = reg.feature_importances_\n", "\n", "# sort features according to importance\n", "sorted_idx = np.argsort(feature_importance)\n", "pos = np.arange(sorted_idx.shape[0])\n", "\n", "# plot feature importances\n", "plt.barh(pos, feature_importance[sorted_idx], align=\"center\")\n", "\n", "plt.yticks(pos, np.array(feature_names)[sorted_idx])\n", "plt.title(\"Feature Importance (MDI)\")\n", "plt.xlabel(\"Mean decrease in impurity\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Permutation feature importance\n", "\n", "The permutation feature importance is defined to be the decrease in a model score when a single feature value is randomly shuffled. \n", "\n", "```{Note}\n", "Visit [this notebook](https://kirenz.github.io/feature-engineering/docs/permutation-feature-importance.html) to learn more about permutation feature importance.\n", "```" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "result = permutation_importance(\n", " reg, X_test, y_test, n_repeats=10, random_state=42, n_jobs=2\n", ")\n", "\n", "tree_importances = pd.Series(result.importances_mean, index=feature_names)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "image/png": "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6tevj/3795fmkImIiEjHMIHLx7///otVq1Zhx44dCA0NRUREBHr37o2DBw/i4MGD2LJlC7799lvs3r27wDquXLmC06dPw9DQsMjtBwYGol+/fvj999/RrVs3DB48GI8fPy4wPj09HRqNRmsjIiKi8qvCJXAhISGQy+Va28svic/MzMS6devQrFkzuLm5oW/fvjh16hQ2btyIhg0bokePHlCr1QgPD9c6bu3atZDL5ZDJZHB2dsbDhw8xbdq0IvfRx8cHAwcOhJ2dHRYuXIjU1FScP3++wPigoCAoFAppUyqVRW6TiIiIdEeFS+DUajWio6O1tu+++04rxtTUFPXq1ZM+V69eHSqVCnK5XKvswYMHWscNHjwY0dHROHPmDPr164cRI0agT58+Re6jk5OT9GczMzOYm5vnaeu//P39kZycLG0JCQlFbpOIiIh0R4V7iMHMzAx2dnZaZffu3dP6/PKypyAI+Zbl5ORolSkUCqnurVu3olGjRti4cSNGjhwJANDT04MoilrHZGZm5uljYdr6L5lMBplMVuB+IiIiKl8q3Azc22JoaIjPPvsMs2bNwr///gsAsLKyQmJiohSj0Whw586dsuoiERER6SgmcKVo0KBBEAQBa9euBQB06NABW7ZswcmTJ/HHH39g+PDh0NfXL+NeEhERka5hAleKjIyM8Mknn2DJkiV49uwZ/P394ebmhh49eqBbt27w9vbWuteOiIiIqDAE8eWbskjnaTQaKBQKJCcnw8LCotTa4cvsiYiISk5Rvr8r3EMMVHKYhBEREZUNLqESERER6RgmcEREREQ6hgkcERERkY5hAkfFppr56xs9yEBERETFwwSOiIiISMcwgSsFgiBg3759Zd0NIiIiKqcqfAIXGRkJfX19dOnSpcTqTExMRNeuXQsVy2SPiIiIiqrCJ3CbNm3ChAkTcOrUKcTHx5dIndbW1ny5PBEREZWaCp3ApaamYteuXRg3bhx69OiB4OBgad+TJ08wePBgWFlZwcTEBPXr18fmzZsBABkZGfjkk09gY2MDY2NjqFQqBAUFScf+d1btVbEqlQoA8MEHH0AQBOnzlStXoFarYW5uDgsLC7Ro0QIXLlwo9fNBREREuqFCv4lh586daNCgARo0aIAhQ4ZgwoQJmD17NgRBwOzZsxETE4NDhw6hatWquHnzJtLS0gAAq1atwv79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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# sort features according to importance\n", "sorted_idx = np.argsort(tree_importances)\n", "pos = np.arange(sorted_idx.shape[0])\n", "\n", "# plot feature importances\n", "plt.barh(pos, tree_importances[sorted_idx], align=\"center\")\n", "\n", "plt.yticks(pos, np.array(feature_names)[sorted_idx])\n", "plt.title(\"Feature Importance (MDI)\")\n", "plt.xlabel(\"Mean decrease in impurity\");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- Same data plotted as boxplot:" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 1.0, 'Permutation Importance (test set)')" ] }, "execution_count": 77, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.boxplot(\n", " result.importances[sorted_idx].T,\n", " vert=False,\n", " labels=np.array(feature_names)[sorted_idx],\n", ")\n", "\n", "plt.title(\"Permutation Importance (test set)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- We observe that the same features are detected as most important using both methods (e.g., `CAtBat`, `CRBI`, `CHits`, `Walks`, `Years`). Although the relative importances vary (especially for feature `Years`)." ] } ], "metadata": { "kernelspec": { "display_name": "ds", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.13" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "0de8387c967863cc622aba8b7ea5b466d4dfde089153d484429677aa77034389" } } }, "nbformat": 4, "nbformat_minor": 2 }