{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example: Train sizing\n", "-----------------------\n", "\n", "This example shows how to asses a model's performance based on the size of the training set.\n", "\n", "The data used is a variation on the [Australian weather dataset](https://www.kaggle.com/jsphyg/weather-dataset-rattle-package) from Kaggle. You can download it from [here](https://github.com/tvdboom/ATOM/blob/master/examples/datasets/weatherAUS.csv). The goal of this dataset is to predict whether or not it will rain tomorrow training a binary classifier on target `RainTomorrow`." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load the data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "UserWarning: The pandas version installed (1.5.3) does not match the supported pandas version in Modin (1.5.2). This may cause undesired side effects!\n" ] } ], "source": [ "# Import packages\n", "import pandas as pd\n", "from atom import ATOMClassifier" ] }, { "cell_type": "code", "execution_count": 2, "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", "
LocationMinTempMaxTempRainfallEvaporationSunshineWindGustDirWindGustSpeedWindDir9amWindDir3pm...Humidity9amHumidity3pmPressure9amPressure3pmCloud9amCloud3pmTemp9amTemp3pmRainTodayRainTomorrow
0MelbourneAirport18.026.921.47.08.9SSE41.0WSSE...95.054.01019.51017.08.05.018.526.0Yes0
1Adelaide17.223.40.0NaNNaNS41.0SWSW...59.036.01015.71015.7NaNNaN17.721.9No0
2Cairns18.624.67.43.06.1SSE54.0SSESE...78.057.01018.71016.63.03.020.824.1Yes0
3Portland13.616.84.21.20.0ESE39.0ESEESE...76.074.01021.41020.57.08.015.616.0Yes1
4Walpole16.419.90.0NaNNaNSE44.0SESE...78.070.01019.41018.9NaNNaN17.418.1No0
\n", "

5 rows × 22 columns

\n", "
" ], "text/plain": [ " Location MinTemp MaxTemp Rainfall Evaporation Sunshine \\\n", "0 MelbourneAirport 18.0 26.9 21.4 7.0 8.9 \n", "1 Adelaide 17.2 23.4 0.0 NaN NaN \n", "2 Cairns 18.6 24.6 7.4 3.0 6.1 \n", "3 Portland 13.6 16.8 4.2 1.2 0.0 \n", "4 Walpole 16.4 19.9 0.0 NaN NaN \n", "\n", " WindGustDir WindGustSpeed WindDir9am WindDir3pm ... Humidity9am \\\n", "0 SSE 41.0 W SSE ... 95.0 \n", "1 S 41.0 S WSW ... 59.0 \n", "2 SSE 54.0 SSE SE ... 78.0 \n", "3 ESE 39.0 ESE ESE ... 76.0 \n", "4 SE 44.0 SE SE ... 78.0 \n", "\n", " Humidity3pm Pressure9am Pressure3pm Cloud9am Cloud3pm Temp9am \\\n", "0 54.0 1019.5 1017.0 8.0 5.0 18.5 \n", "1 36.0 1015.7 1015.7 NaN NaN 17.7 \n", "2 57.0 1018.7 1016.6 3.0 3.0 20.8 \n", "3 74.0 1021.4 1020.5 7.0 8.0 15.6 \n", "4 70.0 1019.4 1018.9 NaN NaN 17.4 \n", "\n", " Temp3pm RainToday RainTomorrow \n", "0 26.0 Yes 0 \n", "1 21.9 No 0 \n", "2 24.1 Yes 0 \n", "3 16.0 Yes 1 \n", "4 18.1 No 0 \n", "\n", "[5 rows x 22 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Load the data\n", "X = pd.read_csv(\"./datasets/weatherAUS.csv\")\n", "\n", "# Let's have a look\n", "X.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Run the pipeline" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "<< ================== ATOM ================== >>\n", "Algorithm task: binary classification.\n", "\n", "Dataset stats ==================== >>\n", "Shape: (142193, 22)\n", "Train set size: 113755\n", "Test set size: 28438\n", "-------------------------------------\n", "Memory: 61.69 MB\n", "Scaled: False\n", "Missing values: 316559 (10.1%)\n", "Categorical features: 5 (23.8%)\n", "Duplicate samples: 45 (0.0%)\n", "\n", "Fitting Cleaner...\n", "Cleaning the data...\n", "Fitting Imputer...\n", "Imputing missing values...\n", " --> Dropping 161 samples for containing more than 16 missing values.\n", " --> Imputing 481 missing values with median (12.0) in feature MinTemp.\n", " --> Imputing 265 missing values with median (22.6) in feature MaxTemp.\n", " --> Imputing 1354 missing values with median (0.0) in feature Rainfall.\n", " --> Imputing 60682 missing values with median (4.8) in feature Evaporation.\n", " --> Imputing 67659 missing values with median (8.4) in feature Sunshine.\n", " --> Imputing 9187 missing values with most_frequent (W) in feature WindGustDir.\n", " --> Imputing 9127 missing values with median (39.0) in feature WindGustSpeed.\n", " --> Imputing 9852 missing values with most_frequent (N) in feature WindDir9am.\n", " --> Imputing 3617 missing values with most_frequent (SE) in feature WindDir3pm.\n", " --> Imputing 1187 missing values with median (13.0) in feature WindSpeed9am.\n", " --> Imputing 2469 missing values with median (19.0) in feature WindSpeed3pm.\n", " --> Imputing 1613 missing values with median (70.0) in feature Humidity9am.\n", " --> Imputing 3449 missing values with median (52.0) in feature Humidity3pm.\n", " --> Imputing 13863 missing values with median (1017.6) in feature Pressure9am.\n", " --> Imputing 13830 missing values with median (1015.2) in feature Pressure3pm.\n", " --> Imputing 53496 missing values with median (5.0) in feature Cloud9am.\n", " --> Imputing 56933 missing values with median (5.0) in feature Cloud3pm.\n", " --> Imputing 743 missing values with median (16.7) in feature Temp9am.\n", " --> Imputing 2565 missing values with median (21.1) in feature Temp3pm.\n", " --> Imputing 1354 missing values with most_frequent (No) in feature RainToday.\n", "Fitting Encoder...\n", "Encoding categorical columns...\n", " --> LeaveOneOut-encoding feature Location. Contains 49 classes.\n", " --> LeaveOneOut-encoding feature WindGustDir. Contains 16 classes.\n", " --> LeaveOneOut-encoding feature WindDir9am. Contains 16 classes.\n", " --> LeaveOneOut-encoding feature WindDir3pm. Contains 16 classes.\n", " --> Ordinal-encoding feature RainToday. Contains 2 classes.\n" ] } ], "source": [ "# Initialize atom and prepare the data\n", "atom = ATOMClassifier(X, verbose=2, random_state=1)\n", "atom.clean()\n", "atom.impute(strat_num=\"median\", strat_cat=\"most_frequent\", max_nan_rows=0.8)\n", "atom.encode()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "\n", "Training ========================= >>\n", "Metric: f1\n", "\n", "\n", "Run: 0 =========================== >>\n", "Models: LGB01\n", "Size of training set: 11362 (10%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.795\n", "Test evaluation --> f1: 0.6169\n", "Time elapsed: 2.702s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6025 ± 0.0021\n", "Time elapsed: 2.367s\n", "-------------------------------------------------\n", "Total time: 5.069s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 5.072s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6025 ± 0.0021 ~\n", "\n", "\n", "Run: 1 =========================== >>\n", "Models: LGB02\n", "Size of training set: 22724 (20%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.711\n", "Test evaluation --> f1: 0.6172\n", "Time elapsed: 3.361s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.606 ± 0.0021\n", "Time elapsed: 2.924s\n", "-------------------------------------------------\n", "Total time: 6.285s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 6.288s\n", "-------------------------------------\n", "LightGBM --> f1: 0.606 ± 0.0021\n", "\n", "\n", "Run: 2 =========================== >>\n", "Models: LGB03\n", "Size of training set: 34087 (30%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6844\n", "Test evaluation --> f1: 0.6205\n", "Time elapsed: 4.115s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6136 ± 0.0021\n", "Time elapsed: 3.574s\n", "-------------------------------------------------\n", "Total time: 7.689s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 7.692s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6136 ± 0.0021\n", "\n", "\n", "Run: 3 =========================== >>\n", "Models: LGB04\n", "Size of training set: 45449 (40%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6788\n", "Test evaluation --> f1: 0.6246\n", "Time elapsed: 4.704s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6209 ± 0.0012\n", "Time elapsed: 4.312s\n", "-------------------------------------------------\n", "Total time: 9.017s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 9.019s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6209 ± 0.0012\n", "\n", "\n", "Run: 4 =========================== >>\n", "Models: LGB05\n", "Size of training set: 56812 (50%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6694\n", "Test evaluation --> f1: 0.6256\n", "Time elapsed: 5.333s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6231 ± 0.0025\n", "Time elapsed: 4.956s\n", "-------------------------------------------------\n", "Total time: 10.289s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 10.295s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6231 ± 0.0025\n", "\n", "\n", "Run: 5 =========================== >>\n", "Models: LGB06\n", "Size of training set: 68174 (60%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6623\n", "Test evaluation --> f1: 0.627\n", "Time elapsed: 6.177s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6223 ± 0.0043\n", "Time elapsed: 5.432s\n", "-------------------------------------------------\n", "Total time: 11.609s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 11.615s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6223 ± 0.0043\n", "\n", "\n", "Run: 6 =========================== >>\n", "Models: LGB07\n", "Size of training set: 79536 (70%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6609\n", "Test evaluation --> f1: 0.6307\n", "Time elapsed: 6.787s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6254 ± 0.0029\n", "Time elapsed: 6.138s\n", "-------------------------------------------------\n", "Total time: 12.925s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 12.930s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6254 ± 0.0029\n", "\n", "\n", "Run: 7 =========================== >>\n", "Models: LGB08\n", "Size of training set: 90899 (80%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6588\n", "Test evaluation --> f1: 0.6316\n", "Time elapsed: 7.660s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6255 ± 0.002\n", "Time elapsed: 7.141s\n", "-------------------------------------------------\n", "Total time: 14.802s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 14.808s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6255 ± 0.002\n", "\n", "\n", "Run: 8 =========================== >>\n", "Models: LGB09\n", "Size of training set: 102261 (90%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6601\n", "Test evaluation --> f1: 0.6318\n", "Time elapsed: 8.433s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6253 ± 0.0022\n", "Time elapsed: 7.353s\n", "-------------------------------------------------\n", "Total time: 15.786s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 15.792s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6253 ± 0.0022\n", "\n", "\n", "Run: 9 =========================== >>\n", "Models: LGB10\n", "Size of training set: 113624 (100%)\n", "Size of test set: 28408\n", "\n", "\n", "Results for LightGBM:\n", "Fit ---------------------------------------------\n", "Train evaluation --> f1: 0.6558\n", "Test evaluation --> f1: 0.631\n", "Time elapsed: 8.937s\n", "Bootstrap ---------------------------------------\n", "Evaluation --> f1: 0.6258 ± 0.0034\n", "Time elapsed: 8.158s\n", "-------------------------------------------------\n", "Total time: 17.095s\n", "\n", "\n", "Final results ==================== >>\n", "Total time: 17.100s\n", "-------------------------------------\n", "LightGBM --> f1: 0.6258 ± 0.0034\n" ] } ], "source": [ "# Analyze the impact of the training set's size on a LightGBM model\n", "atom.train_sizing(\"LGB\", train_sizes=10, n_bootstrap=5)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Analyze the results" ] }, { "cell_type": "code", "execution_count": 5, "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", "
score_trainscore_testtime_fitscore_bootstraptime_bootstraptime
fracmodel
0.1LGB010.79500.61692.7019270.6024732.3666295.068556
0.2LGB020.71100.61723.3610560.6059842.9239616.285017
0.3LGB030.68440.62054.1148510.6136333.5738167.688667
0.4LGB040.67880.62464.7044230.6208944.3121119.016534
0.5LGB050.66940.62565.3326240.6230754.95606410.288688
0.6LGB060.66230.62706.1765260.6222875.43217911.608705
0.7LGB070.66090.63076.7866340.6254126.13818312.924817
0.8LGB080.65880.63167.6602430.6255197.14148814.801731
0.9LGB090.66010.63188.4334110.6253347.35263315.786044
1.0LGB100.65580.63108.9372610.6258408.15822217.095483
\n", "
" ], "text/plain": [ " score_train score_test time_fit score_bootstrap \\\n", "frac model \n", "0.1 LGB01 0.7950 0.6169 2.701927 0.602473 \n", "0.2 LGB02 0.7110 0.6172 3.361056 0.605984 \n", "0.3 LGB03 0.6844 0.6205 4.114851 0.613633 \n", "0.4 LGB04 0.6788 0.6246 4.704423 0.620894 \n", "0.5 LGB05 0.6694 0.6256 5.332624 0.623075 \n", "0.6 LGB06 0.6623 0.6270 6.176526 0.622287 \n", "0.7 LGB07 0.6609 0.6307 6.786634 0.625412 \n", "0.8 LGB08 0.6588 0.6316 7.660243 0.625519 \n", "0.9 LGB09 0.6601 0.6318 8.433411 0.625334 \n", "1.0 LGB10 0.6558 0.6310 8.937261 0.625840 \n", "\n", " time_bootstrap time \n", "frac model \n", "0.1 LGB01 2.366629 5.068556 \n", "0.2 LGB02 2.923961 6.285017 \n", "0.3 LGB03 3.573816 7.688667 \n", "0.4 LGB04 4.312111 9.016534 \n", "0.5 LGB05 4.956064 10.288688 \n", "0.6 LGB06 5.432179 11.608705 \n", "0.7 LGB07 6.138183 12.924817 \n", "0.8 LGB08 7.141488 14.801731 \n", "0.9 LGB09 7.352633 15.786044 \n", "1.0 LGB10 8.158222 17.095483 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# The results are now multi-index, where frac is the fraction\n", "# of the training set used to fit the model. The model names\n", "# end with the fraction as well (without the dot)\n", "atom.results" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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o5krUdi2fV5BQUG7MeZCt7MMBX2ygPi1uimLJsRdLjvM6NXz/Gq90q8/njT4l/Snv+CT852A/D2ua5tZKL1wll913/Br68V+XX20dy5683GBH4AoG/Avsm3b/23b9kbbtutt295u2/Y/bdue0GufC2zb3mDbdrNt2y/btj17JMJ+5Stf2eD3+9uMMck91q03xjjGmEt65PlSXl5e2BhzuWVZP21raws4jvNitHLYtp38la985faDDz54Z2ZmphMMBp2cnJzQ+PHjVxcXFy+NwvEnzZs3z0lPT7+/5/rbb7/98EWLFn1YWFjYkZKS4qSlpYWLi4srjTHH7etjeg19soD49XpNGtdjdSlvlG54KaK73xv88MlzZhgl9VFU3H+aXy+UOcq7I6xj/hbWpbN8WjrVG8UHfbIARNtgPvb6s6RZlmVlSZokaYukv3VvtG17gaTfSrpEUq6k/5P0mG3bWdEOu//++z/iOE5A0tyux87bsGHDhKKiovb09PTPdO+3adOm02tra32Sno52Btu2/a+99tqLf/rTny7buXPnf8aOHXvACSec4LvooovmHXHEEesdx/litB+z63EznnrqqeWvvvpqjt/vn3Pbbbf5L7744llHHnnk3yW1jMRjJrJgMOh2BADD9NRmRxEuyZIkPbjO0b/XO9oxyFeBrGTpx3N9uuqFPWfTm5Ql3fd+RBFH+mintGKbo4Pyoxw4RtEnC0C0DVhkWZa11rKsnV03jaSIpP177PJVSQ9YlvWkZVkhSb+UFJL02WiHzc7OfmzSpElKSko6sWvVce+9917oU5/61PNtbW3zjTFGkj766KNjk5OT6xzHWWPb9rVdZ7oWSNK5555bnZGRseO00077IDc3N5KamhouLCz8lzHGL0m2bSd97Wtfu3/8+PHtwWAwUlBQsLGqqqpn59pzHnzwwcNSUlL+d+vWrWd++OGHHzz88MPOzTff/PoDDzxwemVl5ee7jnPs9OnTHWPM1d137JnFtm1z6aWX/s+UKVNCqampTlpaWjg3N/cjY0zu448//v7LL7+s1tbWs4PBoBMIBEItLS0zNm3alNba2vqXioqKtyzLivzqV79696GHHrrccZyXJOmaa675pzHGWbp06YtjxowJp6SkhMeMGfOGMWZMd4brr79+8YIFC8ry8/PDaWlp4aKiorWBQGBa9/abb7555uLFiz8cM2ZMR2pqaqSwsLAsPT39qO7tN91009wFCxZUZGZmRjIyMtruvvvuC6L9fR4NWVlR/wwAwCjoiDha18D1M8P104U+/fbtSJ/XtN36uqMLDvQp4JOm50pzS4ye3uKNara1tdXtCAASzKAGcNu2fY5t2zslNUq6QtK1PTbPlPR69w3LshxJb3at7+94dQN8TejnrssPOOCASHJy8qclqbKy8rS6urrAwoUL70lPT3ckzbJt+8D169dnBwKB5/p7/JaWlryXX3552fjx49Mvv/zyPzU1NS2VdJYk1dTU/Pjee+89MxQK3fr5z38+58wzz3z9xRdf3NW5duPGjf+vurraNDY22gP8tw1kyWOPPXZ+bW3t7a2trYFvf/vb4w899NBrJbWdfPLJM4466iilpKT8NRQKmY6OjmBqauraKVOmNPj9/q8fdNBB98+cOfNMY0x6n/9Jy5fnOo4z4aqrrvpsSUnJzIyMjIclybbtAx966KHH16xZ83EkEin90Y9+NGvWrFlFycnJLxhjkmzbHvPkk0+++NprryU5jnPQT37yk4nHHXdcR0dHx7PGmFzbtrOXLVv2zFtvveUPBoMHfe9731sUCAQW1NbWxt3VEVVVVW5HADAM62ulgPHGG/9om10kzR9ndPsbff//PfJRRJ+fbtRypV8fXBTQH9519FrFKId0iePwMwUgugZVZFmWdb9lWdmSxqqzwHq3x+ZMSTt73aVOUr+nCizLyhnga0s/92ueNGnSe83NzTOMMRnr1q07MSUl5fVgMPjMwQcfnOzz+RZHIpHj165dG2lubv5Xf49vjAlVV1df+s4777RMnTr15hkzZviSk5PnSdKaNWu+EolE6qqqqq6677776mfOnPnFefPmRbrv29jYWNS1uK173Ze//OX309LSnNTUVMfv9w/2SoG2QCDgCwaDB48bN27a9ddfX/7888/f6zhOn3NmWZbVsGTJkkOWLFnybEdHx9L169f/ze/3NxYXF79ljBnfc9+dO3deVlVVte2666576JRTTnm4sbHxSGNMSXV19bdee+21QG1t7Rm1tbUf/+hHP3r3M5/5zH+Hw+Exko6KRCIXPPfcc8k7d+78YlVV1QdXXXXV1sWLF387Nzc3IOlUSae99NJLSU1NTd+vrq5+/5prrlnx2c9+9o6uE4h71dDQEFPLqamprmdgmWWWh748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kpOTNX/+/At7P8dXXnnlZEl66qmn/veDDz6YcNxxx/kPOeSQb73xxhufWbRo0beG+pzdVFq6z7UpAACjZt44o1B44P286Oq5PrV+M6AfHOXT+Qd1Ll89t/Pt0fhMqeFyv8Z3XW91/ASjd77oV+MVfj32Ob8eWOfopy9/8rbt689E1NgulV/i14vn+HX/2sFPDZ+ICpkobNhiphnx0qVLkxzHSXMcJ0XqnE1Qkowx9Q8//LBTUFBw9TvvvLNy7ty5fy8oKDivtbX1Mxs2bJh52GGH3dbX8bKysm4Mh8OXVlRUPHHaaad9tr29feEHH3xw1tSpU5/s3iczMzPS2to6p6/792fatGl//+CDDy5bsmTJKykpKf9wHCenpaXlrEAgsOmJJ554fLjPf+zYsVevXLnygWOOOea6zMzMn0mKtLW1ndDR0TH52Wefva2joyPL7/dH/H7/R47jZMyZM+dfLS0tu6rEpKSkDyORiE466aSF//nPf5ZL0mOPPbY+Ly8vvH379muXLl36TCgUWrphw4ZFeysCH374Yefwww9fuW7dul+feOKJ25544omnTz311KLm5uaLUlJSHvf7/R/W1dX9Kisr66bHHnvswxNOOGFbV7EaV6PFy8rKNHXqVLdjAAAwKMXpRlnJjqpbGaXV209WRfSTVX0P59va0NkTq9t3n4/ou8/3f6yGNunsR7w3NLA/VdXV0vRxbseISzFTZNXU1Px21apVF3XffvTRR+sk6cQTT1woacV//vOfVYsWLfrm+++//9M33nijLTMzs/2QQw753+XLl1/Z1/EeffTRrUuWLDn7ww8//N3q1asbUlJSIlOmTHlhzJgxn+ve5+CDD75n9erVX0xLS/vSlClT1r733nsHDpRz1apVFyxYsKD1vffe++POnTv/5vP5nDFjxtRMmzZt0BNN9OXJJ5/81/HHH3/xhg0bbqyurr7acRzl5OQ0T5069XeSVFxcfFFdXd0LTz/9dFlqamp4//33fzwnJ2fXWbknnnjiyUMOOWT1ihUrnk9LSzOHH374XStWrPjarFmzvrV69epfrFmzpq2kpKRm6tSpyz766KNj9palpKTk+KSkpH+8+eabj6akpCQnJydHioqKKqdNm/akJH388cefeeutt74SDAZNenp6x6xZsx559tln+yx2Y1VSEmMuAADx5aiisB7dHDeDkJAA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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Every model can be accessed through its name\n", "atom.lgb05.plot_shap_waterfall(show=6)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "error_y": { "array": [ 0.0021093507865551924, 0.0020567842220873423, 0.002118481499414932, 0.001160167220745696, 0.00250375447453087, 0.004265897967306575, 0.0028864062364942697, 0.0019579716683319, 0.0021689829117167393, 0.003362587796705156 ], "type": "data", "visible": true }, "hovertemplate": "(%{x}, %{y})LGB - f1", "legendgroup": "LGB", "legendgrouptitle": { "font": { "size": 16 }, "text": "LGB" }, "line": { "color": "rgb(0, 98, 98)", "width": 2 }, "marker": { "color": "rgb(0, 98, 98)", "line": { "color": "rgba(255, 255, 255, 0.9)", "width": 1 }, "size": 8, "symbol": "circle" }, "mode": "lines+markers", "name": "f1", "showlegend": true, "type": "scatter", "x": [ 11362, 22724, 34087, 45449, 56812, 68174, 79536, 90899, 102261, 113624 ], "xaxis": "x", "y": [ 0.6024732288039821, 0.605983880000626, 0.6136333528411273, 0.6208941926213539, 0.6230748072286343, 0.62228677254213, 0.6254124354209738, 0.625519241877403, 0.6253336016433961, 0.6258404708878225 ], "yaxis": "y" }, { "hovertemplate": "%{y}upper bound", "legendgroup": "LGB", "line": { "color": "rgb(0, 98, 98)", "width": 1 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 11362, 22724, 34087, 45449, 56812, 68174, 79536, 90899, 102261, 113624 ], "xaxis": "x", "y": [ 0.6045825795905373, 0.6080406642227133, 0.6157518343405423, 0.6220543598420997, 0.6255785617031652, 0.6265526705094366, 0.6282988416574681, 0.6274772135457349, 0.6275025845551129, 0.6292030586845276 ], "yaxis": "y" }, { "fill": "tonexty", "fillcolor": "rgba(0, 98, 98, 0.2)", "hovertemplate": "%{y}lower bound", "legendgroup": "LGB", "line": { "color": "rgb(0, 98, 98)", "width": 1 }, "mode": "lines", "showlegend": false, "type": "scatter", "x": [ 11362, 22724, 34087, 45449, 56812, 68174, 79536, 90899, 102261, 113624 ], "xaxis": "x", "y": [ 0.600363878017427, 0.6039270957785386, 0.6115148713417123, 0.6197340254006082, 0.6205710527541034, 0.6180208745748235, 0.6225260291844795, 0.6235612702090712, 0.6231646187316794, 0.6224778830911173 ], "yaxis": "y" } ], "layout": { "font": { "size": 12 }, "height": 600, "hoverlabel": { "font": { "size": 16 } }, "legend": { "bgcolor": "rgba(255, 255, 255, 0.5)", "font": { "size": 16 }, "groupclick": "togglegroup", "traceorder": "grouped", "x": 0.99, "xanchor": "right", "y": 0.01, "yanchor": "bottom" }, "margin": { "b": 50, "l": 50, "pad": 0, "r": 0, "t": 35 }, "showlegend": true, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "title": { "font": { "size": 24 }, "pad": { "b": 15, "t": 15 }, "x": 0.5, "xanchor": "center", "xref": "paper", "y": 1, "yanchor": "top" }, "width": 900, "xaxis": { "anchor": "y", "automargin": true, "autorange": true, "domain": [ 0, 1 ], "range": [ 4903.27371014096, 120082.72628985904 ], "title": { "font": { "size": 16 }, "text": "Number of training samples" }, "type": "linear" }, "yaxis": { "anchor": "x", "automargin": true, "autorange": true, "domain": [ 0, 1 ], "range": [ 0.5987617013136991, 0.6308052353882555 ], "title": { "font": { "size": 16 }, "text": "Score" }, "type": "linear" } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Plot the train sizing's results\n", "atom.plot_learning_curve()" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10.2" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": false, "title_cell": "Table of Contents", "title_sidebar": "Contents", "toc_cell": false, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 4 }