{ "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 | \n", "MinTemp + RainToday_rare | \n", "0.9999 | \n", "
1 | \n", "Location + MaxTemp | \n", "MaxTemp | \n", "1.0 | \n", "
2 | \n", "Location + Rainfall | \n", "Rainfall | \n", "1.0 | \n", "
3 | \n", "Sunshine | \n", "RainToday_rare + Sunshine, Sunshine + WindGustDir | \n", "0.9995, 0.9999 | \n", "
4 | \n", "Sunshine + WindGustDir | \n", "Sunshine, RainToday_rare + Sunshine | \n", "0.9999, 0.9993 | \n", "
5 | \n", "RainToday_No + WindGustSpeed | \n", "WindGustSpeed | \n", "0.9995 | \n", "
6 | \n", "WindSpeed9am | \n", "RainToday_rare + WindSpeed9am | \n", "1.0 | \n", "
7 | \n", "WindSpeed3pm | \n", "WindDir9am + WindSpeed3pm | \n", "1.0 | \n", "
8 | \n", "Humidity3pm | \n", "Cloud3pm + Humidity3pm, Humidity3pm + RainToda... | \n", "0.996, 1.0, 1.0 | \n", "
9 | \n", "Humidity3pm + RainToday_rare | \n", "Humidity3pm, Cloud3pm + Humidity3pm, Humidity3... | \n", "1.0, 0.996, 1.0 | \n", "
10 | \n", "Humidity3pm - WindDir9am | \n", "Humidity3pm, Cloud3pm + Humidity3pm, Humidity3... | \n", "1.0, 0.996, 1.0 | \n", "
11 | \n", "NATURAL_LOGARITHM(Pressure9am) | \n", "Pressure9am, Pressure9am - WindGustDir | \n", "1.0, 1.0 | \n", "
12 | \n", "Pressure9am - WindGustDir | \n", "Pressure9am, NATURAL_LOGARITHM(Pressure9am) | \n", "1.0, 1.0 | \n", "
13 | \n", "Pressure3pm - WindDir3pm | \n", "Pressure3pm | \n", "1.0 | \n", "
14 | \n", "Cloud9am - WindDir3pm | \n", "Cloud9am | \n", "0.9998 | \n", "
15 | \n", "RainToday_No - WindDir9am | \n", "RainToday_No | \n", "0.9906 | \n", "
16 | \n", "RainToday_Yes | \n", "Location + RainToday_Yes, RainToday_Yes + Wind... | \n", "1.0, 0.9946, 0.9941 | \n", "
17 | \n", "Location + RainToday_Yes | \n", "RainToday_Yes, RainToday_Yes + WindGustDir, Ra... | \n", "1.0, 0.9946, 0.9941 | \n", "
18 | \n", "RainToday_Yes - WindDir3pm | \n", "RainToday_Yes, Location + RainToday_Yes, RainT... | \n", "0.9941, 0.9941, 0.9824 | \n", "
19 | \n", "Humidity3pm - MinTemp | \n", "Humidity3pm - MaxTemp | \n", "0.9877 | \n", "
20 | \n", "RainToday_rare - WindSpeed3pm | \n", "RainToday_Yes - WindSpeed3pm | \n", "0.9988 | \n", "
\n", " | name | \n", "description | \n", "fitness | \n", "
---|---|---|---|
0 | \n", "x23 | \n", "log(mul(add(add(WindGustSpeed, sub(Humidity3pm... | \n", "0.510691 | \n", "
1 | \n", "x24 | \n", "log(mul(add(sub(add(WindGustSpeed, Humidity3pm... | \n", "0.510691 | \n", "
2 | \n", "x25 | \n", "log(log(mul(add(sub(add(WindGustSpeed, Humidit... | \n", "0.510057 | \n", "
3 | \n", "x26 | \n", "log(log(mul(add(add(WindGustSpeed, sub(Humidit... | \n", "0.510057 | \n", "
4 | \n", "x27 | \n", "log(mul(mul(add(add(WindGustSpeed, sub(Humidit... | \n", "0.509417 | \n", "
5 | \n", "x28 | \n", "log(mul(mul(add(sub(add(WindGustSpeed, Humidit... | \n", "0.509417 | \n", "
6 | \n", "x29 | \n", "log(log(log(mul(add(add(WindGustSpeed, sub(Hum... | \n", "0.509197 | \n", "
7 | \n", "x30 | \n", "log(log(mul(mul(add(sub(add(WindGustSpeed, Hum... | \n", "0.508659 | \n", "
8 | \n", "x31 | \n", "log(log(log(log(mul(add(add(WindGustSpeed, sub... | \n", "0.508341 | \n", "
9 | \n", "x32 | \n", "log(log(log(mul(mul(add(add(WindGustSpeed, sub... | \n", "0.507739 | \n", "
10 | \n", "x33 | \n", "log(mul(add(mul(add(add(WindGustSpeed, sub(Hum... | \n", "0.507421 | \n", "
11 | \n", "x34 | \n", "log(mul(add(mul(add(sub(add(WindGustSpeed, Hum... | \n", "0.507421 | \n", "
12 | \n", "x35 | \n", "log(log(log(mul(add(mul(add(add(WindGustSpeed,... | \n", "0.505743 | \n", "
13 | \n", "x36 | \n", "log(log(mul(add(add(WindGustSpeed, add(add(Win... | \n", "0.505716 | \n", "
14 | \n", "x37 | \n", "log(mul(add(add(WindGustSpeed, mul(add(add(Win... | \n", "0.505426 | \n", "
15 | \n", "x38 | \n", "log(mul(add(add(WindGustSpeed, mul(add(sub(add... | \n", "0.505426 | \n", "
16 | \n", "x39 | \n", "log(mul(add(sub(mul(add(add(WindGustSpeed, sub... | \n", "0.505410 | \n", "
17 | \n", "x40 | \n", "log(mul(add(add(WindGustSpeed, sub(add(add(Win... | \n", "0.504868 | \n", "
18 | \n", "x41 | \n", "log(mul(add(add(WindGustSpeed, sub(Humidity3pm... | \n", "0.504868 | \n", "
19 | \n", "x42 | \n", "log(mul(add(add(WindGustSpeed, sub(add(sub(add... | \n", "0.504868 | \n", "