Skip to content

Instantly share code, notes, and snippets.

@analyticsindiamagazine
Last active July 13, 2021 04:23
Show Gist options
  • Star 3 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save analyticsindiamagazine/d15be32d50d65c967412cb69b2dc601b to your computer and use it in GitHub Desktop.
Save analyticsindiamagazine/d15be32d50d65c967412cb69b2dc601b to your computer and use it in GitHub Desktop.
A HANDS-ON GUIDE TO REGRESSION WITH FAST.AI
Display the source blob
Display the rendered blob
Raw
{
"nbformat": 4,
"nbformat_minor": 0,
"metadata": {
"colab": {
"name": "Regression_Using_Fastai.ipynb",
"provenance": [],
"collapsed_sections": [
"Mv5lcQQ9egIE",
"ZTmAW33KefrK"
]
},
"kernelspec": {
"name": "python3",
"display_name": "Python 3"
},
"accelerator": "GPU"
},
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "ABvnJMmltKyV",
"colab_type": "text"
},
"source": [
"#Regression With Fastai\n",
"\n",
"---\n",
"\n",
"**Getting Started With Regression**\n",
"\n",
"Regression With Fast.ai in 7 simple steps:\n",
"\n",
"* Importing the libraries\n",
"* Creating a TabularList\n",
"* Initialising Neural Network\n",
"* Training the model\n",
"* Evaluating the model\n",
"* A simple analysis on the predictions of the validation set\n",
"* Predicting using the network\n",
"\n",
"\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "Mv5lcQQ9egIE"
},
"source": [
"##Importing All Major Libraries"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "NIlD79e-egIB",
"colab": {}
},
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"from fastai.tabular import *"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "gtXEtYoIegH_"
},
"source": [
"**The fastai.tabular package includes all the modules that are necessary for processing tabular data.**"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "ZTmAW33KefrK"
},
"source": [
"## Importing The Data"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "YlPjV7wHefrG",
"colab": {}
},
"source": [
"#Reading the datasets from excel sheet\n",
"training_set = pd.read_excel(\"Data_Train.xlsx\")\n",
"test_set = pd.read_excel(\"Data_Test.xlsx\")\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "Vxa9jxUhefJr"
},
"source": [
"## Understanding The Data"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "d08a1373-bdbe-4b63-d7b1-05f207b68dcc",
"id": "yZkjxvbXefJm",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"training_set.head(5)"
],
"execution_count": 0,
"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>Name</th>\n",
" <th>Location</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" <th>Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Maruti Wagon R LXI CNG</td>\n",
" <td>Mumbai</td>\n",
" <td>2010</td>\n",
" <td>72000</td>\n",
" <td>CNG</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>26.6 km/kg</td>\n",
" <td>998 CC</td>\n",
" <td>58.16 bhp</td>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>1.75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Hyundai Creta 1.6 CRDi SX Option</td>\n",
" <td>Pune</td>\n",
" <td>2015</td>\n",
" <td>41000</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>19.67 kmpl</td>\n",
" <td>1582 CC</td>\n",
" <td>126.2 bhp</td>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>12.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Honda Jazz V</td>\n",
" <td>Chennai</td>\n",
" <td>2011</td>\n",
" <td>46000</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>18.2 kmpl</td>\n",
" <td>1199 CC</td>\n",
" <td>88.7 bhp</td>\n",
" <td>5.0</td>\n",
" <td>8.61 Lakh</td>\n",
" <td>4.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Maruti Ertiga VDI</td>\n",
" <td>Chennai</td>\n",
" <td>2012</td>\n",
" <td>87000</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>20.77 kmpl</td>\n",
" <td>1248 CC</td>\n",
" <td>88.76 bhp</td>\n",
" <td>7.0</td>\n",
" <td>NaN</td>\n",
" <td>6.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Audi A4 New 2.0 TDI Multitronic</td>\n",
" <td>Coimbatore</td>\n",
" <td>2013</td>\n",
" <td>40670</td>\n",
" <td>Diesel</td>\n",
" <td>Automatic</td>\n",
" <td>Second</td>\n",
" <td>15.2 kmpl</td>\n",
" <td>1968 CC</td>\n",
" <td>140.8 bhp</td>\n",
" <td>5.0</td>\n",
" <td>NaN</td>\n",
" <td>17.74</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Name Location Year ... Seats New_Price Price\n",
"0 Maruti Wagon R LXI CNG Mumbai 2010 ... 5.0 NaN 1.75\n",
"1 Hyundai Creta 1.6 CRDi SX Option Pune 2015 ... 5.0 NaN 12.50\n",
"2 Honda Jazz V Chennai 2011 ... 5.0 8.61 Lakh 4.50\n",
"3 Maruti Ertiga VDI Chennai 2012 ... 7.0 NaN 6.00\n",
"4 Audi A4 New 2.0 TDI Multitronic Coimbatore 2013 ... 5.0 NaN 17.74\n",
"\n",
"[5 rows x 13 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 4
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "c812c285-1148-4d4f-a3e5-8de5f9fbca50",
"id": "jyevDx0mefJa",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"\n",
"# Checking the number of rows\n",
"print(\"\\n\\nNumber of observations in the datasets :\\n\",'#' * 40)\n",
"\n",
"print(\"\\nTraining Set : \",len(training_set))\n",
"print(\"Test Set : \",len(test_set))\n",
"\n",
"# checking the number of features in the Datasets\n",
"print(\"\\n\\nNumber of features in the datasets :\\n\",'#' * 40)\n",
"\n",
"print(\"\\nTraining Set : \",len(training_set.columns))\n",
"print(\"Test Set : \",len(test_set.columns))\n",
"\n",
"# checking the features in the Datasets\n",
"print(\"\\n\\nFeatures in the datasets :\\n\",'#' * 40)\n",
"\n",
"print(\"\\nTraining Set : \", list(training_set.columns))\n",
"print(\"Test Set : \",list(test_set.columns))\n",
"\n",
"# Checking the data types of features\n",
"print(\"\\n\\nDatatypes of features in the datasets :\\n\",'#' * 40)\n",
"\n",
"print(\"\\nTraining Set : \", training_set.dtypes)\n",
"print(\"\\nTest Set : \",test_set.dtypes)\n",
"\n",
"# checking for NaNs or empty cells\n",
"print(\"\\n\\nEmpty cells or Nans in the datasets :\\n\",'#' * 40)\n",
"\n",
"print(\"\\nTraining Set : \",training_set.isnull().values.any())\n",
"print(\"\\nTest Set : \",test_set.isnull().values.any())\n",
"\n",
"# checking for NaNs or empty cells by column\n",
"print(\"\\n\\nNumber of empty cells or Nans in the datasets :\\n\",'#' * 40)\n",
"\n",
"print(\"\\nTraining Set : \",\"\\n\", training_set.isnull().sum())\n",
"print(\"\\nTest Set : \",test_set.isnull().sum())\n",
"\n",
"#Displaying dataset information\n",
"print(\"\\n\\nInfo:\\n\",'#' * 40)\n",
"\n",
"training_set.info()\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
"\n",
"Number of observations in the datasets :\n",
" ########################################\n",
"\n",
"Training Set : 6019\n",
"Test Set : 1234\n",
"\n",
"\n",
"Number of features in the datasets :\n",
" ########################################\n",
"\n",
"Training Set : 13\n",
"Test Set : 12\n",
"\n",
"\n",
"Features in the datasets :\n",
" ########################################\n",
"\n",
"Training Set : ['Name', 'Location', 'Year', 'Kilometers_Driven', 'Fuel_Type', 'Transmission', 'Owner_Type', 'Mileage', 'Engine', 'Power', 'Seats', 'New_Price', 'Price']\n",
"Test Set : ['Name', 'Location', 'Year', 'Kilometers_Driven', 'Fuel_Type', 'Transmission', 'Owner_Type', 'Mileage', 'Engine', 'Power', 'Seats', 'New_Price']\n",
"\n",
"\n",
"Datatypes of features in the datasets :\n",
" ########################################\n",
"\n",
"Training Set : Name object\n",
"Location object\n",
"Year int64\n",
"Kilometers_Driven int64\n",
"Fuel_Type object\n",
"Transmission object\n",
"Owner_Type object\n",
"Mileage object\n",
"Engine object\n",
"Power object\n",
"Seats float64\n",
"New_Price object\n",
"Price float64\n",
"dtype: object\n",
"\n",
"Test Set : Name object\n",
"Location object\n",
"Year int64\n",
"Kilometers_Driven int64\n",
"Fuel_Type object\n",
"Transmission object\n",
"Owner_Type object\n",
"Mileage object\n",
"Engine object\n",
"Power object\n",
"Seats float64\n",
"New_Price object\n",
"dtype: object\n",
"\n",
"\n",
"Empty cells or Nans in the datasets :\n",
" ########################################\n",
"\n",
"Training Set : True\n",
"\n",
"Test Set : True\n",
"\n",
"\n",
"Number of empty cells or Nans in the datasets :\n",
" ########################################\n",
"\n",
"Training Set : \n",
" Name 0\n",
"Location 0\n",
"Year 0\n",
"Kilometers_Driven 0\n",
"Fuel_Type 0\n",
"Transmission 0\n",
"Owner_Type 0\n",
"Mileage 2\n",
"Engine 36\n",
"Power 36\n",
"Seats 42\n",
"New_Price 5195\n",
"Price 0\n",
"dtype: int64\n",
"\n",
"Test Set : Name 0\n",
"Location 0\n",
"Year 0\n",
"Kilometers_Driven 0\n",
"Fuel_Type 0\n",
"Transmission 0\n",
"Owner_Type 0\n",
"Mileage 0\n",
"Engine 10\n",
"Power 10\n",
"Seats 11\n",
"New_Price 1052\n",
"dtype: int64\n",
"\n",
"\n",
"Info:\n",
" ########################################\n",
"<class 'pandas.core.frame.DataFrame'>\n",
"RangeIndex: 6019 entries, 0 to 6018\n",
"Data columns (total 13 columns):\n",
"Name 6019 non-null object\n",
"Location 6019 non-null object\n",
"Year 6019 non-null int64\n",
"Kilometers_Driven 6019 non-null int64\n",
"Fuel_Type 6019 non-null object\n",
"Transmission 6019 non-null object\n",
"Owner_Type 6019 non-null object\n",
"Mileage 6017 non-null object\n",
"Engine 5983 non-null object\n",
"Power 5983 non-null object\n",
"Seats 5977 non-null float64\n",
"New_Price 824 non-null object\n",
"Price 6019 non-null float64\n",
"dtypes: float64(2), int64(2), object(9)\n",
"memory usage: 611.4+ KB\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "hpL0zhrwefJY"
},
"source": [
"### Exploring Categorical features\n"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "9bd796e2-e67c-4a7f-aa22-4c88eaa38a47",
"id": "nurG2A5HefJV",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"# Non categorical Features in The dataset\n",
"training_set.select_dtypes(['int','float']).columns"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['Year', 'Kilometers_Driven', 'Seats', 'Price'], dtype='object')"
]
},
"metadata": {
"tags": []
},
"execution_count": 6
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "a53f69fb-d866-414a-8c8f-482c99615c6b",
"id": "smURtTVmefJQ",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 68
}
},
"source": [
"#Categotical Features in The Dataset\n",
"training_set.select_dtypes('object').columns\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Index(['Name', 'Location', 'Fuel_Type', 'Transmission', 'Owner_Type',\n",
" 'Mileage', 'Engine', 'Power', 'New_Price'],\n",
" dtype='object')"
]
},
"metadata": {
"tags": []
},
"execution_count": 7
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "ab2cffa4-bcd6-4dbf-8fc5-3571f23e4873",
"id": "a7Rz9UZBefJK",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 476
}
},
"source": [
"#The Unique values in each of the categorical features \n",
"\n",
"all_brands = list(training_set.Name) + list(test_set.Name)\n",
"\n",
"all_locations = list(training_set.Location) + list(test_set.Location)\n",
"\n",
"all_fuel_types = list(training_set.Fuel_Type) + list(test_set.Fuel_Type)\n",
"\n",
"all_transmissions = list(training_set.Transmission) + list(test_set.Transmission)\n",
"\n",
"all_owner_types = list(training_set.Owner_Type) + list(test_set.Owner_Type)\n",
"\n",
"\n",
"\n",
"print(\"\\nNumber Of Unique Values In Name : \\n \", len(set(all_brands)))\n",
"#print(\"\\nThe Unique Values In Name : \\n \", set(all_brands))\n",
"\n",
"print(\"\\nNumber Of Unique Values In Location : \\n \", len(set(all_locations)))\n",
"print(\"\\nThe Unique Values In Location : \\n \", set(all_locations) )\n",
"\n",
"print(\"\\nNumber Of Unique Values In Fuel_Type : \\n \", len(set(all_fuel_types)))\n",
"print(\"\\nThe Unique Values In Fuel_Type : \\n \", set(all_fuel_types) )\n",
"\n",
"print(\"\\nNumber Of Unique Values In Transmission : \\n \", len(set(all_transmissions)))\n",
"print(\"\\nThe Unique Values In Transmission : \\n \", set(all_transmissions) )\n",
"\n",
"print(\"\\nNumber Of Unique Values In Owner_Type : \\n \", len(set(all_owner_types)))\n",
"print(\"\\nThe Unique Values In Owner_Type : \\n \", set(all_owner_types) )"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
"Number Of Unique Values In Name : \n",
" 2041\n",
"\n",
"Number Of Unique Values In Location : \n",
" 11\n",
"\n",
"The Unique Values In Location : \n",
" {'Hyderabad', 'Kolkata', 'Coimbatore', 'Delhi', 'Bangalore', 'Pune', 'Mumbai', 'Chennai', 'Jaipur', 'Kochi', 'Ahmedabad'}\n",
"\n",
"Number Of Unique Values In Fuel_Type : \n",
" 5\n",
"\n",
"The Unique Values In Fuel_Type : \n",
" {'Electric', 'CNG', 'LPG', 'Petrol', 'Diesel'}\n",
"\n",
"Number Of Unique Values In Transmission : \n",
" 2\n",
"\n",
"The Unique Values In Transmission : \n",
" {'Automatic', 'Manual'}\n",
"\n",
"Number Of Unique Values In Owner_Type : \n",
" 4\n",
"\n",
"The Unique Values In Owner_Type : \n",
" {'First', 'Fourth & Above', 'Second', 'Third'}\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "KzTZDzoRedSA"
},
"source": [
"## Feature Generation And Dataset Restructuring"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "ajipRklVedR9",
"colab": {}
},
"source": [
"#Based on the information gathered from the data, lets simplify and restructure it.\n",
"\n",
"def restructure(data):\n",
" \n",
" names = list(data.Name)\n",
" \n",
" brand = []\n",
" model = []\n",
" \n",
" #Splitting The Column 'Name'\n",
" for i in range(len(names)):\n",
" try:\n",
" brand.append(names[i].split(\" \")[0])\n",
" try:\n",
" model.append(\" \".join(names[i].split(\" \")[1:]).strip())\n",
" except:\n",
" pass\n",
" except:\n",
" print(\"ERR ! - \", names[i], \"@\" , i)\n",
" \n",
" \n",
" #Cleaning Mileage Column\n",
" mileage = list(data.Mileage)\n",
" \n",
" for i in range(len(mileage)):\n",
" try :\n",
" mileage[i] = float(mileage[i].split(\" \")[0].strip())\n",
" except:\n",
" mileage[i] = np.nan\n",
" \n",
" #Cleaning Engine Column \n",
" engine = list(data.Engine)\n",
" for i in range(len(engine)):\n",
" try :\n",
" engine[i] = int(engine[i].split(\" \")[0].strip())\n",
" except:\n",
" engine[i] = np.nan\n",
" \n",
" #Cleaning Power Columns\n",
" power = list(data.Power)\n",
" for i in range(len(power)):\n",
" try :\n",
" power[i] = float(power[i].split(\" \")[0].strip())\n",
" except:\n",
" power[i] = np.nan\n",
" \n",
" #Cleaning New_Price\n",
" data['New_Price'].fillna(0, inplace = True)\n",
" \n",
" newp = list(data['New_Price'])\n",
" \n",
" for i in range(len(newp)):\n",
" if newp[i] == 0:\n",
" newp[i] = float(newp[i])\n",
" continue\n",
" elif 'Cr' in newp[i]:\n",
" newp[i] = float(newp[i].split()[0].strip()) * 100 \n",
" elif 'Lakh' in newp[i]:\n",
" newp[i] = float(newp[i].split()[0].strip())\n",
" \n",
" \n",
" #Re-ordering the columns\n",
"\n",
" restructured = pd.DataFrame({'Brand': brand,\n",
" 'Model':model,\n",
" 'Location': data['Location'], \n",
" 'Year':data['Year'] , \n",
" 'Kilometers_Driven':data['Kilometers_Driven'],\n",
" 'Fuel_Type':data['Fuel_Type'],\n",
" 'Transmission':data['Transmission'],\n",
" 'Owner_Type':data['Owner_Type'],\n",
" 'Mileage':mileage,\n",
" 'Engine':engine,\n",
" 'Power':power,\n",
" 'Seats':data['Seats'],\n",
" 'New_Price':newp\n",
" })\n",
"\n",
" #If the dataset passed is training set include the Price column\n",
" if 'Price' in data.columns:\n",
" restructured['Price'] = data['Price']\n",
" return restructured\n",
" \n",
" \n",
" else:\n",
" return restructured\n",
" "
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "2nEwUvr7edR8"
},
"source": [
"**Summary:**\n",
"\n",
"The data is is restructured in the following ways:\n",
"1. The Name column in the original dataset is split in to two features, Brand and Model.\n",
"1. The Mileage column is cleaned to have float values.\n",
"1. The Engine column is cleaned to have integer values.\n",
"2. The Power column is cleaned to have integer values.\n",
"2. The New_Price column is cleaned to remove nulls and correct the units.\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Zow6LouDedR2",
"colab": {}
},
"source": [
"#Restructuring Training and Test sets\n",
"train_data = restructure(training_set)\n",
"test_data = restructure(test_set)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "25e9c2a4-5375-4089-b582-583fd8366905",
"id": "wi7gg6ljedRt",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"#the dimensions of the training set\n",
"train_data.shape"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(6019, 14)"
]
},
"metadata": {
"tags": []
},
"execution_count": 11
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "721cc3f0-40a0-4950-a2cf-a2bff0479e23",
"id": "6d4vq7CbedRm",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"#the dimensions of the test set\n",
"test_data.shape"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"(1234, 13)"
]
},
"metadata": {
"tags": []
},
"execution_count": 12
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "ee486914-1185-4d2d-cefb-bf70d71f90f1",
"id": "MTj9MSHDedRd",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"#Top 5 rows of the training set\n",
"train_data.head(5)"
],
"execution_count": 0,
"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>Brand</th>\n",
" <th>Model</th>\n",
" <th>Location</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" <th>Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Maruti</td>\n",
" <td>Wagon R LXI CNG</td>\n",
" <td>Mumbai</td>\n",
" <td>2010</td>\n",
" <td>72000</td>\n",
" <td>CNG</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>26.60</td>\n",
" <td>998.0</td>\n",
" <td>58.16</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>1.75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Hyundai</td>\n",
" <td>Creta 1.6 CRDi SX Option</td>\n",
" <td>Pune</td>\n",
" <td>2015</td>\n",
" <td>41000</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>19.67</td>\n",
" <td>1582.0</td>\n",
" <td>126.20</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>12.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Honda</td>\n",
" <td>Jazz V</td>\n",
" <td>Chennai</td>\n",
" <td>2011</td>\n",
" <td>46000</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>18.20</td>\n",
" <td>1199.0</td>\n",
" <td>88.70</td>\n",
" <td>5.0</td>\n",
" <td>8.61</td>\n",
" <td>4.50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Maruti</td>\n",
" <td>Ertiga VDI</td>\n",
" <td>Chennai</td>\n",
" <td>2012</td>\n",
" <td>87000</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>20.77</td>\n",
" <td>1248.0</td>\n",
" <td>88.76</td>\n",
" <td>7.0</td>\n",
" <td>0.00</td>\n",
" <td>6.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Audi</td>\n",
" <td>A4 New 2.0 TDI Multitronic</td>\n",
" <td>Coimbatore</td>\n",
" <td>2013</td>\n",
" <td>40670</td>\n",
" <td>Diesel</td>\n",
" <td>Automatic</td>\n",
" <td>Second</td>\n",
" <td>15.20</td>\n",
" <td>1968.0</td>\n",
" <td>140.80</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>17.74</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Brand Model Location ... Seats New_Price Price\n",
"0 Maruti Wagon R LXI CNG Mumbai ... 5.0 0.00 1.75\n",
"1 Hyundai Creta 1.6 CRDi SX Option Pune ... 5.0 0.00 12.50\n",
"2 Honda Jazz V Chennai ... 5.0 8.61 4.50\n",
"3 Maruti Ertiga VDI Chennai ... 7.0 0.00 6.00\n",
"4 Audi A4 New 2.0 TDI Multitronic Coimbatore ... 5.0 0.00 17.74\n",
"\n",
"[5 rows x 14 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 13
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"outputId": "1f09b118-e32a-4465-8914-5523a492f2dc",
"id": "0AeGSHZWedRR",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"#Top 5 rows of the test set\n",
"test_data.head()"
],
"execution_count": 0,
"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>Brand</th>\n",
" <th>Model</th>\n",
" <th>Location</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>Maruti</td>\n",
" <td>Alto K10 LXI CNG</td>\n",
" <td>Delhi</td>\n",
" <td>2014</td>\n",
" <td>40929</td>\n",
" <td>CNG</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>32.26</td>\n",
" <td>998.0</td>\n",
" <td>58.20</td>\n",
" <td>4.0</td>\n",
" <td>0.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>Maruti</td>\n",
" <td>Alto 800 2016-2019 LXI</td>\n",
" <td>Coimbatore</td>\n",
" <td>2013</td>\n",
" <td>54493</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>Second</td>\n",
" <td>24.70</td>\n",
" <td>796.0</td>\n",
" <td>47.30</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>Toyota</td>\n",
" <td>Innova Crysta Touring Sport 2.4 MT</td>\n",
" <td>Mumbai</td>\n",
" <td>2017</td>\n",
" <td>34000</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>13.68</td>\n",
" <td>2393.0</td>\n",
" <td>147.80</td>\n",
" <td>7.0</td>\n",
" <td>25.27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>Toyota</td>\n",
" <td>Etios Liva GD</td>\n",
" <td>Hyderabad</td>\n",
" <td>2012</td>\n",
" <td>139000</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>23.59</td>\n",
" <td>1364.0</td>\n",
" <td>NaN</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>Hyundai</td>\n",
" <td>i20 Magna</td>\n",
" <td>Mumbai</td>\n",
" <td>2014</td>\n",
" <td>29000</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>18.50</td>\n",
" <td>1197.0</td>\n",
" <td>82.85</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Brand Model ... Seats New_Price\n",
"0 Maruti Alto K10 LXI CNG ... 4.0 0.00\n",
"1 Maruti Alto 800 2016-2019 LXI ... 5.0 0.00\n",
"2 Toyota Innova Crysta Touring Sport 2.4 MT ... 7.0 25.27\n",
"3 Toyota Etios Liva GD ... 5.0 0.00\n",
"4 Hyundai i20 Magna ... 5.0 0.00\n",
"\n",
"[5 rows x 13 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 14
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "lltV1jSW1j4F"
},
"source": [
"## Regression With Fast.ai\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "6yXVii4w1j38"
},
"source": [
"###Creating A TabularList"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xV1y3p9E6N_2",
"colab_type": "text"
},
"source": [
"TabularList in fastai is the basic ItemList for any kind of tabular data.It is a class to create a list of inputs in items for tabular data. \n",
"\n",
"Main Arguments:\n",
"\n",
"cat_names : The categorical features in the data.\n",
"\n",
"cont_names : The continuous features in the data.\n",
"\n",
"procs : A liat of transformations to be applies to the data such as FillMissing, Categorify, Normalize etc."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "E1-0qnbH1j32",
"colab": {}
},
"source": [
"#Defining the keyword arguments for fastai's TabularList\n",
"\n",
"#Path / default location for saving/loading models\n",
"path = ''\n",
"\n",
"#The dependent variable/target\n",
"dep_var = 'Price'\n",
"\n",
"#The list of categorical features in the dataset\n",
"cat_names = ['Brand', 'Model', 'Location', 'Fuel_Type', 'Transmission', 'Owner_Type'] \n",
"\n",
"#The list of continuous features in the dataset\n",
"#Exclude the Dependent variable 'Price'\n",
"cont_names =['Year', 'Kilometers_Driven', 'Mileage', 'Engine', 'Power', 'Seats', 'New_Price'] \n",
"\n",
"#List of Processes/transforms to be applied to the dataset\n",
"procs = [FillMissing, Categorify, Normalize]\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "4e48KbHy1j30",
"colab": {}
},
"source": [
"#Start index for creating a validation set from train_data\n",
"start_indx = len(train_data) - int(len(train_data) * 0.2)\n",
"\n",
"#End index for creating a validation set from train_data\n",
"end_indx = len(train_data)\n",
"\n",
"\n",
"#TabularList for Validation\n",
"val = (TabularList.from_df(train_data.iloc[start_indx:end_indx].copy(), path=path, cat_names=cat_names, cont_names=cont_names))\n",
"\n",
"test = (TabularList.from_df(test_data, path=path, cat_names=cat_names, cont_names=cont_names, procs=procs))\n",
"\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Vt18jvfP1j3u",
"colab": {}
},
"source": [
"#TabularList for training\n",
"data = (TabularList.from_df(train_data, path=path, cat_names=cat_names, cont_names=cont_names, procs=procs)\n",
" .split_by_idx(list(range(start_indx,end_indx)))\n",
" .label_from_df(cols=dep_var)\n",
" .add_test(test)\n",
" .databunch())"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "WHGNuBzM7sgT",
"colab_type": "text"
},
"source": [
"**Summary:**\n",
"\n",
"1. Initializing/Setting The parameters for TabularList such as path, dep_var, cat_names, cont_names and procs.\n",
"1. Setting the index for Validation set. The start index and End index are set in such a away that it takes the last 20% data from the training set for validation.\n",
"2. Creating TabularList for Validation set from train_data. \n",
"2. Creating TabularList for Test set from test_data. \n",
"1. Creating a DataBunch for the network.DataBunch is a class that binds train_dl,valid_dl and test_dl in a data object.\n",
"\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "f5syfNX71j3r",
"outputId": "2ffdab91-8eb1-4d9d-b275-ae2aad39c1de",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 359
}
},
"source": [
"#Display the data batch\n",
"data.show_batch(rows = 10)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Location</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage_na</th>\n",
" <th>Engine_na</th>\n",
" <th>Power_na</th>\n",
" <th>Seats_na</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" <th>target</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>Nissan</td>\n",
" <td>Micra Active XV</td>\n",
" <td>Pune</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>1.4350</td>\n",
" <td>-0.3498</td>\n",
" <td>0.3534</td>\n",
" <td>-0.7136</td>\n",
" <td>-0.8759</td>\n",
" <td>-0.3457</td>\n",
" <td>0.2942</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Maruti</td>\n",
" <td>Zen Estilo 1.1 LXI BSIII</td>\n",
" <td>Bangalore</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>Second</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-1.9544</td>\n",
" <td>0.0080</td>\n",
" <td>0.0264</td>\n",
" <td>-0.9445</td>\n",
" <td>-0.9338</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>1.65</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Maruti</td>\n",
" <td>Swift LDI SP Limited Edition</td>\n",
" <td>Hyderabad</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.8188</td>\n",
" <td>-0.0453</td>\n",
" <td>1.5627</td>\n",
" <td>-0.6294</td>\n",
" <td>-0.7433</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>6.25</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Renault</td>\n",
" <td>Duster 110PS Diesel RxZ</td>\n",
" <td>Delhi</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-0.1056</td>\n",
" <td>0.0776</td>\n",
" <td>0.2042</td>\n",
" <td>-0.2704</td>\n",
" <td>-0.0868</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>4.75</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Maruti</td>\n",
" <td>SX4 ZDI</td>\n",
" <td>Chennai</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>Third</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-0.7219</td>\n",
" <td>0.2068</td>\n",
" <td>0.7507</td>\n",
" <td>-0.6294</td>\n",
" <td>-0.4612</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>3.5</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Maruti</td>\n",
" <td>Zen Estilo LXI BS IV</td>\n",
" <td>Mumbai</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-1.3381</td>\n",
" <td>-0.1212</td>\n",
" <td>0.2020</td>\n",
" <td>-1.0507</td>\n",
" <td>-0.8747</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>1.46</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Hyundai</td>\n",
" <td>i10 Sportz 1.2</td>\n",
" <td>Bangalore</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-1.0300</td>\n",
" <td>-0.3001</td>\n",
" <td>0.5004</td>\n",
" <td>-0.7153</td>\n",
" <td>-0.6499</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>3.45</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Honda</td>\n",
" <td>City i-VTEC V</td>\n",
" <td>Kolkata</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-0.7219</td>\n",
" <td>-0.2646</td>\n",
" <td>-0.1492</td>\n",
" <td>-0.2097</td>\n",
" <td>0.0818</td>\n",
" <td>-0.3457</td>\n",
" <td>0.6630</td>\n",
" <td>3.87</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Mahindra</td>\n",
" <td>XUV500 W6 2WD</td>\n",
" <td>Coimbatore</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.8188</td>\n",
" <td>0.0373</td>\n",
" <td>-0.6540</td>\n",
" <td>0.9396</td>\n",
" <td>0.5144</td>\n",
" <td>2.1244</td>\n",
" <td>-0.2485</td>\n",
" <td>11.05</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Toyota</td>\n",
" <td>Innova 2.5 G (Diesel) 7 Seater BS IV</td>\n",
" <td>Hyderabad</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-0.4138</td>\n",
" <td>0.7137</td>\n",
" <td>-1.1171</td>\n",
" <td>1.4705</td>\n",
" <td>-0.2478</td>\n",
" <td>2.1244</td>\n",
" <td>-0.2485</td>\n",
" <td>9.6</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "Nq-MnASS1j3q"
},
"source": [
"###Initializing Neural Network\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "OJlEk4gi1j3n",
"colab": {}
},
"source": [
"#Initializing the network\n",
"learn = tabular_learner(data, layers=[300,200, 100, 50], metrics= [rmse,r2_score])\n"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "iOTLWeZk1j3l"
},
"source": [
"\n",
"The above line of code will initialize a neural network with 4 layers and the number of nodes in each layer as 300,200, 100 and 50 respectively. \n",
"\n",
"The network will use two primary metrics for evaluation:\n",
"\n",
"* Root Mean Squared Error(RMSE)\n",
"* R-Squared\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "hIDubrn63-VS",
"colab_type": "code",
"outputId": "a096e3ec-ac14-4e19-8e25-66384d49750a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 1000
}
},
"source": [
"#Show the complete Summary of the model\n",
"learn.summary"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"<bound method model_summary of Learner(data=TabularDataBunch;\n",
"\n",
"Train: LabelList (4816 items)\n",
"x: TabularList\n",
"Brand Maruti; Model Wagon R LXI CNG; Location Mumbai; Fuel_Type CNG; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -1.0300; Kilometers_Driven 0.1273; Mileage 1.8700; Engine -1.0507; Power -1.0451; Seats -0.3457; New_Price -0.2485; ,Brand Hyundai; Model Creta 1.6 CRDi SX Option; Location Pune; Fuel_Type Diesel; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 0.5106; Kilometers_Driven -0.1808; Mileage 0.3490; Engine -0.0665; Power 0.2514; Seats -0.3457; New_Price -0.2485; ,Brand Honda; Model Jazz V; Location Chennai; Fuel_Type Petrol; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -0.7219; Kilometers_Driven -0.1311; Mileage 0.0264; Engine -0.7119; Power -0.4631; Seats -0.3457; New_Price 0.4200; ,Brand Maruti; Model Ertiga VDI; Location Chennai; Fuel_Type Diesel; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -0.4138; Kilometers_Driven 0.2764; Mileage 0.5904; Engine -0.6294; Power -0.4620; Seats 2.1244; New_Price -0.2485; ,Brand Audi; Model A4 New 2.0 TDI Multitronic; Location Coimbatore; Fuel_Type Diesel; Transmission Automatic; Owner_Type Second; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -0.1056; Kilometers_Driven -0.1841; Mileage -0.6321; Engine 0.5840; Power 0.5296; Seats -0.3457; New_Price -0.2485; \n",
"y: FloatList\n",
"1.75,12.5,4.5,6.0,17.74\n",
"Path: .;\n",
"\n",
"Valid: LabelList (1203 items)\n",
"x: TabularList\n",
"Brand BMW; Model #na#; Location Delhi; Fuel_Type Petrol; Transmission Automatic; Owner_Type Second; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -2.2625; Kilometers_Driven -0.1112; Mileage -1.4178; Engine 2.2879; Power 3.6776; Seats -0.3457; New_Price -0.2485; ,Brand Hyundai; Model Elantra CRDi SX; Location Coimbatore; Fuel_Type Diesel; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 1.7431; Kilometers_Driven -0.1722; Mileage 1.0140; Engine -0.0665; Power 0.2514; Seats -0.3457; New_Price -0.2485; ,Brand Tata; Model Sumo EX; Location Coimbatore; Fuel_Type Diesel; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 0.5106; Kilometers_Driven 0.2558; Mileage -0.6101; Engine 2.2491; Power -0.5565; Seats 2.1244; New_Price -0.2485; ,Brand Datsun; Model #na#; Location Kolkata; Fuel_Type Petrol; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 0.8188; Kilometers_Driven -0.4392; Mileage 1.0140; Engine -1.3861; Power -1.1312; Seats -0.3457; New_Price 0.0605; ,Brand BMW; Model X5 xDrive 30d; Location Chennai; Fuel_Type Diesel; Transmission Automatic; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -1.3381; Kilometers_Driven 0.5049; Mileage -1.4002; Engine 2.3115; Power 2.5152; Seats -0.3457; New_Price -0.2485; \n",
"y: FloatList\n",
"6.99,15.57,5.29,2.25,20.0\n",
"Path: .;\n",
"\n",
"Test: LabelList (1234 items)\n",
"x: TabularList\n",
"Brand Maruti; Model #na#; Location Delhi; Fuel_Type CNG; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 0.2025; Kilometers_Driven -0.1815; Mileage 3.1122; Engine -1.0507; Power -1.0443; Seats -1.5807; New_Price -0.2485; ,Brand Maruti; Model Alto 800 2016-2019 LXI; Location Coimbatore; Fuel_Type Petrol; Transmission Manual; Owner_Type Second; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year -0.1056; Kilometers_Driven -0.0467; Mileage 1.4530; Engine -1.3911; Power -1.2520; Seats -0.3457; New_Price -0.2485; ,Brand Toyota; Model #na#; Location Mumbai; Fuel_Type Diesel; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 1.1269; Kilometers_Driven -0.2504; Mileage -0.9657; Engine 1.3003; Power 0.6630; Seats 2.1244; New_Price 1.7134; ,Brand Toyota; Model Etios Liva GD; Location Hyderabad; Fuel_Type Diesel; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na True; Seats_na False; Year -0.4138; Kilometers_Driven 0.7932; Mileage 1.2094; Engine -0.4339; Power -0.2747; Seats -0.3457; New_Price -0.2485; ,Brand Hyundai; Model i20 Magna; Location Mumbai; Fuel_Type Petrol; Transmission Manual; Owner_Type First; Mileage_na False; Engine_na False; Power_na False; Seats_na False; Year 0.2025; Kilometers_Driven -0.3001; Mileage 0.0922; Engine -0.7153; Power -0.5746; Seats -0.3457; New_Price -0.2485; \n",
"y: EmptyLabelList\n",
",,,,\n",
"Path: ., model=TabularModel(\n",
" (embeds): ModuleList(\n",
" (0): Embedding(29, 11)\n",
" (1): Embedding(1696, 103)\n",
" (2): Embedding(12, 6)\n",
" (3): Embedding(6, 4)\n",
" (4): Embedding(3, 3)\n",
" (5): Embedding(5, 4)\n",
" (6): Embedding(3, 3)\n",
" (7): Embedding(3, 3)\n",
" (8): Embedding(3, 3)\n",
" (9): Embedding(3, 3)\n",
" )\n",
" (emb_drop): Dropout(p=0.0, inplace=False)\n",
" (bn_cont): BatchNorm1d(7, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (layers): Sequential(\n",
" (0): Linear(in_features=150, out_features=300, bias=True)\n",
" (1): ReLU(inplace=True)\n",
" (2): BatchNorm1d(300, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (3): Linear(in_features=300, out_features=200, bias=True)\n",
" (4): ReLU(inplace=True)\n",
" (5): BatchNorm1d(200, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (6): Linear(in_features=200, out_features=100, bias=True)\n",
" (7): ReLU(inplace=True)\n",
" (8): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (9): Linear(in_features=100, out_features=50, bias=True)\n",
" (10): ReLU(inplace=True)\n",
" (11): BatchNorm1d(50, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (12): Linear(in_features=50, out_features=1, bias=True)\n",
" )\n",
"), opt_func=functools.partial(<class 'torch.optim.adam.Adam'>, betas=(0.9, 0.99)), loss_func=FlattenedLoss of MSELoss(), metrics=[<function root_mean_squared_error at 0x7fe2cd330268>, <function r2_score at 0x7fe2cd330400>], true_wd=True, bn_wd=True, wd=0.01, train_bn=True, path=PosixPath('.'), model_dir='models', callback_fns=[functools.partial(<class 'fastai.basic_train.Recorder'>, add_time=True, silent=False)], callbacks=[], layer_groups=[Sequential(\n",
" (0): Embedding(29, 11)\n",
" (1): Embedding(1696, 103)\n",
" (2): Embedding(12, 6)\n",
" (3): Embedding(6, 4)\n",
" (4): Embedding(3, 3)\n",
" (5): Embedding(5, 4)\n",
" (6): Embedding(3, 3)\n",
" (7): Embedding(3, 3)\n",
" (8): Embedding(3, 3)\n",
" (9): Embedding(3, 3)\n",
" (10): Dropout(p=0.0, inplace=False)\n",
" (11): BatchNorm1d(7, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (12): Linear(in_features=150, out_features=300, bias=True)\n",
" (13): ReLU(inplace=True)\n",
" (14): BatchNorm1d(300, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (15): Linear(in_features=300, out_features=200, bias=True)\n",
" (16): ReLU(inplace=True)\n",
" (17): BatchNorm1d(200, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (18): Linear(in_features=200, out_features=100, bias=True)\n",
" (19): ReLU(inplace=True)\n",
" (20): BatchNorm1d(100, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (21): Linear(in_features=100, out_features=50, bias=True)\n",
" (22): ReLU(inplace=True)\n",
" (23): BatchNorm1d(50, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n",
" (24): Linear(in_features=50, out_features=1, bias=True)\n",
")], add_time=True, silent=False)>"
]
},
"metadata": {
"tags": []
},
"execution_count": 20
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "otdALDmE1j3k"
},
"source": [
"###Training The Network"
]
},
{
"cell_type": "code",
"metadata": {
"id": "h2vWHWFyU34D",
"colab_type": "code",
"outputId": "160692fd-21fb-4427-e927-785ca35e18ee",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 300
}
},
"source": [
"learn.lr_find(start_lr = 1e-05,end_lr = 1e+05, num_it = 100)\n",
"learn.recorder.plot()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
""
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
},
{
"output_type": "stream",
"text": [
"LR Finder is complete, type {learner_name}.recorder.plot() to see the graph.\n"
],
"name": "stdout"
},
{
"output_type": "display_data",
"data": {
"image/png": "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\nAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "H_6pgTxddHEj",
"colab_type": "text"
},
"source": [
"Learning rate is a hyper-parameter that controls how much the weights of the network is being adjusted with respect the loss gradient.\n",
"\n",
"The lr_find method helps explore the learning rate in a specified range. The graph shows the deviation in loss with respect to the learning rate."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Am3r-2zR1j3U",
"outputId": "66b12617-06cf-4701-94e4-7fe1743071ed",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 824
}
},
"source": [
"#Fitting data and training the network\n",
"learn.fit_one_cycle(25)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: left;\">\n",
" <th>epoch</th>\n",
" <th>train_loss</th>\n",
" <th>valid_loss</th>\n",
" <th>root_mean_squared_error</th>\n",
" <th>r2_score</th>\n",
" <th>time</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>0</td>\n",
" <td>170.930954</td>\n",
" <td>161.123108</td>\n",
" <td>12.526302</td>\n",
" <td>-0.330882</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>1</td>\n",
" <td>152.859070</td>\n",
" <td>149.356277</td>\n",
" <td>12.099945</td>\n",
" <td>-0.264155</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>2</td>\n",
" <td>119.679787</td>\n",
" <td>96.389923</td>\n",
" <td>9.771078</td>\n",
" <td>0.140050</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>3</td>\n",
" <td>82.348785</td>\n",
" <td>55.138988</td>\n",
" <td>7.370564</td>\n",
" <td>0.508471</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>4</td>\n",
" <td>48.968166</td>\n",
" <td>23.842108</td>\n",
" <td>4.833325</td>\n",
" <td>0.789911</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>5</td>\n",
" <td>26.032892</td>\n",
" <td>17.158106</td>\n",
" <td>3.929134</td>\n",
" <td>0.869249</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>6</td>\n",
" <td>17.878710</td>\n",
" <td>9.110335</td>\n",
" <td>2.786590</td>\n",
" <td>0.926840</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>7</td>\n",
" <td>13.887877</td>\n",
" <td>9.249630</td>\n",
" <td>2.722911</td>\n",
" <td>0.934174</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>8</td>\n",
" <td>13.685216</td>\n",
" <td>14.990489</td>\n",
" <td>3.492407</td>\n",
" <td>0.894274</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>9</td>\n",
" <td>11.866707</td>\n",
" <td>9.405542</td>\n",
" <td>2.823769</td>\n",
" <td>0.926297</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>10</td>\n",
" <td>11.612128</td>\n",
" <td>9.532630</td>\n",
" <td>2.771031</td>\n",
" <td>0.931684</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>11</td>\n",
" <td>11.271067</td>\n",
" <td>10.023697</td>\n",
" <td>2.850357</td>\n",
" <td>0.928993</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>12</td>\n",
" <td>12.695855</td>\n",
" <td>9.955544</td>\n",
" <td>2.761512</td>\n",
" <td>0.933563</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>13</td>\n",
" <td>12.834098</td>\n",
" <td>12.585591</td>\n",
" <td>3.112505</td>\n",
" <td>0.916915</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>14</td>\n",
" <td>11.626652</td>\n",
" <td>11.697491</td>\n",
" <td>2.959678</td>\n",
" <td>0.923977</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>15</td>\n",
" <td>11.730012</td>\n",
" <td>18.769026</td>\n",
" <td>3.915838</td>\n",
" <td>0.875023</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>16</td>\n",
" <td>13.120429</td>\n",
" <td>12.952336</td>\n",
" <td>3.194207</td>\n",
" <td>0.913939</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>17</td>\n",
" <td>10.109412</td>\n",
" <td>15.637222</td>\n",
" <td>3.527203</td>\n",
" <td>0.897277</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>18</td>\n",
" <td>9.204473</td>\n",
" <td>12.849992</td>\n",
" <td>3.102328</td>\n",
" <td>0.916921</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>19</td>\n",
" <td>7.052763</td>\n",
" <td>11.737025</td>\n",
" <td>2.987463</td>\n",
" <td>0.920450</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>20</td>\n",
" <td>7.344553</td>\n",
" <td>12.277870</td>\n",
" <td>3.056447</td>\n",
" <td>0.917726</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>21</td>\n",
" <td>6.613494</td>\n",
" <td>12.115734</td>\n",
" <td>2.985884</td>\n",
" <td>0.922169</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>22</td>\n",
" <td>6.371452</td>\n",
" <td>12.402617</td>\n",
" <td>2.996723</td>\n",
" <td>0.920773</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>23</td>\n",
" <td>6.860789</td>\n",
" <td>12.873620</td>\n",
" <td>3.077043</td>\n",
" <td>0.917000</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" <tr>\n",
" <td>24</td>\n",
" <td>7.468849</td>\n",
" <td>12.758644</td>\n",
" <td>3.077939</td>\n",
" <td>0.916618</td>\n",
" <td>00:01</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "-nj8YKKD1j3R"
},
"source": [
"**The above line trains the network for 25 epochs.**"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "jsxdqeB9hEwd",
"colab_type": "text"
},
"source": [
"### Evaluating Performance"
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Bbzeli2I1j3C",
"outputId": "a70ea551-1888-48cc-b8a2-e1a20d5385b4",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"#Display Predictions On Training Data\n",
"learn.show_results(ds_type=DatasetType.Train,rows = 5)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Location</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage_na</th>\n",
" <th>Engine_na</th>\n",
" <th>Power_na</th>\n",
" <th>Seats_na</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" <th>target</th>\n",
" <th>prediction</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>Volkswagen</td>\n",
" <td>Polo Petrol Comfortline 1.2L</td>\n",
" <td>Kochi</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-0.4138</td>\n",
" <td>-0.0634</td>\n",
" <td>-0.3533</td>\n",
" <td>-0.7136</td>\n",
" <td>-0.7452</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>3.82</td>\n",
" <td>[4.371329]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Toyota</td>\n",
" <td>Corolla Altis G MT</td>\n",
" <td>Kolkata</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.2025</td>\n",
" <td>-0.3199</td>\n",
" <td>-0.8340</td>\n",
" <td>0.2975</td>\n",
" <td>0.4769</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>7.95</td>\n",
" <td>[8.259411]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Maruti</td>\n",
" <td>Wagon R VXI</td>\n",
" <td>Mumbai</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.2025</td>\n",
" <td>-0.1547</td>\n",
" <td>0.9701</td>\n",
" <td>-1.0507</td>\n",
" <td>-0.8759</td>\n",
" <td>-0.3457</td>\n",
" <td>0.1871</td>\n",
" <td>3.16</td>\n",
" <td>[3.749952]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Hyundai</td>\n",
" <td>Accent CRDi</td>\n",
" <td>Kochi</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-2.2625</td>\n",
" <td>1.0072</td>\n",
" <td>-1.0930</td>\n",
" <td>-0.2165</td>\n",
" <td>-0.5908</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>1.8</td>\n",
" <td>[2.474023]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Honda</td>\n",
" <td>Amaze S i-Dtech</td>\n",
" <td>Ahmedabad</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.2025</td>\n",
" <td>0.0209</td>\n",
" <td>1.6944</td>\n",
" <td>-0.2080</td>\n",
" <td>-0.2745</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>4.35</td>\n",
" <td>[5.159999]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "Ho9s8tIr1j26",
"outputId": "883dea64-3738-4fa3-8ac5-578af8bfb27a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"#Display Predictions On Validation Data\n",
"learn.show_results(ds_type=DatasetType.Valid)"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"text/html": [
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>Brand</th>\n",
" <th>Model</th>\n",
" <th>Location</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage_na</th>\n",
" <th>Engine_na</th>\n",
" <th>Power_na</th>\n",
" <th>Seats_na</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" <th>target</th>\n",
" <th>prediction</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <td>BMW</td>\n",
" <td>#na#</td>\n",
" <td>Delhi</td>\n",
" <td>Petrol</td>\n",
" <td>Automatic</td>\n",
" <td>Second</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-2.2625</td>\n",
" <td>-0.1112</td>\n",
" <td>-1.4178</td>\n",
" <td>2.2879</td>\n",
" <td>3.6776</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>6.99</td>\n",
" <td>[10.922736]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Hyundai</td>\n",
" <td>Elantra CRDi SX</td>\n",
" <td>Coimbatore</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>1.7431</td>\n",
" <td>-0.1722</td>\n",
" <td>1.0140</td>\n",
" <td>-0.0665</td>\n",
" <td>0.2514</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>15.57</td>\n",
" <td>[9.735545]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Tata</td>\n",
" <td>Sumo EX</td>\n",
" <td>Coimbatore</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.5106</td>\n",
" <td>0.2558</td>\n",
" <td>-0.6101</td>\n",
" <td>2.2491</td>\n",
" <td>-0.5565</td>\n",
" <td>2.1244</td>\n",
" <td>-0.2485</td>\n",
" <td>5.29</td>\n",
" <td>[5.969137]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>Datsun</td>\n",
" <td>#na#</td>\n",
" <td>Kolkata</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>0.8188</td>\n",
" <td>-0.4392</td>\n",
" <td>1.0140</td>\n",
" <td>-1.3861</td>\n",
" <td>-1.1312</td>\n",
" <td>-0.3457</td>\n",
" <td>0.0605</td>\n",
" <td>2.25</td>\n",
" <td>[2.973508]</td>\n",
" </tr>\n",
" <tr>\n",
" <td>BMW</td>\n",
" <td>X5 xDrive 30d</td>\n",
" <td>Chennai</td>\n",
" <td>Diesel</td>\n",
" <td>Automatic</td>\n",
" <td>First</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>False</td>\n",
" <td>-1.3381</td>\n",
" <td>0.5049</td>\n",
" <td>-1.4002</td>\n",
" <td>2.3115</td>\n",
" <td>2.5152</td>\n",
" <td>-0.3457</td>\n",
" <td>-0.2485</td>\n",
" <td>20.0</td>\n",
" <td>[17.299963]</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "POO2TIFc1j3J",
"outputId": "7d2ad68b-0101-44ba-a372-2909b72b6e88",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 102
}
},
"source": [
"#Getting The Training And Validation Errors\n",
"\n",
"tr = learn.validate(learn.data.train_dl)\n",
"va = learn.validate(learn.data.valid_dl)\n",
"print(\"The Metrics used In Evaluating The Network:\", str(learn.metrics))\n",
"\n",
"print(\"\\nThe calculated RMSE & R-Squared For The Training Set :\", tr[1:])\n",
"print(\"\\nThe calculated RMSE & R-Squared For The Validation Set :\", va[1:])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"The Metrics used In Evaluating The Network: [<function root_mean_squared_error at 0x7fe2cd330268>, <function r2_score at 0x7fe2cd330400>]\n",
"\n",
"The calculated RMSE & R-Squared For The Training Set : [tensor(1.6506), tensor(0.9713)]\n",
"\n",
"The calculated RMSE & R-Squared For The Validation Set : [tensor(3.0779), tensor(0.9166)]\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "Tx9o36q0CLWs",
"colab_type": "text"
},
"source": [
"Summary:\n",
"\n",
"The Root Mean Squared Error is the standard deviation of the errors/residuals. It tells us the 'Goodness Of Fit' of a model. The lower the value of RMSE the better the model.\n",
"\n",
"The R-Squared metric also called the coefficient of determination is used to understand the variation in the dependent variable(y) and the independent variable(X).The closer the value of R-Squared is to one, the better the model.\n",
"\n",
"**The above output suggests that:**\n",
"\n",
"**The model/network was able to attain an RMSE of 1.4678 and an R_squared of 0.9726 while training and an RMSE of 3.1737 and an R_squared of 0.9107 while Validating on the validation set.**\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "YUKxTHXkVpPv",
"colab_type": "code",
"outputId": "fa04c351-ec24-4f87-c8b7-e328f2a51932",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 283
}
},
"source": [
"#Plotting The losses for training and validation\n",
"learn.recorder.plot_losses()\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAYgAAAEKCAYAAAAIO8L1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBo\ndHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAAIABJREFUeJzt3Xl8VOW9+PHPN3tICAkkbAkQdsJO\nCOACKoK4objVpVrXSmttrV2vtfeq9Vd7tXqt9V5r64JLq1hbdwVREUUUgYDsYV8EEiAJkITsyXx/\nf5yTMIEJJJDJTDLf9+s1rzl5znPOfOckme88zznneURVMcYYY44WFugAjDHGBCdLEMYYY3yyBGGM\nMcYnSxDGGGN8sgRhjDHGJ0sQxhhjfLIEYYwxxidLEMYYY3yyBGGMMcaniEAHcCqSk5M1PT090GEY\nY0ybsnz58gJVTTlRvTadINLT08nOzg50GMYY06aIyM6m1LMuJmOMMT5ZgjDGGOOTJQhjjDE+telz\nEMaY9qO6uprdu3dTUVER6FDajZiYGNLS0oiMjDyp7S1BGGOCwu7du+nYsSPp6emISKDDafNUlcLC\nQnbv3k3fvn1Pah/WxWSMCQoVFRV06dLFkkMLERG6dOlySi0ySxDGmKBhyaFlnerxDNkEsWRbIZv3\nlQQ6DGOMCVohmyCueeZrzvvTwkCHYYwJEoWFhYwePZrRo0fTvXt3UlNT63+uqqpq0j5uueUWNm7c\n6OdIW4+dpDbGGKBLly6sXLkSgAceeID4+Hh++ctfNqijqqgqYWG+v1u/8MILfo+zNYVsC8IYY5pi\ny5YtDB06lOuvv55hw4aRl5fHzJkzycrKYtiwYTz44IP1dSdOnMjKlSupqakhMTGRe+65h1GjRnH6\n6aezf//+AL6Lk2MtCGNM0Pnde+tYn1vcovsc2jOB+y8ZdlLbbtiwgZdffpmsrCwAHn74YTp37kxN\nTQ2TJ0/mqquuYujQoQ22KSoq4uyzz+bhhx/m5z//ObNmzeKee+455ffRmqwFYYwxJ9C/f//65AAw\ne/ZsMjMzyczMJCcnh/Xr1x+zTWxsLBdeeCEAY8eOZceOHa0VbouxFoQxJuic7Dd9f4mLi6tf3rx5\nM3/+859ZunQpiYmJ3HDDDT7vNYiKiqpfDg8Pp6amplVibUnWgjDGmGYoLi6mY8eOJCQkkJeXx7x5\n8wIdkt9YC8IYY5ohMzOToUOHMmTIEPr06cOZZ54Z6JD8RlQ10DGctKysLD3ZCYPS7/kAgB0PX9yS\nIRljTlJOTg4ZGRmBDqPd8XVcRWS5qmY1skk962IyxhjjkyUIY4wxPlmCMMYY41PIJ4i2fA7GGGP8\nKeQThMfygzHG+BTyCaLWMoQxxvgU8gnCY11Mxhhg8uTJx9z09sQTT3DHHXc0uk18fDwAubm5XHXV\nVT7rnHPOOZzocvwnnniCsrKy+p8vuugiDh061NTQ/cZvCUJEeonIAhFZLyLrROSnbvkDIrJHRFa6\nj4u8tvmNiGwRkY0icr6/YvNmCcIYA3Ddddfx2muvNSh77bXXuO666064bc+ePfn3v/990q99dIKY\nM2cOiYmJJ72/luLPFkQN8AtVHQqcBtwpInXDHf5JVUe7jzkA7rprgWHABcBfRCTcj/EBdg7CGOO4\n6qqr+OCDD+onB9qxYwe5ubmMGTOGKVOmkJmZyYgRI3jnnXeO2XbHjh0MHz4cgPLycq699loyMjK4\n/PLLKS8vr693xx131A8Tfv/99wPw5JNPkpuby+TJk5k8eTIA6enpFBQUAPD4448zfPhwhg8fzhNP\nPFH/ehkZGdx+++0MGzaMadOmNXidluK3oTZUNQ/Ic5dLRCQHSD3OJjOA11S1EtguIluA8cBif8UI\ndg7CmKA09x7Yu6Zl99l9BFz4cKOrO3fuzPjx45k7dy4zZszgtdde4+qrryY2Npa33nqLhIQECgoK\nOO2007j00ksbne/56aefpkOHDuTk5LB69WoyMzPr1z300EN07tyZ2tpapkyZwurVq7nrrrt4/PHH\nWbBgAcnJyQ32tXz5cl544QWWLFmCqjJhwgTOPvtskpKS2Lx5M7Nnz+bZZ5/l6quv5o033uCGG25o\nmWPlapVzECKSDowBlrhFPxaR1SIyS0SS3LJUYJfXZrs5fkJpER5LEMYYl3c3U133kqpy7733MnLk\nSKZOncqePXvYt29fo/tYuHBh/Qf1yJEjGTlyZP26119/nczMTMaMGcO6det8DhPubdGiRVx++eXE\nxcURHx/PFVdcwRdffAFA3759GT16NOC/4cT9PlifiMQDbwB3q2qxiDwN/D9A3ef/AW5txv5mAjMB\nevfufcrx2TkIY4LQcb7p+9OMGTP42c9+xooVKygrK2Ps2LG8+OKL5Ofns3z5ciIjI0lPT/c5vPeJ\nbN++nccee4xly5aRlJTEzTfffFL7qRMdHV2/HB4e7pcuJr+2IEQkEic5vKKqbwKo6j5VrVVVD/As\nTjcSwB6gl9fmaW5ZA6r6jKpmqWpWSkrKKcdYawnCGOOKj49n8uTJ3HrrrfUnp4uKiujatSuRkZEs\nWLCAnTt3HncfZ511Fq+++ioAa9euZfXq1YAzTHhcXBydOnVi3759zJ07t36bjh07UlJScsy+Jk2a\nxNtvv01ZWRmlpaW89dZbTJo0qaXe7gn58yomAZ4HclT1ca/yHl7VLgfWusvvAteKSLSI9AUGAkv9\nFV8dyw/GGG/XXXcdq1atqk8Q119/PdnZ2YwYMYKXX36ZIUOGHHf7O+64g8OHD5ORkcF9993H2LFj\nARg1ahRjxoxhyJAhfPe7320wTPjMmTO54IIL6k9S18nMzOTmm29m/PjxTJgwge9///uMGTOmhd9x\n4/w23LeITAS+ANYAHrf4XuA6YDROF9MO4AfuCW1E5Lc43U01OF1SczmOlhju+6t7zqVnYuxJ7cMY\n03JsuG//OJXhvv15FdMiwNdp/jnH2eYh4CF/xeSLXcVkjDG+hfyd1NbFZIwxvoV8gqiqrQ10CMYY\nl42u3LJO9XiGfIIoq7IEYUwwiImJobCw0JJEC1FVCgsLiYmJOel9+P0+iGBnCcKY4JCWlsbu3bvJ\nz88PdCjtRkxMDGlpaSe9vSWIqppAh2CMASIjI+nbt2+gwzBerIvJWhDGGOOTJYhKSxDGGONLyCaI\niDDnFg3rYjLGGN9CNkHERjpTTZRVWwvCGGN8CdkEER7utCBqau2SOmOM8SV0E4TUJQjPCWoaY0xo\nCtkEUafGxmIyxhifQjZB1KUFSxDGGONbyCaIOtXWxWSMMT6FbIKoG+/FTlIbY4xvIZsg6tR4rAVh\njDG+hGyCqGs3VFsLwhhjfArZBFHHLnM1xhjfQj5BvL86j0NlVYEOwxhjgk7IJoi6OUlqPMptL2UH\nNhhjjAlCIZsgvH3z7cFAh2CMMUEnZBOE97SGdq+cMcYcK2QThDHGmOML2QRhjQZjjDm+kE0Qxhhj\nji90E4Q1IYwx5rhCN0EcpaisOtAhGGNMUAnZBHF0A2JdblFA4jDGmGDltwQhIr1EZIGIrBeRdSLy\nU7e8s4h8LCKb3eckt1xE5EkR2SIiq0Uk01+x+bK1oLQ1X84YY4KeP1sQNcAvVHUocBpwp4gMBe4B\n5qvqQGC++zPAhcBA9zETeNqPsTW4DwLgv95e68+XM8aYNsdvCUJV81R1hbtcAuQAqcAM4CW32kvA\nZe7yDOBldXwNJIpID3/FBzA1oyujeiX68yWMMabNapVzECKSDowBlgDdVDXPXbUX6OYupwK7vDbb\n7ZYdva+ZIpItItn5+fknHZMC6V3ieOX7E056H8YY0575PUGISDzwBnC3qhZ7r1Onn6dZF5yq6jOq\nmqWqWSkpKScV064DZZRV1VJcUU18dARnDujC2D5JJ7UvY4xpr/yaIEQkEic5vKKqb7rF++q6jtzn\n/W75HqCX1+ZpblmLW73buWJpX3ElAB2jIympsMtcjTHGmz+vYhLgeSBHVR/3WvUucJO7fBPwjlf5\nje7VTKcBRV5dUS0qTJznuqZLQmwExeU1/ngpY4xpsyL8uO8zge8Ba0RkpVt2L/Aw8LqI3AbsBK52\n180BLgK2AGXALf4KTOoShHsl0+b9h9lbXMHmfSUM7NbRXy9rjDFtit8ShKouAqSR1VN81FfgTn/F\n402kYVjffHsIgEVbCixBGGOMKyTvpA5zE4THbUFcMKw7APHR/mxQGWNM2xKSCaKu/VB3r9yvLxgM\nQHhYYw0eY4wJPSGZIMLcd12XIOJjnJZD4eGqAEVkjDHBJyQTRN05CHWvY6rrWnpoTg4V1bUALN95\nkOe+2BaYAI0xJgiEZKd7XUdS3VzUsZHh9euKK6qJiQznyqe/AuDWM/sSZl1PxpgQFJItiDBpeCOE\n91VNJRU1DQbyO1Bm3U7GmNAU0glCfYzyUVJRw+THPqv/eX7OvtYKyxhjgkpIJogjN8odu+6yp75k\nR2FZ/c91w3IYY0yoCe0E0YS6uw+W+zUWY4wJViGZII6+UQ5gzl2TfNbNySv2WW6MMe1dSCcI7y6m\noT0T+Nv3xh5Td39JJYWHK1srNGOMCRohmSAa62KaNrRbg5/rrm7NySvxf1DGGBNkQvI+iLCjx9pw\niQgv3DKOwsNVRIYLGT0SmPanheTkFTNxYHLrB2qMMQEUkglC6s9BHLtu8uCux5Q9NCeH28/q5++w\njDEmqIRmF5P77Os+iMbYeQhjTKgJyQTh6yR1Y35+3iAAxv7+E9bn2hVNxpjQYQniBC4e2aN++bvP\nfc2izQWUVdn0pMaY9i8kE0RzbpTr07lD/fKhsmpueH4Jf/3cRnk1xrR/oZ0gmtCEiAgP4/NfncMv\npw2qL1u4KZ/HP97EV1sL/BWiMcYEXEgmiOZ0MQH06RLHgK5H5qpeuesQT87fzHefXcKXWyxJGGPa\np5BMEEe6mJp+FVNqYqzP8uufW9ISIRljTNAJyQQR4c45WlPb9ASRRl798rXjejVYV1Re3TKBGWNM\nEAnJBBEd4bztyhpP0zbIXUnirDN5JHoWsVTw8JUj+eLXk+tX7zpQdpyNjTGmbbIE0RRdM5DT7uAa\nmU9Oz4dgz3J6de7A+z+ZCFiCMMa0TyGaIJw5qCtrapu2QUQ0TPs93PQu1FTC89Pg80fplRgFwK6D\nliCMMe1PaCaISOdtR4Y38+33PQvu+BKGXgYLfk+n12aQEVPIzkJLEMaY9ickE0RMZDj3XjSEf848\nrfkbxybCVc/DFc/B/g28Kb8mbNUrbNpbzPurc7n/nbW89c3ulg/aGGNamTTlZrGT2rHILGA6sF9V\nh7tlDwC3A/lutXtVdY677jfAbUAtcJeqzjvRa2RlZWl2drYfom+iQ7vI//stpBQuY27tOO6tvo2D\nJADwHxcM4baJfYmKCMkcbIwJYiKyXFWzTlSvSZ9eItJfRKLd5XNE5C4RSTzBZi8CF/go/5OqjnYf\ndclhKHAtMMzd5i8iEt6U2AIqsReFV/6LP1Rfx5SwFXwYfQ9nha0C4JEPNzDoP+dy92vfsLOwNMCB\nGmNM8zX16+0bQK2IDACeAXoBrx5vA1VdCBxo4v5nAK+paqWqbge2AOObuG1A9UlO4JnaS7is6v9R\npHG8HPUI90e8RDRVALy9MpezH/0Mj6/JJ4wxJog1NUF4VLUGuBz4X1X9FdDjBNs05scislpEZolI\nkluWCuzyqrPbLQt6sVHhXDCsO+s1nUuqHmJWzQXcEjGP96N+Sx/ZW19vz6HyAEZpjDHN19QEUS0i\n1wE3Ae+7ZZEn8XpPA/2B0UAe8D/N3YGIzBSRbBHJzs/PP/EGreDBGcMAqCSKB2tu5IPRf2FATBF/\nTJ5TX2fL/sOBCs8YY05KUxPELcDpwEOqul1E+gJ/b+6Lqeo+Va1VVQ/wLEe6kfbgdFvVSXPLfO3j\nGVXNUtWslJSU5obgF10TYtj80IXERjqnTeZXDkMyLiWzYikROHNHbM23BGGMaVualCBUdb2q3qWq\ns91uoY6q+khzX0xEvLulLgfWusvvAteKSLSbfAYCS5u7/0CKDA+jc5xz49zo3omQMZ3I6mLevNBD\nUodIa0EYY9qciKZUEpHPgEvd+suB/SLypar+/DjbzAbOAZJFZDdwP3COiIzGmatnB/ADAFVdJyKv\nA+uBGuBOVW3ibc7B47WZp/F69i5umNAHartBZAdGlnzBoG7fYeO+kkCHZ4wxzdKk+yBE5BtVHSMi\n3wd6qer9IrJaVUf6P8TGBfw+iBP55w2waxkPDXmDZxft5G/fG8v5w7oHOipjTIhr0fsggAi3e+hq\njpykNicy5BI4vJeruu8H4I8fbghwQMYY03RNTRAPAvOAraq6TET6AZv9F1Y7MWgahEUw+ODnXJ2V\nRmFpld0PYYxpM5p6kvpfqjpSVe9wf96mqlf6N7R2IDYJ0ifBhvfJ6p3EobJqOxdhjGkzmjrURpqI\nvCUi+93HGyKS5u/g2oWM6VC4haldDxEZLryzMjfQERljTJM0tYvpBZxLUXu6j/fcMnMigy8GoPO3\n8xjWsxOrdh0KcEDGGNM0TU0QKar6gqrWuI8XgeC4Sy3YJfSAtHGQ8z5pSbFszT9s5yGMMW1CUxNE\noYjcICLh7uMGoNCfgbUrQ6ZD3krOS61mf0klj3+8KdARGWPMCTU1QdyKc4nrXpwxlK4CbvZTTO1P\nxiUAnFH9NQD/t2BLIKMxxpgmaepVTDtV9VJVTVHVrqp6GWBXMTVVl/6QkkHK7o+ZmtGNyHCxbiZj\nTNA7lenOGh1mw/iQMR12fsmlA6OprlUesZvmjDFB7lQShLRYFKFgyHRQD+dHrgDgbwu3setAWYCD\nMsaYxp1KgrA+kuboMQo69SZ681yeu9EZAmXSHxdQVeMJcGDGGOPbcROEiJSISLGPRwnO/RCmqURg\nyMWw9VOm9o8jsYMz39I33x4McGDGGOPbcROEqnZU1QQfj46q2qShwo2XjOlQWwlbPuGDuyYBMHft\n3hNsZIwxgWEf8q2p9+nQoQtseJ/UYZcB8OJXO6iq9TBxQDIXDu+OiJ3aMcYEh1M5B2GaKywcBl8I\nmz6Cmiqun9AbgFeXfMuPXlnBmyt8zrJqjDEBYQmitQ25BCqLYMdCbpvYt8Gq//loY4CCMsaYY1mC\naG39zoGoeMh5n34p8Q1W7S2uCEhIxhjjiyWI1hYZAwOmwsY54PHw7x+eXr/Ko5BfUhnA4Iwx5ghL\nEIGQcQkc3ge7l5GV3plRvRLrVy3clB/AwIwx5ghLEIEw8DwIi4QN7wHw2u2n8cYdZxAbGc7a3KIA\nB2eMMQ5LEIEQ0wn6ngU574MqsVHhjO2TRI/EGF74cge1NpCfMSYIWIIIlIzpcHA77F9fX7S9oBSA\nRVsKAhWVMcbUswQRKIMvBsRpRbjevXMiAB+ts7urjTGBZwkiUDp2g17j689DAIxI60RSh0heWfIt\nFdW1AQzOGGMsQQTWkOmwdw0c3FFf9ItpgwFYsGF/gIIyxhiHJYhAypjuPG/4oL7osjGpxEaG84e5\nOZRXWSvCGBM4fksQIjJLRPaLyFqvss4i8rGIbHafk9xyEZEnRWSLiKwWkUx/xRVUOveDrsManIeI\nj47gljPT2XWgnIz7PuThuRv4+9c7AxikMSZU+bMF8SJwwVFl9wDzVXUgMN/9GeBCYKD7mAk87ce4\ngkvGdPh2MRw+coPcdeN71y//9fOt/Nfba9lnw3AYY1qZ3xKEqi4EDhxVPAN4yV1+CbjMq/xldXwN\nJIpID3/FFlSGTAfUGXrD1atzB/50zSgGdTsyVtMr1oowxrSy1j4H0U1V89zlvUA3dzkV2OVVb7db\n1v51HwGJvWHD+w2KLx+Txs+mDqr/ef6G/ajaDXTGmNYTsJPU6nzaNfsTT0Rmiki2iGTn57eDcYtE\nnCHAt30GFcUNVp0xIJkenWLo2SmGdbnFLN1+dIPMGGP8p7UTxL66riP3ue5azj1AL696aW7ZMVT1\nGVXNUtWslJQUvwbbajKmQ20VbPm4QXGn2Ei+uudc5vx0EjGRYby90iYUMsa0ntZOEO8CN7nLNwHv\neJXf6F7NdBpQ5NUV1f71mgBxKbDu7WNWiQiJHaKYktGNT3L247FxmowxrcSfl7nOBhYDg0Vkt4jc\nBjwMnCcim4Gp7s8Ac4BtwBbgWeBH/oorKIWFw4irYeNcOOz7BrnzMrqRX1LJyt2HWjk4Y0yo8udV\nTNepag9VjVTVNFV9XlULVXWKqg5U1amqesCtq6p6p6r2V9URqprtr7iCVtYt4KmGb/7hc/XkwV0B\nuOIvX7F4a2FrRmaMCVF2J3WwSB4I6ZNg+Qvg8RyzulOHyPrlf9glr8aYVmAJIphk3QKHvoWtn/pc\nfdPpfQBYucu6mYwx/mcJIpgMuQQ6JEP2LJ+r779kGJeO6smeQ+WWJIwxfmcJIphEREHm92DTXCg6\n9pLWsDDhwRnDCBP4NGdfAAI0xoQSSxDBJvMmUIUVL/tcndghilG9EvnCZp0zxviZJYhg07kvDJgC\nK16C2hqfVSYNSGbVrkMUlVW3cnDGmFBiCSIYZd0KJXmw6UOfqycNSsGjsHibtSKMMf5jCSIYDTwf\nOvZs9GT16F6JxEdHsHCzJQhjjP9YgghG4REw9ibYOh8ObD9mdWR4GKf168IXm9vBYIXGmKBlCSJY\nZd4IEg7LX/S5+uxByew6UM5v31pDVc2xN9YZY8ypsgQRrBJ6wuALnaE3aiqPWX2OO/TGK0u+Ze7a\n0BnX0BjTeixBBLOsW6CsAHLeO2ZVWlJs/fKT8zdTU2utCGNMy7IEEcz6nQuJfSD7hWNWiQjj0zsD\nsDW/lOU7D7Z2dMaYds4SRDALC3NaETsXQf7GY1bPnnkaK+87jzCBhXbC2hjTwixBBLvRN0BYpM9W\nRHiYM5nQpIEpPLVgKwdLqwIQoDGmvbIEEeziU2DopbDqVagq81ll5ln9AHjhy2MviTXGmJNlCaIt\nyLoVKopg3Vs+V585IJmpGV159ovt7C2qaOXgjDHtlSWItqDPmZA8qNE7qwF+MW0w5dW1/PqN1a0Y\nmDGmPbME0RaIOK2IPdmQt8pnlYweCVw1No2vthRwwM5FGGNagCWItmLUtRAR4/NkdZ2bz0inxqPM\nWmTnIowxp84SRFsRmwTDr4Q1/4LKEp9Vhqd2YmyfJOauzUNVWzlAY0x7YwmiLcm6FaoOw+rXG61y\n+ZhUtuaX8uHava0YmDGmPbIE0ZakjoXuI5xupkZaCFdkphITGcYdr6xg2Y4DrRygMaY9sQTRltSd\nrN63BnZn+6zSISqCO84eAMCtLyxrzeiMMe2MJYi2ZsR3ICr+uJe8/mhyf3p2iqGksoZ566yryRhz\ncixBtDXRHWHk1bDuTSjz3YUUGR7G6z88HYCXvtrRisEZY9oTSxBtUdatUFMBq15rtEpaUgd+dE5/\nvt5WaHdXG2NOiiWItqj7CEgbB8uehdqaRqtdndULj8IbK3a3YnDGmPYiIAlCRHaIyBoRWSki2W5Z\nZxH5WEQ2u89JgYitzZj4MziwDVb+o9Eq6clxTOjbmdezd+Hx2H0RxpjmCWQLYrKqjlbVLPfne4D5\nqjoQmO/+bBoz+CLoNQE+e7jRUV4BvjuhNzsLy/jJ7G9aMThjTHsQTF1MM4CX3OWXgMsCGEvwE4Gp\nD0BJHiz9W6PVzh/WHYAP1uSx60DjicQYY44WqAShwEcislxEZrpl3VQ1z13eC3TztaGIzBSRbBHJ\nzs8P8VnU+pwBA8+HRX+Cct9TjsZEhvP5r85BBP48f3MrB2iMacsClSAmqmomcCFwp4ic5b1SnYGE\nfHaaq+ozqpqlqlkpKSmtEGqQm3o/VBQ7SaIRfbrEce24Xvx7+W7etBPWxpgmCkiCUNU97vN+4C1g\nPLBPRHoAuM/7AxFbm9NtGIy8Bpb8DYr2NFrt7qmDALj3rTUUlVe3VnTGmDas1ROEiMSJSMe6ZWAa\nsBZ4F7jJrXYT8E5rx9ZmTb4X1AOfP9xolW4JMbz74zOprPFw+8vZNtqrMeaEAtGC6AYsEpFVwFLg\nA1X9EHgYOE9ENgNT3Z9NUyT1gazb4Jt/QP7GRquNTEvk7imDWLr9AC98uaP14jPGtEmtniBUdZuq\njnIfw1T1Ibe8UFWnqOpAVZ2qqjYUaXOc9UuIjIP5Dx632k/OHcC49CQefH+9XdVkjDmuYLrM1ZyK\nuGQ44yew4X3Y1fgormFhwh8uHwHAP5ftaq3ojDFtkCWI9uT0OyEuBT55oNH5IgAGduvI5MEp/Gv5\nLmpqPa0XnzGmTbEE0Z5Ex8NZv4adi2DLJ8et+t0JfdhXXMljH21qpeCMMW2NJYj2ZuzNkJQOn/wO\nPI23Ds4d0hWAWYu22zhNxhifLEG0NxFRMPk/nVnn1v670WrhYcL/XjeGqloPs77c3ooBGmPaCksQ\n7dHwK50hwT/9PdRUNVrtohE9GNM7kT/P30xeUXkrBmiMaQssQbRHYWEw5QE4tBOWv9BotfAw4dGr\nRlJSUcPp//0pG/YWt16MxpigZwmivRowBdInwed/hMqSxqt1da5oAnjg3XWtFZ0xpg2wBNFe1Q0H\nXlYAi586btWnbxjLFWNS+XrbAZ60EV+NMS5LEO1ZWhZkXAJf/S8cbnxo9JjIcB66fASjeiXy+Meb\nWLgpxIdRN8YAliDav3Pvg+oy+OKx41aLjQrn77eNJ71LB+55YzU/fnUFH6/f10pBGmOCkSWI9i5l\nEIy5AZY9Dwd3HLdqQkwk/33FSHKLKnh/dR63v5zNutyi1onTGBN0LEGEgnN+A2HhzkB+ntrjVj29\nfxfGp3eu//niJxfxzMKtDeos3X6AHQWlfgnVGBM8LEGEgoSecNqPYO0b8OfR8PmjUJzXaPWXbh3P\nI1eOYM5dkwD4w5wNDZLE1X9bzDmPfcamfY1fHWWMafukLU8ck5WVpdnZ2YEOo23w1ML6d2D5i7D9\nc5BwGHSBMzTHgClOC8OHsqoa7pr9DZ/kOBP8Lbl3ChP+MB+AvslxPHDpME7v14WoCPuuYUxbISLL\nVTXrhPUsQYSgwq2w4mVY+QqU5kOnXpB5o3OuIqHnMdWraz3c9846Zi/9tr5s2tBufOSexD53SFee\n+m4msVHhLN95kH7JcSTFRbUSbVbFAAAWuUlEQVTa2zHGNI8lCHNiNVWwcY7Tqti2ACTMq1Ux9ZhW\nxYtfbueB99YDMPv20ygqr+aH/1hev/4v12fyo1dWAPDWj85gdK9ERKS13o1prqoyZ7yuA9tg8MXO\nZdH2+woJliBM8xzY5rQqvvmH06pISHNaFeNucyYjcnk8SlhYww+R2Uu/5TdvrvG52yHdOxIXHcE9\nFw4hq0+SJYxgcGA7ZD8PK/4OFYcAARQS+zjjeI24CroNC3SUxo8sQZiTU1MFm+Y6rYqtn0JkB6dF\nccZPfHY/1fl0wz7+MGcDW/Yf5sVbxjFv3V5mL204Y9349M78dOpAOsVGMjy1U6P7OlxZw/ycfUzJ\n6EZ8dEQLvbHW8dJXO/hicwFXjU1lakY3IsKD5NyMxwPbPoWlz8KmeU5rMeMSGD8Tug+HDR/Amn/D\nts9AayElw00WV0Lnfif3mtXlULAZDn3r/O2kDIaouBZ9W+bkWIIwpy5/Iyz6E6x+3eluGn09TLzb\nmW/CB49HWZ9XXP/hX1Xj4e2VexiZ1omXF+/k1SVHzmFcNKI7/zV9KD06xR6zn2cXbuOhOTkAPHDJ\nUC4dEAk57xG/9T2iIsLZmjyFP347kHOzRnDJqJ5s3V/K8NSEJrdOVNVvLZlzHl3AjkJnru/YyHDG\n9+3M1IyuXDOud7NP5LdInBVFsPJVJzEc2OrMODj2Fifpd0o9tv7hfFj/tnPF27eLnbKemVRmXMG/\nK8YxMXMEfboc9SFffhDyN0HBRudvpmCT83zoW+Coz5fE3k7ySRkMXTMgZQgkD3ImuzKtxhKEaTkH\nd8CXf3a6nzy1MOI7MOnnzj95M6zPLeY/317DtoJSDpVVEyYwpncS04Z2Y2yfJJLioqis9vDe6lxe\n+WwVNyWtZdzhBZwZtpZwUTZ7UomJDKNX7S5qVVjqyeADzwTm1Y6jY0oqHo9y6aieXJGZRlKHKBJi\nI475gP3F66t4Y8VuhqcmcOuZfZkxOhVV5VB5Ncnx0Y3GXl5Vy/eeX8Lg7h2pqVWS4qK4fVJfuhy1\nzVVPf8WGvSVckZnKW9/soaSiBoD0Lh0Y2jOBASnxvPDVDhJiIvnDFSMYkdqJ3EPlDOwWT5gINbVK\nbFQ4338pm5zcIm4Y1ZHrx/UgoVNnLv3bCg5X1vL7y4ZzxoBkX2EesT8Hlj4Dq/4J1aWQNg7G/wCG\nXgoRx77PiupaYiKPupLt0C507ZtUrnydmIK1eFRY4skgO2IUU1NrGCC5RB7YDKX7j2wTHg3JA52/\njeTBzo2aib35dMk3kL+BiYkFRBVugsLNUOs1FH1ibydZ1D06dofYRIhJhNgkiOnU6JV2QUnVeX81\nlUeeayqOKqtwWuy1lUeOhYQ5D+TIsoQ554bkqLJOvaBz35MKzxKEaXnFebD4/yB7ltN9kHEJTPoF\n9BzdrN2oKjl5Jby5YjfPLToyWVEc5UwNW84l4Ys5O3w1kdRSFJPK3w9n8YHndMK6DSO/pJLE0q1M\nj1jC9zp+Q1LZdmoJY0PUcGaXjmVe7TjySazf5y1npnPT6emEhwlvfbOHxz9ufIrV6SN7cNnoVNbl\nFrOjsJQaj5ISH03PxBhEhP/3/voG9bvERXHfJUO5aEQPvtxSwFMLtrBy1yHOGpjC8zePo+5/65Oc\n/fz2rTXsL6n0+bpheOgl++kvuQwIy+WCbiXU5m9kgOSSJIfr69WqUEosJcRSRixhMR0p9sTQuXMX\n0rp3Q6PiKKiKIiF/BR1yv3I+rEdcReWYW3l7f1cmD+5K14SY+v09tWAL767MZaN7P0v3hBi6JUQz\nbVh3bpvYl+iIMP6VvZtfv7GafpLLJWGLuTZ2KT1qdlGsHdguqcT2HEq/jEwiug5hcXEXZq3zMG14\nT07r14VenTvUv9bw++dxuLKG9C4dePQ7oxjXKwEObncSWf4G57F/w7GJw1t0gpswOrnPiUeeJdz9\nwK048mFcfdTPNZVQU+48e2qcbSTMGR5fwrx+Dj/qw9n9gPbUOF+QaqvdZa9HbbWzzlMDHne9v515\nN5z3u5Pa1BKE8Z/SQljyNCx5BiqLnCueJv0S+pze7F1VlB0m++PX6JU7lx77FxKlVeyjC4f6TWfw\nlJugZ2aDK2uKK6p5asEW+ifHc3VWmvMBs/5tWPc2FGxECWNb3CheODSaebXjKJBEjv4Tv3vqQK7M\nTOOLzQV8ubWAJdsOUFhaSVxUBIcrj/xjCx6iqCGaaqKpJopqZp7Rk0HJ0aTEwLOfrWd3gTMUiSIo\nTpxn9E/mJ1MGeX0TFMqqPWwvKKWiqpqy/dsZ37GQ3C2roGAzaZ5cIqmuf9187cRW7UmnXkPpmJrB\n3A1F5BcWEC/lTOvfgcrSYooPHSC8ppQYTylxVBAv5cTjPPLowj9qpnJgyLWk9kjjT584STE6Iozr\nxvfmB2f3I6lDFEP+68P61+zRKYa8oopGf089OsUwoW9nnrhmNJWHD7D+gPDYx5v4ckshXTtGc/OZ\n6az89lD9pc8AXTtG0zc5jorqWlbtLmJC387sOVTO7oPO5FQXDu/Or84fTL8Ur+6l2hqnxVqaDxWH\nyN2bR5fwcqKri50T6uWHfD+rQkSM0zqKjDmyHBHj9XB/joxxkoF6UK1FVJ0Pd/U451/U4zw8Hq8y\nhfBIJ3mERUJYhPMId5/ryup/jnBeLzzafY5q+Hz0uvAo5++87rXV47ym9zPacH1Cz5M+P2QJwvhf\nRREsew4W/8UZVrz36dBlgNcfdu1Rf/Ae9x/RXV9bCbuWQtVhp2986GXOidFeE5xvdc2hekyyQMKo\nSRrAoYoaqmtqiYkQqqprSIwNJzoMrzg97oeFh+rqaqitJFKrEU/1CV/2pEm40z2QPMjpkkkeVL+8\nskDYXnCYGaNS668YU1UWbysks3dSfVdQeVUty3ce5NsDZczP2cf+kkrCBEoraygsreJwZQ3Vtc7/\n9+8uHca63CLeXLGHWlW6xEVRcLiK/75iBFdkphIdEU5RWTVhYZC94yCPfLiBDXtLEIG7zh3Iz84b\n5OOQK59tyuexeRtZl+tMNhUVEcad5wxg54FSVuw8WH8+BuDZG7M4o38XHp23kRe/2lFfPrRHAheP\n7EHXjtF8krOPimoPnWIjiYsOr7/QYeZZ/fjeaX0atEoa88zCrTy/aDuTBqYwtEcC147vRYeoYy92\n2FlYyvlPLGRUWiLXje/NgK7xJHaIJC3pxK8BTrfcv7J3cf6w7g1aZm2BJQjTeqrKYMVLTtdT5eGj\nmu0nePQY6SSFPhOdb18tZX8OrHsL9q1rQhxH9e1GxDhze0fEuN/4vH+OPvINsO7bHzjJBvX9XP/t\nz42tU5rzzS/CvzcT7iuuYN66vZw3tFv9xQC7DpTx3BfbeHtlLkXl1bz344mMSGv8ijI48clyVWXZ\njoO8+NV2hnRP4K4pA+vX1XqUlbsOMiotscEVXZU1tewtqmDu2r18uHYvK3cdql8XH92wJXe0kWmd\nGNazE2N6JRIdGUan2Ej6JsfVnzy//rmv+XJLYX392MhwJg9JYWRaIh5V0pI6ECawad9hnpy/meT4\naAoOO91/YQLnDe3G2YO6Mr5vEv1T4o9573Wfme+tzuOu2d8AcPGIHozq1YnzhnanT+cOx1wK7suO\nglJ+/0EO5w7pyrj0JCprPAzr2fjFFk8t2MKizQUkdogkPTmOW8/sS0rHxs+bHY8lCGNMm6CqbM0v\n5bON+5k+sifdEqIpKq9m98Fy9hVXcO6QruwtrmD2km9ZvK0Qj8KGvGJKqxoOPNmzUwxd4qNZs6eI\nqRndePyaUXy0bh/Ldx7k4/X76pPA0Rb9x2S2F5QyZ00eIMfUTYiJYGRaIj0TY4iJDOflxTtJ6RhN\nvntO6eIRPfhw3V5qPc5nadeO0UzJ6MqI1EQqqmuJjAgjXIS+yXH0S4kjJT6asDDhN2+uaTA6QZ0u\ncVF0jIng9P5dSOkYQ2piDILw6zdWN6j3yJUjuGZc75M65pYgjDHtVq1H2ZZ/mOKKanLySjhQWsW2\n/MPsPljO+rxi/n7bBMb2SWqwzZ5D5cREhJF/uJLdB8o5WFZFh6gILh7Zo0E9VWV7QSnLdhwge8dB\nDpRWsb2wlG35R0YwvmBYd7J3HiQ5Poo5d03iQFkVy7Yf4Kuthew5VM6y7QcoaaQVFBURRlxUOAfL\nqhnWM4EHZwxjzpq9gNPtFR0RTv7hSnLyiuuvgqvzxDWjuWRUT749UEavpNiTvs+mzSYIEbkA+DMQ\nDjynqg83VtcShDGmNZVW1hATGU74CbqQPB4lr7iCmloP0RHhVNd62Ly/hM37DpN7qJyC0iqiwsM4\nf1g3Lhjew+c+VJXKGg+7D5ZTUV1LamJsi41x1tQEEVS3qYpIOPAUcB6wG1gmIu+q6vrjb2mMMf4X\n18Q7+8PChNTEhjeB9urcgXOHdGvya4kIMZHhDOgauJsIg2QcgHrjgS2quk1Vq4DXgBkBjskYY0JS\nsCWIVMB7AJ/dbpkxxphWFmwJ4oREZKaIZItIdn5+fqDDMcaYdivYEsQeoJfXz2luWT1VfUZVs1Q1\nKyUlpVWDM8aYUBJsCWIZMFBE+opIFHAt8G6AYzLGmJAUVFcxqWqNiPwYmIdzmessVV0X4LCMMSYk\nBVWCAFDVOcCcQMdhjDGhLti6mIwxxgSJoLuTujlEJB/YeZKbJwMFLRiOP1iMpy7Y44PgjzHY44Pg\njzHY4uujqie8yqdNJ4hTISLZTbnVPJAsxlMX7PFB8McY7PFB8McY7PE1xrqYjDHG+GQJwhhjjE+h\nnCCeCXQATWAxnrpgjw+CP8Zgjw+CP8Zgj8+nkD0HYYwx5vhCuQVhjDHmOEIyQYjIBSKyUUS2iMg9\nAYqhl4gsEJH1IrJORH7qlj8gIntEZKX7uMhrm9+4MW8UkfNbKc4dIrLGjSXbLessIh+LyGb3Ockt\nFxF50o1xtYhk+jm2wV7HaaWIFIvI3YE+hiIyS0T2i8har7JmHzMRucmtv1lEbmqFGB8VkQ1uHG+J\nSKJbni4i5V7H869e24x1/z62uO/jxJMxn3x8zf69+vN/vZEY/+kV3w4RWemWt/oxbBGqGlIPnCE8\ntgL9gChgFTA0AHH0ADLd5Y7AJmAo8ADwSx/1h7qxRgN93fcQ3gpx7gCSjyr7I3CPu3wP8Ii7fBEw\nFxDgNGBJK/9e9wJ9An0MgbOATGDtyR4zoDOwzX1OcpeT/BzjNCDCXX7EK8Z073pH7WepG7e47+NC\nP8bXrN+rv//XfcV41Pr/Ae4L1DFsiUcotiCCYlIiVc1T1RXucgmQw/HnvpgBvKaqlaq6HdiC814C\nYQbwkrv8EnCZV/nL6vgaSBQR3/MptrwpwFZVPd6Nk61yDFV1IXDAx2s355idD3ysqgdU9SDwMXCB\nP2NU1Y9UtW4S5K9xRlNulBtngqp+rc4n3cte76vF4zuOxn6vfv1fP16MbivgamD28fbhz2PYEkIx\nQQTdpEQikg6MAZa4RT92m/mz6roiCFzcCnwkIstFZKZb1k1V89zlvUDdPIqBPLbX0vCfMZiOITT/\nmAX67/RWnG+zdfqKyDci8rmITHLLUt246rRGjM35vQbyGE4C9qnqZq+yYDmGTRaKCSKoiEg88AZw\nt6oWA08D/YHRQB5OMzWQJqpqJnAhcKeInOW90v3WE9BL4cQZGv5S4F9uUbAdwwaC4Zgdj4j8FqgB\nXnGL8oDeqjoG+DnwqogkBCC0oP69HuU6Gn5hCZZj2CyhmCBOOClRaxGRSJzk8IqqvgmgqvtUtVZV\nPcCzHOkCCUjcqrrHfd4PvOXGs6+u68h93h/IGHGS1wpV3efGGlTH0NXcYxaQWEXkZmA6cL2byHC7\nbgrd5eU4/fqD3Hi8u6H8GuNJ/F4DdQwjgCuAf9aVBcsxbK5QTBBBMSmR20f5PJCjqo97lXv32V8O\n1F0h8S5wrYhEi0hfYCDOyS1/xhgnIh3rlnFOYq51Y6m7quYm4B2vGG90r8w5DSjy6lbxpwbf1oLp\nGHpp7jGbB0wTkSS3K2WaW+Y3InIB8GvgUlUt8ypPEZFwd7kfznHb5sZZLCKnuX/PN3q9L3/E19zf\na6D+16cCG1S1vusoWI5hswX6LHkgHjhXjmzCyeK/DVAME3G6GVYDK93HRcDfgTVu+btAD69tfuvG\nvJFWuNIB5+qPVe5jXd2xAroA84HNwCdAZ7dcgKfcGNcAWa0QYxxQCHTyKgvoMcRJVnlANU6f8m0n\nc8xwzgNscR+3tEKMW3D67Ov+Hv/q1r3S/f2vBFYAl3jtJwvng3or8H+4N9/6Kb5m/179+b/uK0a3\n/EXgh0fVbfVj2BIPu5PaGGOMT6HYxWSMMaYJLEEYY4zxyRKEMcYYnyxBGGOM8ckShDHGGJ8sQZig\nJiK17uiXq0RkhYiccYL6iSLyoybs9zMRaXNzBPuTiLwoIlcFOg4TPCxBmGBXrqqjVXUU8Bvgv09Q\nPxE4YYIIFPcuW2PaBEsQpi1JAA6CM4aViMx3WxVrRKRulM6Hgf5uq+NRt+5/uHVWicjDXvv7jogs\nFZFNdYOniUi4OPMiLHMHhfuBW95DRBa6+13rNdhaPXHG//+j+1pLRWSAW/6iiPxVRJYAfxRnboi3\n3f1/LSIjvd7TC+72q0XkSrd8mogsdt/rv9zxuxCRh8WZT2S1iDzmln3HjW+ViCw8wXsSEfk/ceZL\n+ATo2pK/LNP22bcZE+xixZl0JQZnDo1z3fIK4HJVLRaRZOBrEXkXZ66F4ao6GkBELsQZ4nmCqpaJ\nSGevfUeo6nhxJp65H2eIhNtwhrsYJyLRwJci8hHO2DrzVPUhd8iEDo3EW6SqI0TkRuAJnHGNwBlj\n5wxVrRWR/wW+UdXLRORcnCGeRwP/Vbe9G3uS+97+E5iqqqUi8h/Az0XkKZzhJoaoqoo7uQ9wH3C+\nqu7xKmvsPY0BBuPMp9ANWA/MatJvxYQESxAm2JV7fdifDrwsIsNxhqj4gzijy3pwhkju5mP7qcAL\n6o4tpKre4/e/6T4vx5nQBZwxj0Z69cV3whk3ZxkwS5wBFt9W1ZWNxDvb6/lPXuX/UtVad3kiztAL\nqOqnItJFnJE9p+KMF4S77qCITMf5AP/SGaqHKGAxUISTJJ8XkfeB993NvgReFJHXvd5fY+/pLGC2\nG1euiHzayHsyIcoShGkzVHWx+406BWeMnRRgrKpWi8gOnFZGc1S6z7Uc+V8Q4CeqeszAeG4yuhjn\nA/hxVX3ZV5iNLJc2M7b6l8WZOOg6H/GMx5ko6Srgx8C5qvpDEZngxrlcRMY29p7Ea8pOY3yxcxCm\nzRCRITjTSBbifAve7yaHyThTjQKU4EzhWudj4BYR6eDuw7uLyZd5wB1uSwERGSTOqLZ9cCaAeRZ4\nDmeqSV+u8Xpe3EidL4Dr3f2fAxSoMxfIx8CdXu83CWdmtzO9zmfEuTHF4wxQOAf4GTDKXd9fVZeo\n6n1APs5w1z7fE7AQuMY9R9EDmHyCY2NCjLUgTLCrOwcBzjfhm9x+/FeA90RkDZANbABQ1UIR+VKc\nieTnquqvRGQ0kC0iVcAc4N7jvN5zON1NK8Tp08nHmQLyHOBXIlINHMYZltmXJBFZjdM6OeZbv+sB\nnO6q1UAZR4YB/z3wlBt7LfA7VX1TnDkaZrvnD8A5J1ECvCMiMe5x+bm77lERGeiWzccZiXd1I+/p\nLZxzOuuBb2k8oZkQZaO5GtNC3G6uLFUtCHQsxrQE62Iyxhjjk7UgjDHG+GQtCGOMMT5ZgjDGGOOT\nJQhjjDE+WYIwxhjjkyUIY4wxPlmCMMYY49P/B0iBtCVzVx4dAAAAAElFTkSuQmCC\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "geTYEndBzt4F",
"colab_type": "text"
},
"source": [
"The above graph shows the change is loss during the course of training the network. At the beginning of the training we can see a high loss value. As the networks learned from the data, the loss started to drop until it could no longer improve during the course of training.\n",
"\n",
"The validation shows a relatively consistent and low loss values. \n",
"\n",
"\n",
"**Note :**\n",
"\n",
"The validation losses are only calculated once per epoch, whereas training losses are calculated after \n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "eFwkk6DJWYRE",
"colab_type": "code",
"outputId": "f23ceed7-798a-4ab5-802e-d081768a747a",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 283
}
},
"source": [
"#Plotting Momentum & Learning Rate\n",
"learn.recorder.plot_lr(show_moms=True)\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x288 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "6TA6_2R11Njc",
"colab_type": "text"
},
"source": [
"The above plots learning rate and momentum during the course of training.\n",
"\n"
]
},
{
"cell_type": "code",
"metadata": {
"id": "YWPxEegNWlPS",
"colab_type": "code",
"outputId": "b2fca3df-d25c-49d8-8b18-6e963bf3d9d0",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 500
}
},
"source": [
"#Plotting the metrics of evaluation\n",
"learn.recorder.plot_metrics()\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nAAAASUVORK5CYII=\n",
"text/plain": [
"<Figure size 432x576 with 2 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "xz7HGNnb8ir6",
"colab_type": "text"
},
"source": [
"The decreasing RMSE and increasing R-Squared depicts the Goodness Of Fit.\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "aveEvEXHxv55",
"colab_type": "text"
},
"source": [
"### Exploring Validation Predictions"
]
},
{
"cell_type": "code",
"metadata": {
"id": "RLGU4fqRXmh0",
"colab_type": "code",
"colab": {}
},
"source": [
"val = train_data.tail(1203)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "b94vi3UnZyJ9",
"colab_type": "code",
"colab": {}
},
"source": [
"#Converting the prediction to DataFrame for Comparing\n",
"val_preds = learn.get_preds(ds_type=DatasetType.Valid)[0]\n",
"val_preds = [i[0] for i in val_preds.tolist()] \n",
"val['Predicted'] = val_preds"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "aKgGxIpCa_Gg",
"colab_type": "code",
"outputId": "88c79fda-8075-4158-9b3f-2defc2f77ec7",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 204
}
},
"source": [
"val.head()"
],
"execution_count": 0,
"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>Brand</th>\n",
" <th>Model</th>\n",
" <th>Location</th>\n",
" <th>Year</th>\n",
" <th>Kilometers_Driven</th>\n",
" <th>Fuel_Type</th>\n",
" <th>Transmission</th>\n",
" <th>Owner_Type</th>\n",
" <th>Mileage</th>\n",
" <th>Engine</th>\n",
" <th>Power</th>\n",
" <th>Seats</th>\n",
" <th>New_Price</th>\n",
" <th>Price</th>\n",
" <th>Predicted</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>4816</th>\n",
" <td>BMW</td>\n",
" <td>5 Series 2003-2012 540i Sedan</td>\n",
" <td>Delhi</td>\n",
" <td>2006</td>\n",
" <td>48000</td>\n",
" <td>Petrol</td>\n",
" <td>Automatic</td>\n",
" <td>Second</td>\n",
" <td>11.62</td>\n",
" <td>2979.0</td>\n",
" <td>306.00</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>6.99</td>\n",
" <td>10.922736</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4817</th>\n",
" <td>Hyundai</td>\n",
" <td>Elantra CRDi SX</td>\n",
" <td>Coimbatore</td>\n",
" <td>2019</td>\n",
" <td>41871</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>22.70</td>\n",
" <td>1582.0</td>\n",
" <td>126.20</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>15.57</td>\n",
" <td>9.735545</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4818</th>\n",
" <td>Tata</td>\n",
" <td>Sumo EX</td>\n",
" <td>Coimbatore</td>\n",
" <td>2015</td>\n",
" <td>84931</td>\n",
" <td>Diesel</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>15.30</td>\n",
" <td>2956.0</td>\n",
" <td>83.80</td>\n",
" <td>7.0</td>\n",
" <td>0.00</td>\n",
" <td>5.29</td>\n",
" <td>5.969137</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4819</th>\n",
" <td>Datsun</td>\n",
" <td>redi-GO T</td>\n",
" <td>Kolkata</td>\n",
" <td>2016</td>\n",
" <td>15000</td>\n",
" <td>Petrol</td>\n",
" <td>Manual</td>\n",
" <td>First</td>\n",
" <td>22.70</td>\n",
" <td>799.0</td>\n",
" <td>53.64</td>\n",
" <td>5.0</td>\n",
" <td>3.98</td>\n",
" <td>2.25</td>\n",
" <td>2.973508</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4820</th>\n",
" <td>BMW</td>\n",
" <td>X5 xDrive 30d</td>\n",
" <td>Chennai</td>\n",
" <td>2009</td>\n",
" <td>110000</td>\n",
" <td>Diesel</td>\n",
" <td>Automatic</td>\n",
" <td>First</td>\n",
" <td>11.70</td>\n",
" <td>2993.0</td>\n",
" <td>245.00</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>20.00</td>\n",
" <td>17.299963</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Brand Model ... Price Predicted\n",
"4816 BMW 5 Series 2003-2012 540i Sedan ... 6.99 10.922736\n",
"4817 Hyundai Elantra CRDi SX ... 15.57 9.735545\n",
"4818 Tata Sumo EX ... 5.29 5.969137\n",
"4819 Datsun redi-GO T ... 2.25 2.973508\n",
"4820 BMW X5 xDrive 30d ... 20.00 17.299963\n",
"\n",
"[5 rows x 15 columns]"
]
},
"metadata": {
"tags": []
},
"execution_count": 31
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "MxWc5nVF20ax",
"colab_type": "text"
},
"source": [
"#### Calculating RMLSE For Validation Predictions"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "efhkDuVK6iMI",
"colab_type": "text"
},
"source": [
"Since the metric used in the hackathon for evaluating the predictions is RMSLE , we will calculate te same for the validation predictions to evaluate our model."
]
},
{
"cell_type": "code",
"metadata": {
"colab_type": "code",
"id": "5VxjcGMfIQDE",
"outputId": "a0da833d-e08a-4f86-afa8-b5ac33536183",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"import numpy as np\n",
"Y_true = val['Price']\n",
"pred = val['Predicted']\n",
"\n",
"\n",
"#RMSLE\n",
"error = np.square(np.log10(pred + 1) - np.log10(Y_true +1)).mean() ** 0.5\n",
"\n",
"score = 1 - error\n",
"print(\"SCORE For Validation : \",score)\n"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"SCORE For Validation : 0.9172702494251687\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "iDw_LeRz3KJV",
"colab_type": "text"
},
"source": [
"#### A Simple Analysis On Predictions"
]
},
{
"cell_type": "code",
"metadata": {
"id": "WISX6CKIWzK-",
"colab_type": "code",
"outputId": "b5abf55b-16c8-43bb-ab6d-c708e382c764",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 241
}
},
"source": [
"#Plotting The Average Price For A Given Car Brand, -- Actual vs Predicted\n",
"\n",
"import matplotlib.pyplot as plt\n",
"\n",
"plt.figure(figsize=(30, 3))\n",
"plt.plot(val.groupby(['Brand']).mean()['Price'], linewidth = 3, )\n",
"\n",
"plt.plot(val.groupby(['Brand']).mean()['Predicted'],linewidth = 5, ls = '--')\n",
"plt.title('Average Price By Brands')\n",
"plt.xlabel('Brands')\n",
"plt.ylabel('Price In Lacs')\n",
"plt.legend()\n",
"plt.show()"
],
"execution_count": 0,
"outputs": [
{
"output_type": "display_data",
"data": {
"image/png": "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\nzG4wsyr+V08z61CC930ko4A/mVl/Mwszs6Zm1t45txH4HnjOzGr6r7Uys37FGdTMmgEDgcX5Tn8B\nnIT38x1b3ADNrAZeecbFRXSLwUswpgERZvYPoGYR/fOb4b/3Lv/P+lKgV775B5tZazMzIAPvf0e+\n4sYvIiIiIiLHHyXDRERERESkPBoKvOOcW+ec27T/BbwCXJdv769xQD9gSr5yigAv4e2D9b2Z7QJm\nAicXMd9YvFJ764El/v753YG3WmwT3v5V4/CSZ/tXIp2LlwDa4O/zNN5KtlLlnJsN/AlvP7AM4Be8\nEongJegi/fHvAD7B2zurMFeZ2W4z242359Y04F/55tqLt/dZS7xkYFGa5BtrLRCLVyqyMN8Bk/BW\n2q0Fsii6PGSAcy4bryzmMGA7cNUh8bUBfsTbC20G8Jpz7qfijC0iIiIiIscn0z7CIiIiIiIiR8fM\nngYaOeeGHrFzBeZfsdXWOXd9qGMREREREREpKa0MExEREREROQIza29mXczTCxgOfB7quILJzGLx\n3ufIUMciIiIiIiJyLJQMExERERERObIYvFJ8e4CPgOeAL0MaURCZ2Y14ZQu/dc5NDXU8IiIiIiIi\nx0JlEkVEREREREREREREROS4pZVhIiIiIiIiIiIiIiIictxSMkxERERERERERERERESOWxGhDuBY\n1KtXz8XHx4c6DBERERERERERERERESljc+fO3eqcq3+kfhU6GRYfH09iYmKowxARERERERERERER\nEZEyZmZri9NPZRJFRERERERERERERETkuKVkmIiIiIiIiIiIiIiIiBy3gpYMM7O3zWyLmf2R79wz\nZrbUzBaZ2edmVjvftYfNbKWZLTOzAcGKS0RERERERERERERERCqPYO4ZNhp4BRib79wPwMPOuVwz\nexp4GHjQzDoCVwOdgCbAj2bW1jmXF8T4RERERERESk3Sxp3k+Rydm9YKdSgiIiIiIlJO5OTkkJqa\nSlZWVqhDqdCioqJo1qwZVapUKdH9QUuGOeemmln8Iee+z9ecCVzuP74I+NA5tw9YY2YrgV7AjGDF\nJyIiIiIiUlp+XraFP4+egwNeuro7F3ZtEuqQRERERESkHEhNTSUmJob4+HjMLNThVEjOObZt20Zq\naiotW7Ys0Rih3DPsz8C3/uOmQEq+a6n+c4cxs5vMLNHMEtPS0oIcooiIiIiIyJG9PHkFPgfOwb8n\n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\no0fp/Iz8tDJMRERERESkCD8t3ULK9r0A1KpWhYu6NS3xWJERYTx8XvtA+/1Z61iVtvuYYxQRERER\nETmS3Nxcvv32W0488UQAVqxYwW233cbixYupXr06I0aM4Mcff2TevHkkJCTw/PPPk5WVxY033sjX\nX3/N3Llz2bRpU4Fj33XXXfTr14+FCxcyb948OnXqxFNPPUWrVq1YsGABzzzzDN9//z0rVqxg9uzZ\nLFiwgLlz5zJ16lTmzp3Lhx9+yIIFC5g4cSJz5swp9feulWEiIiIiIiJFGJ1vb6+rezanWmT4MY13\nTseGnNwylllrtpPrczw5cSn/G5pwjFGKiIiIiIgUbO/evXTr1g3wVoYNHz6cDRs2EBcXR+/evQGY\nOXMmS5Ys4ZRTTgEgOzubPn36sHTpUlq2bEmbNl7J9+uvv56RI0ceNseUKVMYO3Ys4O1RVqtWLXbs\n2HFQn++//57vv/+e7t27A7B7925WrFjBrl27uOSSS4iOjga88oulLWjJMDN7GxgMbHHOdfafiwU+\nAuKBZOBK59wO82qMvAQMAjKBYc65ecGKTUREREREpDhWbtnFbyu3AhBmcH3vuGMe08z4f+d35IJX\nfgPgx6TNTF+1lb6t6h3z2CIiIiIiIofav2fYoapXrx44ds5xzjnnMG7cuIP6FHRfSTnnePjhh7n5\n5psPOv/iiy+W2hyFCWaZxNHAwEPOPQRMds61ASb72wDnAW38r5uA14MYl4iIiIiISLGMmb42cHx2\nh4Y0j40ulXFPbFaLS7sfKLf4+DdJ+HyuVMYWERERERE5Wr1792batGmsXLkSgD179rB8+XLat29P\ncnIyq1atAjgsWbZf//79ef11L7WTl5dHRkYGMTEx7Nq1K9BnwIABvP322+ze7ZWKX79+PVu2bOH0\n00/niy++YO/evezatYuvv/661N9f0FaGOeemmln8IacvAs7wH48BfgYe9J8f65xzwEwzq21mjZ1z\nG4MVn4iIiIiISFF2ZuXw6bzUQHtY3/hSHf+vA9ox8Y+NZOX4WLxhJ5/NX8/lPZqV6hwiIiIiIlLO\nnPmw9ypn6tevz+jRo7nmmmvYt28fACNGjKBt27aMHDmS888/n+joaE477bSDElz7vfTSS9x0002M\nGjWK8PBwXn/9dfr06cMpp5xC586dOe+883jmmWdISkqiT58+ANSoUYP33nuPk046iauuuoquXbvS\n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\nTKz3w8ANsUXansAD5YiYc84555xzzlUKLwxzzjnnnHPOuZGz0cz2MrOdgMOBiyUpfne3ma1ILHua\npAeBO4EZwJw4vw34U5y+F5gVpw8ALovTlyTWcw9wiqQzgd3N7PUSxsc555xzzjnnKo4XhjnnnHPO\nOedcBTCzO4BJwOQ4qyX7naQFwDuAN8UWYPcDDfHrdjOzON1Jz7GhjV7M7FbgLcDzwCJJJ5UwGs45\n55xzzjlXcbwwzDnnnHPOOecqgKSdgDSwJsfXzcA6M2uNy+1fxCpvAz4Up49PbGdb4GUzO5/QNeO8\nIQXcOeecc8455ypcTf+LOOecc84555wrkzGSsmN2CTjZzDq7e0rs8hfgE5IeA5YRukrsz2eA30j6\nInBNYv4C4L8ktQMbAG8Z5pxzzjnnnKtq6u5NwznnnHPOOeecc84555xzzrnq4t0kOuecc84555xz\nzjnnnHPOuarlhWHOOeecc84555xzzjnnnHOuanlhmHPOOeecc84555xzzjnnnKtaXhjmnHPOOeec\nc84555xzzjnnqpYXhjnnnHPOOeecc84555xzzrmq5YVhzjnnnHPOOeecc84555xzrmp5YZhzzjnn\nnHPOOeecc84555yrWl4Y5pxzzjnnnHPOOeecc84556rW/wfceWuD9XQ1JAAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 2160x216 with 1 Axes>"
]
},
"metadata": {
"tags": []
}
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "c_1NzLkAQ_ao",
"colab_type": "text"
},
"source": [
"The above graph shows comparison of the the average actual price by Brand and the predicted price."
]
},
{
"cell_type": "code",
"metadata": {
"id": "r_1PdfhD3xQc",
"colab_type": "code",
"outputId": "cef2bc78-8cfc-4eb6-db41-85bdc4491358",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"print(\"R-Squared For Validation Set : \", r2_score(learn.get_preds(ds_type=DatasetType.Valid)[0], learn.get_preds(ds_type=DatasetType.Valid)[1]))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"R-Squared For Validation Set : tensor(0.9025)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "HeeVpQ_mzF6t",
"colab_type": "code",
"outputId": "ea81b945-c738-4e2e-9211-a3cf3ea4c395",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 51
}
},
"source": [
"print(\"\\nRMSE For Validation Set : \",root_mean_squared_error(learn.get_preds(ds_type=DatasetType.Valid)[0], learn.get_preds(ds_type=DatasetType.Valid)[1]))"
],
"execution_count": 0,
"outputs": [
{
"output_type": "stream",
"text": [
"\n",
"RMSE For Validation Set : tensor(3.5719)\n"
],
"name": "stdout"
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "7qFsgJtBWgG3",
"colab_type": "text"
},
"source": [
"###Predicting For Test Data"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "q11vuGb7Vkpp",
"colab_type": "text"
},
"source": [
"####Predicting For A Single Row OF Test Set"
]
},
{
"cell_type": "code",
"metadata": {
"id": "hiyDn-uLa6id",
"colab_type": "code",
"outputId": "9b4a0b6c-74d2-446a-d076-8747d3717c43",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 255
}
},
"source": [
"#Test set data for row 0\n",
"test_data.iloc[0]"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"Brand Maruti\n",
"Model Alto K10 LXI CNG\n",
"Location Delhi\n",
"Year 2014\n",
"Kilometers_Driven 40929\n",
"Fuel_Type CNG\n",
"Transmission Manual\n",
"Owner_Type First\n",
"Mileage 32.26\n",
"Engine 998\n",
"Power 58.2\n",
"Seats 4\n",
"New_Price 0\n",
"Name: 0, dtype: object"
]
},
"metadata": {
"tags": []
},
"execution_count": 36
}
]
},
{
"cell_type": "code",
"metadata": {
"id": "8I6LCzrmbO0z",
"colab_type": "code",
"outputId": "8a99d4e6-07e4-4cf3-e82f-528e4c78fe51",
"colab": {
"base_uri": "https://localhost:8080/",
"height": 34
}
},
"source": [
"#Prediction in float for Test set data for row 0\n",
"float(learn.predict(test_data.iloc[0])[1])"
],
"execution_count": 0,
"outputs": [
{
"output_type": "execute_result",
"data": {
"text/plain": [
"3.432666063308716"
]
},
"metadata": {
"tags": []
},
"execution_count": 37
}
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HhrV-irCopGk",
"colab_type": "text"
},
"source": [
"####Predicting For Test Set"
]
},
{
"cell_type": "code",
"metadata": {
"id": "hIzD49jsZ8R4",
"colab_type": "code",
"colab": {}
},
"source": [
"test_predictions = learn.get_preds(ds_type=DatasetType.Test)[0]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "b1DXjHPQ--EH",
"colab_type": "code",
"colab": {}
},
"source": [
"#Converting the tensor output to a list of predicted values\n",
"test_predictions = [i[0] for i in test_predictions.tolist()]"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "qMaeW6gI_jDH",
"colab_type": "code",
"colab": {}
},
"source": [
"#Converting the prediction to . a dataframe\n",
"test_predictions = pd.DataFrame(test_predictions, columns = ['Price'])"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "code",
"metadata": {
"id": "KFFvii6ognQn",
"colab_type": "code",
"colab": {}
},
"source": [
"#Writing the predictions to an excel file.\n",
"predictions.to_excel(\"Fast_ai_solution.xlsx\", index = False)"
],
"execution_count": 0,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "hPPigGmAos3r",
"colab_type": "text"
},
"source": [
"**Submit the above file [here](https://www.machinehack.com/course/predicting-the-costs-of-used-cars-hackathon-by-imarticus/leaderboard) to find out your score. Good Luck!**\n"
]
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment