Skip to content

Instantly share code, notes, and snippets.

@barangerbenjamin
Created August 24, 2021 10:16
Show Gist options
  • Save barangerbenjamin/b45ff24f22105692cea971850c564a11 to your computer and use it in GitHub Desktop.
Save barangerbenjamin/b45ff24f22105692cea971850c564a11 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "first_ml_model.ipynb",
"provenance": [],
"collapsed_sections": []
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"language_info": {
"name": "python"
}
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "Z6zFo4c3B5aE"
},
"source": [
"# Import pandas to manipulate dataset"
]
},
{
"cell_type": "code",
"metadata": {
"id": "jfgTPhdu7TwH"
},
"source": [
"import pandas as pd"
],
"execution_count": 1,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "WTEJ8SggB9_7"
},
"source": [
"# Load default data existing on Google Collab"
]
},
{
"cell_type": "code",
"metadata": {
"id": "1Xldpj7T7VFq"
},
"source": [
"df = pd.read_csv('sample_data/california_housing_train.csv')"
],
"execution_count": 4,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "pC83vaflCFtU"
},
"source": [
"# View sample of data"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 224
},
"id": "uQHZqoWP8q1a",
"outputId": "6c34a8d1-3e1b-4cee-8e67-7a34be78ff88"
},
"source": [
"df.head()"
],
"execution_count": 5,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-114.31</td>\n",
" <td>34.19</td>\n",
" <td>15.0</td>\n",
" <td>5612.0</td>\n",
" <td>1283.0</td>\n",
" <td>1015.0</td>\n",
" <td>472.0</td>\n",
" <td>1.4936</td>\n",
" <td>66900.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-114.47</td>\n",
" <td>34.40</td>\n",
" <td>19.0</td>\n",
" <td>7650.0</td>\n",
" <td>1901.0</td>\n",
" <td>1129.0</td>\n",
" <td>463.0</td>\n",
" <td>1.8200</td>\n",
" <td>80100.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-114.56</td>\n",
" <td>33.69</td>\n",
" <td>17.0</td>\n",
" <td>720.0</td>\n",
" <td>174.0</td>\n",
" <td>333.0</td>\n",
" <td>117.0</td>\n",
" <td>1.6509</td>\n",
" <td>85700.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-114.57</td>\n",
" <td>33.64</td>\n",
" <td>14.0</td>\n",
" <td>1501.0</td>\n",
" <td>337.0</td>\n",
" <td>515.0</td>\n",
" <td>226.0</td>\n",
" <td>3.1917</td>\n",
" <td>73400.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>-114.57</td>\n",
" <td>33.57</td>\n",
" <td>20.0</td>\n",
" <td>1454.0</td>\n",
" <td>326.0</td>\n",
" <td>624.0</td>\n",
" <td>262.0</td>\n",
" <td>1.9250</td>\n",
" <td>65500.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" longitude latitude ... median_income median_house_value\n",
"0 -114.31 34.19 ... 1.4936 66900.0\n",
"1 -114.47 34.40 ... 1.8200 80100.0\n",
"2 -114.56 33.69 ... 1.6509 85700.0\n",
"3 -114.57 33.64 ... 3.1917 73400.0\n",
"4 -114.57 33.57 ... 1.9250 65500.0\n",
"\n",
"[5 rows x 9 columns]"
]
},
"metadata": {},
"execution_count": 5
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "b2-yiqQDCKP6"
},
"source": [
"# Inspect quality data"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "CPtCbQUw8Kk0",
"outputId": "236c2c11-8436-4dcf-c348-b6d118e656d3"
},
"source": [
"df.info()"
],
"execution_count": 6,
"outputs": [
{
"output_type": "stream",
"text": [
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 17000 entries, 0 to 16999\n",
"Data columns (total 9 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 longitude 17000 non-null float64\n",
" 1 latitude 17000 non-null float64\n",
" 2 housing_median_age 17000 non-null float64\n",
" 3 total_rooms 17000 non-null float64\n",
" 4 total_bedrooms 17000 non-null float64\n",
" 5 population 17000 non-null float64\n",
" 6 households 17000 non-null float64\n",
" 7 median_income 17000 non-null float64\n",
" 8 median_house_value 17000 non-null float64\n",
"dtypes: float64(9)\n",
"memory usage: 1.2 MB\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 317
},
"id": "p4GPylAv8lAz",
"outputId": "2bb8e909-eac6-4732-edaa-b79751845ae8"
},
"source": [
"df.describe()"
],
"execution_count": 7,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" <th>median_house_value</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" <td>17000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>-119.562108</td>\n",
" <td>35.625225</td>\n",
" <td>28.589353</td>\n",
" <td>2643.664412</td>\n",
" <td>539.410824</td>\n",
" <td>1429.573941</td>\n",
" <td>501.221941</td>\n",
" <td>3.883578</td>\n",
" <td>207300.912353</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>2.005166</td>\n",
" <td>2.137340</td>\n",
" <td>12.586937</td>\n",
" <td>2179.947071</td>\n",
" <td>421.499452</td>\n",
" <td>1147.852959</td>\n",
" <td>384.520841</td>\n",
" <td>1.908157</td>\n",
" <td>115983.764387</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>-124.350000</td>\n",
" <td>32.540000</td>\n",
" <td>1.000000</td>\n",
" <td>2.000000</td>\n",
" <td>1.000000</td>\n",
" <td>3.000000</td>\n",
" <td>1.000000</td>\n",
" <td>0.499900</td>\n",
" <td>14999.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>-121.790000</td>\n",
" <td>33.930000</td>\n",
" <td>18.000000</td>\n",
" <td>1462.000000</td>\n",
" <td>297.000000</td>\n",
" <td>790.000000</td>\n",
" <td>282.000000</td>\n",
" <td>2.566375</td>\n",
" <td>119400.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>-118.490000</td>\n",
" <td>34.250000</td>\n",
" <td>29.000000</td>\n",
" <td>2127.000000</td>\n",
" <td>434.000000</td>\n",
" <td>1167.000000</td>\n",
" <td>409.000000</td>\n",
" <td>3.544600</td>\n",
" <td>180400.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>-118.000000</td>\n",
" <td>37.720000</td>\n",
" <td>37.000000</td>\n",
" <td>3151.250000</td>\n",
" <td>648.250000</td>\n",
" <td>1721.000000</td>\n",
" <td>605.250000</td>\n",
" <td>4.767000</td>\n",
" <td>265000.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>-114.310000</td>\n",
" <td>41.950000</td>\n",
" <td>52.000000</td>\n",
" <td>37937.000000</td>\n",
" <td>6445.000000</td>\n",
" <td>35682.000000</td>\n",
" <td>6082.000000</td>\n",
" <td>15.000100</td>\n",
" <td>500001.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" longitude latitude ... median_income median_house_value\n",
"count 17000.000000 17000.000000 ... 17000.000000 17000.000000\n",
"mean -119.562108 35.625225 ... 3.883578 207300.912353\n",
"std 2.005166 2.137340 ... 1.908157 115983.764387\n",
"min -124.350000 32.540000 ... 0.499900 14999.000000\n",
"25% -121.790000 33.930000 ... 2.566375 119400.000000\n",
"50% -118.490000 34.250000 ... 3.544600 180400.000000\n",
"75% -118.000000 37.720000 ... 4.767000 265000.000000\n",
"max -114.310000 41.950000 ... 15.000100 500001.000000\n",
"\n",
"[8 rows x 9 columns]"
]
},
"metadata": {},
"execution_count": 7
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YivyO71A-SA2"
},
"source": [
"# Is there obvious correlation between target & features"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 382
},
"id": "FwdV0-h48ota",
"outputId": "94e85dea-a2a1-4429-84d4-2fa85c8dc466"
},
"source": [
"import seaborn as sns\n",
"\n",
"sns.heatmap(df.corr())"
],
"execution_count": 8,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<matplotlib.axes._subplots.AxesSubplot at 0x7efc4ab47a90>"
]
},
"metadata": {},
"execution_count": 8
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 2 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "fbMbqX5BCWr1"
},
"source": [
"# Example of potential linear regression between feature & target"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 297
},
"id": "ayuyA5Zq8-Ej",
"outputId": "e4929002-f12d-410f-e06b-fde641d303ce"
},
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.scatter(df['total_rooms'], df['population'])\n",
"plt.ylabel('total_rooms')\n",
"plt.xlabel('median_house_price')"
],
"execution_count": 9,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Text(0.5, 0, 'median_house_price')"
]
},
"metadata": {},
"execution_count": 9
},
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "YZ4YWgF1CuqZ"
},
"source": [
"# Separate our features and target"
]
},
{
"cell_type": "code",
"metadata": {
"id": "GZ3gO8PY9rRu"
},
"source": [
"X = df.drop('median_house_value', axis=1)\n",
"y = df['median_house_value']"
],
"execution_count": 10,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "nYY-_yuSC3qb"
},
"source": [
"# Split dataset, 70% for training model, 30% to evaluate it"
]
},
{
"cell_type": "code",
"metadata": {
"id": "4Y_JPQBS-ufw"
},
"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)"
],
"execution_count": 11,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "sGxiCMOK-0PX",
"outputId": "ff487afd-3bec-4c05-9a9f-008f455b881b"
},
"source": [
"X_train.shape, y_train.shape"
],
"execution_count": 12,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"((11900, 8), (11900,))"
]
},
"metadata": {},
"execution_count": 12
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SwDM4tj5DDCk"
},
"source": [
"# Load LinearRegression class"
]
},
{
"cell_type": "code",
"metadata": {
"id": "jdSVU8T9_Asn"
},
"source": [
"from sklearn.linear_model import LinearRegression"
],
"execution_count": 13,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "59goDRfdDMRE"
},
"source": [
"## Instantiate it"
]
},
{
"cell_type": "code",
"metadata": {
"id": "gZ84dOPA_JtI"
},
"source": [
"lin_reg = LinearRegression()"
],
"execution_count": 14,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "VOoYxrZeDQ-_"
},
"source": [
"## Train our model with our train data"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "BT1VsDyW_MXt",
"outputId": "42556605-8f26-4d29-b1c8-a8bbcede2223"
},
"source": [
"lin_reg.fit(X_train, y_train)"
],
"execution_count": 15,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"LinearRegression(copy_X=True, fit_intercept=True, n_jobs=None, normalize=False)"
]
},
"metadata": {},
"execution_count": 15
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "nA8yxLTmDVZP"
},
"source": [
"## Evaluate model score"
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "9RY3Yw8a_R-Q",
"outputId": "4f34677f-9431-4622-c439-36380a46b425"
},
"source": [
"lin_reg.score(X_test, y_test)"
],
"execution_count": 16,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"0.6226125236333266"
]
},
"metadata": {},
"execution_count": 16
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "k4hGg1_pDZkW"
},
"source": [
"## How to make a prediction"
]
},
{
"cell_type": "code",
"metadata": {
"id": "EwWHe8R__Zwd"
},
"source": [
"new_block = [[-119.770000,\t36.740000,\t50.000000,\t1325.000000,\t280.000000,\t811.000000,\t281.000000,\t1.866700]]"
],
"execution_count": 17,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "5kfW94B_AUne"
},
"source": [
"new_block_df = pd.DataFrame(new_block, columns=list(X.keys()))"
],
"execution_count": 18,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 80
},
"id": "gcPoyMhPBNEk",
"outputId": "b6897155-43e3-436d-bd0c-8392455ae47d"
},
"source": [
"new_block_df"
],
"execution_count": 19,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>longitude</th>\n",
" <th>latitude</th>\n",
" <th>housing_median_age</th>\n",
" <th>total_rooms</th>\n",
" <th>total_bedrooms</th>\n",
" <th>population</th>\n",
" <th>households</th>\n",
" <th>median_income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>-119.77</td>\n",
" <td>36.74</td>\n",
" <td>50.0</td>\n",
" <td>1325.0</td>\n",
" <td>280.0</td>\n",
" <td>811.0</td>\n",
" <td>281.0</td>\n",
" <td>1.8667</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" longitude latitude ... households median_income\n",
"0 -119.77 36.74 ... 281.0 1.8667\n",
"\n",
"[1 rows x 8 columns]"
]
},
"metadata": {},
"execution_count": 19
}
]
},
{
"cell_type": "code",
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "aoomcdzb_1Wa",
"outputId": "bc2fc8c6-219c-487c-8619-13f5f5e99985"
},
"source": [
"lin_reg.predict(new_block)"
],
"execution_count": 20,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"array([106314.4523928])"
]
},
"metadata": {},
"execution_count": 20
}
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment