{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Example: Feature engineering\n", "------------------------------\n", "\n", "This example shows how to use automated feature generation to improve a model's performance.\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", " | Location | \n", "MinTemp | \n", "MaxTemp | \n", "Rainfall | \n", "Evaporation | \n", "Sunshine | \n", "WindGustDir | \n", "WindGustSpeed | \n", "WindDir9am | \n", "WindDir3pm | \n", "... | \n", "Humidity9am | \n", "Humidity3pm | \n", "Pressure9am | \n", "Pressure3pm | \n", "Cloud9am | \n", "Cloud3pm | \n", "Temp9am | \n", "Temp3pm | \n", "RainToday | \n", "RainTomorrow | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "MelbourneAirport | \n", "18.0 | \n", "26.9 | \n", "21.4 | \n", "7.0 | \n", "8.9 | \n", "SSE | \n", "41.0 | \n", "W | \n", "SSE | \n", "... | \n", "95.0 | \n", "54.0 | \n", "1019.5 | \n", "1017.0 | \n", "8.0 | \n", "5.0 | \n", "18.5 | \n", "26.0 | \n", "Yes | \n", "0 | \n", "
1 | \n", "Adelaide | \n", "17.2 | \n", "23.4 | \n", "0.0 | \n", "NaN | \n", "NaN | \n", "S | \n", "41.0 | \n", "S | \n", "WSW | \n", "... | \n", "59.0 | \n", "36.0 | \n", "1015.7 | \n", "1015.7 | \n", "NaN | \n", "NaN | \n", "17.7 | \n", "21.9 | \n", "No | \n", "0 | \n", "
2 | \n", "Cairns | \n", "18.6 | \n", "24.6 | \n", "7.4 | \n", "3.0 | \n", "6.1 | \n", "SSE | \n", "54.0 | \n", "SSE | \n", "SE | \n", "... | \n", "78.0 | \n", "57.0 | \n", "1018.7 | \n", "1016.6 | \n", "3.0 | \n", "3.0 | \n", "20.8 | \n", "24.1 | \n", "Yes | \n", "0 | \n", "
3 | \n", "Portland | \n", "13.6 | \n", "16.8 | \n", "4.2 | \n", "1.2 | \n", "0.0 | \n", "ESE | \n", "39.0 | \n", "ESE | \n", "ESE | \n", "... | \n", "76.0 | \n", "74.0 | \n", "1021.4 | \n", "1020.5 | \n", "7.0 | \n", "8.0 | \n", "15.6 | \n", "16.0 | \n", "Yes | \n", "1 | \n", "
4 | \n", "Walpole | \n", "16.4 | \n", "19.9 | \n", "0.0 | \n", "NaN | \n", "NaN | \n", "SE | \n", "44.0 | \n", "SE | \n", "SE | \n", "... | \n", "78.0 | \n", "70.0 | \n", "1019.4 | \n", "1018.9 | \n", "NaN | \n", "NaN | \n", "17.4 | \n", "18.1 | \n", "No | \n", "0 | \n", "
5 rows × 22 columns
\n", "\n", " | drop | \n", "corr_feature | \n", "corr_value | \n", "
---|---|---|---|
0 | \n", "MinTemp | \n", "MinTemp - RainToday_No, MinTemp - WindDir9am | \n", "0.9979, 1.0 | \n", "
1 | \n", "MinTemp - WindDir9am | \n", "MinTemp, MinTemp - RainToday_No | \n", "1.0, 0.9978 | \n", "
2 | \n", "MaxTemp | \n", "MaxTemp + Temp3pm, MaxTemp + WindDir3pm | \n", "0.9926, 1.0 | \n", "
3 | \n", "MaxTemp + Temp3pm | \n", "MaxTemp, Temp3pm, MaxTemp + WindDir3pm | \n", "0.9926, 0.9921, 0.9926 | \n", "
4 | \n", "Sunshine | \n", "Sunshine + WindDir9am, Sunshine - WindDir9am | \n", "0.9998, 0.9998 | \n", "
5 | \n", "Sunshine - WindDir9am | \n", "Sunshine, Sunshine + WindDir9am | \n", "0.9998, 0.9994 | \n", "
6 | \n", "Location + WindGustSpeed | \n", "WindGustSpeed, RainToday_No + WindGustSpeed | \n", "1.0, 0.9995 | \n", "
7 | \n", "RainToday_No + WindGustSpeed | \n", "WindGustSpeed, Location + WindGustSpeed | \n", "0.9995, 0.9995 | \n", "
8 | \n", "WindSpeed9am | \n", "WindDir9am + WindSpeed9am | \n", "1.0 | \n", "
9 | \n", "WindSpeed3pm | \n", "RainToday_Yes + WindSpeed3pm, WindDir9am + Win... | \n", "0.9989, 1.0 | \n", "
10 | \n", "WindDir9am + WindSpeed3pm | \n", "WindSpeed3pm, RainToday_Yes + WindSpeed3pm | \n", "1.0, 0.9989 | \n", "
11 | \n", "Humidity9am | \n", "Humidity9am - Sunshine | \n", "0.9919 | \n", "
12 | \n", "Humidity3pm | \n", "Humidity3pm + WindGustDir, Humidity3pm - RainT... | \n", "1.0, 0.9998 | \n", "
13 | \n", "Humidity3pm - RainToday_Yes | \n", "Humidity3pm, Humidity3pm + WindGustDir | \n", "0.9998, 0.9998 | \n", "
14 | \n", "Pressure9am | \n", "Pressure9am + RainToday_Yes, Pressure9am + Rai... | \n", "0.9982, 0.9999, 1.0, 1.0 | \n", "
15 | \n", "Pressure9am + RainToday_rare | \n", "Pressure9am, Pressure9am + RainToday_Yes, Pres... | \n", "0.9999, 0.9981, 0.9999, 0.9999 | \n", "
16 | \n", "Pressure9am + WindDir3pm | \n", "Pressure9am, Pressure9am + RainToday_Yes, Pres... | \n", "1.0, 0.9982, 0.9999, 0.9999 | \n", "
17 | \n", "Pressure9am - WindGustDir | \n", "Pressure9am, Pressure9am + RainToday_Yes, Pres... | \n", "1.0, 0.9982, 0.9999, 0.9999 | \n", "
18 | \n", "Cloud9am | \n", "Cloud9am + WindDir9am, Cloud9am - WindDir3pm, ... | \n", "0.9998, 0.9998, 0.9998 | \n", "
19 | \n", "Cloud9am - WindDir3pm | \n", "Cloud9am, Cloud9am + WindDir9am, Cloud9am - Wi... | \n", "0.9998, 0.9995, 0.9997 | \n", "
20 | \n", "Cloud9am - WindDir9am | \n", "Cloud9am, Cloud9am + WindDir9am, Cloud9am - Wi... | \n", "0.9998, 0.9991, 0.9997 | \n", "
21 | \n", "Cloud3pm | \n", "Cloud3pm + RainToday_Yes | \n", "0.9837 | \n", "
22 | \n", "Temp9am | \n", "Temp9am + WindDir9am | \n", "1.0 | \n", "
23 | \n", "Temp3pm | \n", "MaxTemp + Temp3pm | \n", "0.9921 | \n", "
24 | \n", "RainToday_No - WindDir9am | \n", "RainToday_No | \n", "0.9932 | \n", "
25 | \n", "RainToday_Yes - WindGustDir | \n", "RainToday_Yes | \n", "0.9946 | \n", "
26 | \n", "RainToday_rare | \n", "Location + RainToday_rare | \n", "1.0 | \n", "
27 | \n", "Evaporation - Humidity3pm | \n", "Cloud3pm - Humidity3pm | \n", "0.9848 | \n", "
28 | \n", "Location - Sunshine | \n", "RainToday_rare - Sunshine | \n", "0.9993 | \n", "
\n", " | name | \n", "description | \n", "fitness | \n", "
---|---|---|---|
0 | \n", "x23 | \n", "sub(Pressure3pm, sub(sub(add(WindGustSpeed, su... | \n", "0.530064 | \n", "
1 | \n", "x24 | \n", "sub(Pressure3pm, sub(sub(add(WindGustSpeed, su... | \n", "0.530064 | \n", "
2 | \n", "x25 | \n", "sub(sub(sub(add(WindGustSpeed, sub(add(Humidit... | \n", "0.530064 | \n", "
3 | \n", "x26 | \n", "sub(Pressure3pm, sub(sub(sub(add(WindGustSpeed... | \n", "0.530064 | \n", "
4 | \n", "x27 | \n", "sub(Pressure3pm, sub(add(WindGustSpeed, sub(su... | \n", "0.530064 | \n", "
5 | \n", "x28 | \n", "sub(Pressure3pm, sub(sub(add(sub(add(Humidity3... | \n", "0.530064 | \n", "
6 | \n", "x29 | \n", "sub(Pressure3pm, sub(sub(add(sub(add(Humidity3... | \n", "0.530064 | \n", "
7 | \n", "x30 | \n", "sub(sub(add(WindGustSpeed, sub(sub(add(Humidit... | \n", "0.530064 | \n", "
8 | \n", "x31 | \n", "sub(Pressure3pm, sub(sub(sub(add(WindGustSpeed... | \n", "0.530064 | \n", "
9 | \n", "x32 | \n", "sub(Pressure3pm, sub(sub(sub(add(WindGustSpeed... | \n", "0.529064 | \n", "
10 | \n", "x33 | \n", "sub(Pressure3pm, sub(sub(sub(add(WindGustSpeed... | \n", "0.528712 | \n", "
11 | \n", "x34 | \n", "sub(Pressure3pm, sub(sub(sub(add(WindGustSpeed... | \n", "0.528712 | \n", "
12 | \n", "x35 | \n", "sub(Pressure3pm, sub(sub(add(WindGustSpeed, su... | \n", "0.528712 | \n", "
13 | \n", "x36 | \n", "sub(Pressure3pm, sub(sub(add(WindGustSpeed, su... | \n", "0.528712 | \n", "
14 | \n", "x37 | \n", "sub(sub(sub(add(WindGustSpeed, sub(sub(add(Hum... | \n", "0.528712 | \n", "
15 | \n", "x38 | \n", "sub(Pressure3pm, sub(add(WindGustSpeed, sub(su... | \n", "0.528712 | \n", "
16 | \n", "x39 | \n", "sub(sub(sub(sub(add(WindGustSpeed, sub(add(Hum... | \n", "0.528712 | \n", "
17 | \n", "x40 | \n", "sub(Pressure3pm, sub(sub(sub(sub(add(WindGustS... | \n", "0.528712 | \n", "
18 | \n", "x41 | \n", "sub(Pressure3pm, sub(sub(sub(sub(add(WindGustS... | \n", "0.528712 | \n", "
19 | \n", "x42 | \n", "sub(Pressure3pm, sub(sub(sub(add(WindGustSpeed... | \n", "0.528712 | \n", "