{ "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": [], "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 - WindDir9am | \n", "MinTemp | \n", "1.0 | \n", "
1 | \n", "MaxTemp | \n", "Temp3pm, MaxTemp + Temp3pm, MaxTemp + WindDir9am | \n", "0.9826, 0.9958, 1.0 | \n", "
2 | \n", "Temp3pm | \n", "MaxTemp, MaxTemp + Temp3pm, MaxTemp + WindDir9am | \n", "0.9826, 0.9955, 0.9824 | \n", "
3 | \n", "MaxTemp + Temp3pm | \n", "MaxTemp, Temp3pm, MaxTemp + WindDir9am | \n", "0.9958, 0.9955, 0.9957 | \n", "
4 | \n", "Evaporation - WindDir9am | \n", "Evaporation | \n", "0.9999 | \n", "
5 | \n", "Sunshine | \n", "Sunshine + WindGustDir, Sunshine - WindDir3pm | \n", "0.9999, 0.9999 | \n", "
6 | \n", "Sunshine - WindDir3pm | \n", "Sunshine, Sunshine + WindGustDir | \n", "0.9999, 0.9998 | \n", "
7 | \n", "WindGustDir | \n", "Location + WindGustDir | \n", "1.0 | \n", "
8 | \n", "WindGustSpeed | \n", "RainToday_infrequent + WindGustSpeed | \n", "1.0 | \n", "
9 | \n", "Location + WindSpeed9am | \n", "WindSpeed9am | \n", "1.0 | \n", "
10 | \n", "WindSpeed3pm | \n", "Location + WindSpeed3pm | \n", "1.0 | \n", "
11 | \n", "Humidity9am | \n", "Cloud3pm + Humidity9am, Humidity9am + Location | \n", "0.9941, 1.0 | \n", "
12 | \n", "Humidity9am + Location | \n", "Humidity9am, Cloud3pm + Humidity9am | \n", "1.0, 0.9941 | \n", "
13 | \n", "Humidity3pm | \n", "Evaporation + Humidity3pm | \n", "0.984 | \n", "
14 | \n", "Pressure9am | \n", "Pressure3pm + Pressure9am, Pressure9am + RainT... | \n", "0.9907, 0.9983, 1.0 | \n", "
15 | \n", "Pressure9am + RainToday_No | \n", "Pressure9am, Pressure3pm + Pressure9am, Pressu... | \n", "0.9983, 0.9868, 0.9983 | \n", "
16 | \n", "Pressure9am - WindDir9am | \n", "Pressure9am, Pressure3pm + Pressure9am, Pressu... | \n", "1.0, 0.9906, 0.9983 | \n", "
17 | \n", "Pressure3pm | \n", "Pressure3pm + Pressure9am, Pressure3pm + RainT... | \n", "0.9904, 0.9982, 1.0 | \n", "
18 | \n", "Pressure3pm + Pressure9am | \n", "Pressure9am, Pressure3pm, Pressure3pm + RainTo... | \n", "0.9907, 0.9904, 0.9912, 0.9903, 0.9868, 0.9906 | \n", "
19 | \n", "Pressure3pm + RainToday_No | \n", "Pressure3pm, Pressure3pm + Pressure9am, Pressu... | \n", "0.9982, 0.9912, 0.9981 | \n", "
20 | \n", "Cloud9am | \n", "Cloud9am + WindGustDir, Cloud9am - WindDir3pm | \n", "0.9999, 0.9999 | \n", "
21 | \n", "Cloud9am - WindDir3pm | \n", "Cloud9am, Cloud9am + WindGustDir | \n", "0.9999, 0.9996 | \n", "
22 | \n", "Cloud3pm | \n", "Cloud3pm + WindGustDir | \n", "0.9998 | \n", "
23 | \n", "Temp9am - WindGustDir | \n", "Temp9am | \n", "1.0 | \n", "
24 | \n", "RainToday_No | \n", "RainToday_No + WindDir9am, RainToday_No - Rain... | \n", "0.9938, 0.9932, 0.9956 | \n", "
25 | \n", "RainToday_No - RainToday_Yes | \n", "RainToday_No, Location - RainToday_Yes, RainTo... | \n", "0.9932, 0.993, 0.9869, 0.9889 | \n", "
26 | \n", "RainToday_No - WindDir3pm | \n", "RainToday_No, RainToday_No + WindDir9am, RainT... | \n", "0.9956, 0.9861, 0.9889 | \n", "
27 | \n", "RainToday_Yes - WindDir9am | \n", "RainToday_Yes | \n", "0.9936 | \n", "
28 | \n", "Location - RainToday_Yes | \n", "RainToday_No - RainToday_Yes | \n", "0.993 | \n", "
\n", " | name | \n", "description | \n", "fitness | \n", "
---|---|---|---|
0 | \n", "x23 | \n", "mul(Cloud3pm, mul(sub(sub(add(WindGustSpeed, H... | \n", "0.536434 | \n", "
1 | \n", "x24 | \n", "mul(mul(Cloud3pm, sub(sub(add(WindGustSpeed, H... | \n", "0.536434 | \n", "
2 | \n", "x25 | \n", "mul(Cloud3pm, mul(sub(sub(add(Humidity3pm, Win... | \n", "0.536434 | \n", "
3 | \n", "x26 | \n", "mul(mul(Cloud3pm, sub(sub(add(Humidity3pm, Win... | \n", "0.536434 | \n", "
4 | \n", "x27 | \n", "mul(mul(Cloud3pm, sub(sub(sub(add(WindGustSpee... | \n", "0.536161 | \n", "
5 | \n", "x28 | \n", "mul(Cloud3pm, mul(sub(sub(sub(add(WindGustSpee... | \n", "0.536161 | \n", "
6 | \n", "x29 | \n", "mul(Cloud3pm, mul(sub(sub(sub(add(Humidity3pm,... | \n", "0.536161 | \n", "
7 | \n", "x30 | \n", "mul(Cloud3pm, mul(sub(sub(sub(sub(add(WindGust... | \n", "0.535103 | \n", "
8 | \n", "x31 | \n", "mul(Cloud3pm, mul(sub(sub(sub(sub(add(Humidity... | \n", "0.535103 | \n", "
9 | \n", "x32 | \n", "mul(mul(Cloud3pm, sub(sub(sub(sub(add(WindGust... | \n", "0.535103 | \n", "
10 | \n", "x33 | \n", "mul(mul(Cloud3pm, sub(sub(sub(sub(add(Humidity... | \n", "0.535103 | \n", "
11 | \n", "x34 | \n", "mul(Cloud3pm, mul(sub(sub(add(WindGustSpeed, H... | \n", "0.534696 | \n", "
12 | \n", "x35 | \n", "mul(Cloud3pm, mul(sub(sub(add(WindGustSpeed, s... | \n", "0.532632 | \n", "
13 | \n", "x36 | \n", "mul(Cloud3pm, mul(sub(sub(add(WindGustSpeed, s... | \n", "0.532188 | \n", "
14 | \n", "x37 | \n", "mul(mul(Cloud3pm, sub(sub(add(WindGustSpeed, s... | \n", "0.532188 | \n", "