diff --git a/Disertationmainfile5.ipynb b/Disertationmainfile5.ipynb deleted file mode 100644 index 1a872625163868b59b4b39ceefefa04835e513fa..0000000000000000000000000000000000000000 --- a/Disertationmainfile5.ipynb +++ /dev/null @@ -1,1478 +0,0 @@ -{ - "cells": [ - { - "cell_type": "markdown", - "metadata": { - "_uuid": "886dde36801814b005047755c12ce3e3a9b1c441" - }, - "source": [ - "# **Accident Severity Classification**" - ] - }, - { - "cell_type": "code", - "execution_count": 1, - "metadata": { - "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19", - "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5" - }, - "outputs": [], - "source": [ - "\n", - "import numpy as np\n", - "import pandas as pd \n", - "from datetime import datetime as dt\n", - "import time\n", - "import matplotlib.pyplot as plt\n", - "import warnings\n", - "from sklearn.feature_selection import VarianceThreshold\n", - "from sklearn.ensemble import RandomForestClassifier\n", - "from sklearn.impute import SimpleImputer\n", - "from sklearn.metrics import roc_auc_score\n", - "from sklearn.pipeline import Pipeline, FeatureUnion\n", - "from sklearn.preprocessing import MinMaxScaler, FunctionTransformer, OneHotEncoder, KBinsDiscretizer, MaxAbsScaler\n", - "from sklearn.model_selection import train_test_split as split\n", - "from sklearn.metrics import confusion_matrix, classification_report, accuracy_score\n", - "from sklearn.linear_model import LogisticRegression\n", - "import seaborn as sns\n", - "sns.set()\n", - "import math\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": { - "_cell_guid": "79c7e3d0-c299-4dcb-8224-4455121ee9b0", - "_uuid": "d629ff2d2480ee46fbb7e2d37f6b5fab8052498a" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(2058408, 57)\n" - ] - }, - { - "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>Accident_Index</th>\n", - " <th>Age_Band_of_Driver</th>\n", - " <th>Age_of_Vehicle</th>\n", - " <th>Driver_Home_Area_Type</th>\n", - " <th>Driver_IMD_Decile</th>\n", - " <th>Engine_Capacity_.CC.</th>\n", - " <th>Hit_Object_in_Carriageway</th>\n", - " <th>Hit_Object_off_Carriageway</th>\n", - " <th>Journey_Purpose_of_Driver</th>\n", - " <th>Junction_Location</th>\n", - " <th>...</th>\n", - " <th>Police_Force</th>\n", - " <th>Road_Surface_Conditions</th>\n", - " <th>Road_Type</th>\n", - " <th>Special_Conditions_at_Site</th>\n", - " <th>Speed_limit</th>\n", - " <th>Time</th>\n", - " <th>Urban_or_Rural_Area</th>\n", - " <th>Weather_Conditions</th>\n", - " <th>Year_y</th>\n", - " <th>InScotland</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>0</th>\n", - " <td>200501BS00002</td>\n", - " <td>36 - 45</td>\n", - " <td>3.0</td>\n", - " <td>Data missing or out of range</td>\n", - " <td>NaN</td>\n", - " <td>8268.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>Journey as part of work</td>\n", - " <td>Leaving roundabout</td>\n", - " <td>...</td>\n", - " <td>Metropolitan Police</td>\n", - " <td>Dry</td>\n", - " <td>Dual carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>17:36</td>\n", - " <td>Urban</td>\n", - " <td>Fine no high winds</td>\n", - " <td>2005</td>\n", - " <td>No</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1</th>\n", - " <td>200501BS00003</td>\n", - " <td>26 - 35</td>\n", - " <td>5.0</td>\n", - " <td>Urban area</td>\n", - " <td>3.0</td>\n", - " <td>8300.0</td>\n", - " <td>Parked vehicle</td>\n", - " <td>None</td>\n", - " <td>Journey as part of work</td>\n", - " <td>Not at or within 20 metres of junction</td>\n", - " <td>...</td>\n", - " <td>Metropolitan Police</td>\n", - " <td>Dry</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>00:15</td>\n", - " <td>Urban</td>\n", - " <td>Fine no high winds</td>\n", - " <td>2005</td>\n", - " <td>No</td>\n", - " </tr>\n", - " <tr>\n", - " <th>2</th>\n", - " <td>200501BS00004</td>\n", - " <td>46 - 55</td>\n", - " <td>4.0</td>\n", - " <td>Urban area</td>\n", - " <td>1.0</td>\n", - " <td>1769.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>Other/Not known (2005-10)</td>\n", - " <td>Not at or within 20 metres of junction</td>\n", - " <td>...</td>\n", - " <td>Metropolitan Police</td>\n", - " <td>Dry</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>10:35</td>\n", - " <td>Urban</td>\n", - " <td>Fine no high winds</td>\n", - " <td>2005</td>\n", - " <td>No</td>\n", - " </tr>\n", - " <tr>\n", - " <th>3</th>\n", - " <td>200501BS00005</td>\n", - " <td>46 - 55</td>\n", - " <td>10.0</td>\n", - " <td>Data missing or out of range</td>\n", - " <td>NaN</td>\n", - " <td>85.0</td>\n", - " <td>Kerb</td>\n", - " <td>None</td>\n", - " <td>Other/Not known (2005-10)</td>\n", - " <td>Not at or within 20 metres of junction</td>\n", - " <td>...</td>\n", - " <td>Metropolitan Police</td>\n", - " <td>Wet or damp</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>21:13</td>\n", - " <td>Urban</td>\n", - " <td>Fine no high winds</td>\n", - " <td>2005</td>\n", - " <td>No</td>\n", - " </tr>\n", - " <tr>\n", - " <th>4</th>\n", - " <td>200501BS00006</td>\n", - " <td>46 - 55</td>\n", - " <td>1.0</td>\n", - " <td>Urban area</td>\n", - " <td>4.0</td>\n", - " <td>2976.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>Other/Not known (2005-10)</td>\n", - " <td>Not at or within 20 metres of junction</td>\n", - " <td>...</td>\n", - " <td>Metropolitan Police</td>\n", - " <td>Wet or damp</td>\n", - " <td>Single carriageway</td>\n", - " <td>Oil or diesel</td>\n", - " <td>30.0</td>\n", - " <td>12:40</td>\n", - " <td>Urban</td>\n", - " <td>Raining no high winds</td>\n", - " <td>2005</td>\n", - " <td>No</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>5 rows × 57 columns</p>\n", - "</div>" - ], - "text/plain": [ - " Accident_Index Age_Band_of_Driver Age_of_Vehicle \\\n", - "0 200501BS00002 36 - 45 3.0 \n", - "1 200501BS00003 26 - 35 5.0 \n", - "2 200501BS00004 46 - 55 4.0 \n", - "3 200501BS00005 46 - 55 10.0 \n", - "4 200501BS00006 46 - 55 1.0 \n", - "\n", - " Driver_Home_Area_Type Driver_IMD_Decile Engine_Capacity_.CC. \\\n", - "0 Data missing or out of range NaN 8268.0 \n", - "1 Urban area 3.0 8300.0 \n", - "2 Urban area 1.0 1769.0 \n", - "3 Data missing or out of range NaN 85.0 \n", - "4 Urban area 4.0 2976.0 \n", - "\n", - " Hit_Object_in_Carriageway Hit_Object_off_Carriageway \\\n", - "0 None None \n", - "1 Parked vehicle None \n", - "2 None None \n", - "3 Kerb None \n", - "4 None None \n", - "\n", - " Journey_Purpose_of_Driver Junction_Location ... \\\n", - "0 Journey as part of work Leaving roundabout ... \n", - "1 Journey as part of work Not at or within 20 metres of junction ... \n", - "2 Other/Not known (2005-10) Not at or within 20 metres of junction ... \n", - "3 Other/Not known (2005-10) Not at or within 20 metres of junction ... \n", - "4 Other/Not known (2005-10) Not at or within 20 metres of junction ... \n", - "\n", - " Police_Force Road_Surface_Conditions Road_Type \\\n", - "0 Metropolitan Police Dry Dual carriageway \n", - "1 Metropolitan Police Dry Single carriageway \n", - "2 Metropolitan Police Dry Single carriageway \n", - "3 Metropolitan Police Wet or damp Single carriageway \n", - "4 Metropolitan Police Wet or damp Single carriageway \n", - "\n", - " Special_Conditions_at_Site Speed_limit Time Urban_or_Rural_Area \\\n", - "0 None 30.0 17:36 Urban \n", - "1 None 30.0 00:15 Urban \n", - "2 None 30.0 10:35 Urban \n", - "3 None 30.0 21:13 Urban \n", - "4 Oil or diesel 30.0 12:40 Urban \n", - "\n", - " Weather_Conditions Year_y InScotland \n", - "0 Fine no high winds 2005 No \n", - "1 Fine no high winds 2005 No \n", - "2 Fine no high winds 2005 No \n", - "3 Fine no high winds 2005 No \n", - "4 Raining no high winds 2005 No \n", - "\n", - "[5 rows x 57 columns]" - ] - }, - "execution_count": 2, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "acc = pd.read_csv('../Downloads/Accident_Information.csv')\n", - "veh = pd.read_csv('../Downloads/Vehicle_Information.csv', encoding='ISO-8859-1')\n", - "\n", - "dataofcoll = pd.merge(veh, acc, how = 'inner', on = 'Accident_Index')\n", - "\n", - "print(dataofcoll.shape)\n", - "dataofcoll.head()" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "metadata": { - "_uuid": "1da95d00002e2e75d44b81b9be1e1a6471d7664e", - "scrolled": true - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(617522, 57)\n" - ] - } - ], - "source": [ - "\n", - "weights = np.where(dataofcoll['Accident_Severity'] == 'Slight', .2, .8)\n", - "accident = dataofcoll.sample(frac=0.3, replace=True, weights=weights)\n", - "print(accident.shape)" - ] - }, - { - "cell_type": "code", - "execution_count": 4, - "metadata": { - "_uuid": "3dc8d223d250fa4b986b1f82eababf7e13f4fedf" - }, - "outputs": [], - "source": [ - "accident2 = accident[['Accident_Index', '1st_Road_Class','Day_of_Week', 'Junction_Detail','Light_Conditions', 'Number_of_Casualties',\n", - " 'Number_of_Vehicles', 'Road_Surface_Conditions', 'Road_Type', 'Special_Conditions_at_Site', 'Speed_limit',\n", - " 'Time', 'Urban_or_Rural_Area', 'Weather_Conditions', 'Age_Band_of_Driver', 'Age_of_Vehicle',\n", - " 'Hit_Object_in_Carriageway', 'Hit_Object_off_Carriageway', 'make', 'Engine_Capacity_.CC.', 'Sex_of_Driver',\n", - " 'Skidding_and_Overturning', 'Vehicle_Manoeuvre', 'Vehicle_Type', 'Accident_Severity'\n", - " ]]" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "_uuid": "dd7d70a22c6f0813fc8dfd47e33d9c998a0ba0ef" - }, - "source": [ - "## **From multiclass to two-classes**" - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": { - "_uuid": "6312d213b3fd3484e20fa83a1f2ad5bb6e665983", - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "1 0.601067\n", - "0 0.398933\n", - "Name: Accident_Severity_Slight, dtype: float64" - ] - }, - "execution_count": 5, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "accident2['Accident_Severity'] = accident2['Accident_Severity'].replace(['Serious', 'Fatal'], 'Serious or Fatal')\n", - "accident2 = pd.get_dummies(accident2, columns=['Accident_Severity'])\n", - "accident2 = accident2.drop('Accident_Severity_Serious or Fatal', axis=1)\n", - "accident2.Accident_Severity_Slight.value_counts(normalize=True)" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "metadata": { - "_uuid": "1dae034fb2052895e86a02f619a6877f67375861" - }, - "outputs": [ - { - "data": { - "text/plain": [ - "<Figure size 1008x360 with 0 Axes>" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "\n", - "accident_slight = accident2.Accident_Severity_Slight == 1\n", - "accident_slight = accident2.Accident_Severity_Slight == 0\n" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": { - "_uuid": "8e64e49c0d3b7f88d739186aa67312576f06dc82" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "(617522, 23) (617522,)\n" - ] - } - ], - "source": [ - "X = accident2.drop(['Accident_Index','Accident_Severity_Slight'], axis=1)\n", - "y = accident2.Accident_Severity_Slight\n", - "print(X.shape,\n", - " y.shape)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "_uuid": "e002c2d140cf892124efcd331e5564ffdf43e682" - }, - "source": [ - "# **3. Training/Predicting Pipeline**\n", - "## **Transform Speed Limit**" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": { - "_uuid": "de6a9c22bfe0ae0fd69631b27a4bb174da9d8e2f" - }, - "outputs": [], - "source": [ - "def onecodespeed(accident):\n", - " return accident[['Speed_limit']]\n", - "\n", - "FullTransformer_SpeedLimit = Pipeline([(\"Select_Speed_Limit\", FunctionTransformer(func=onecodespeed, validate=False)),\n", - " (\"Fill_Null\", SimpleImputer(missing_values=np.nan, strategy='most_frequent')),\n", - " (\"One_Hot_Encoder\", OneHotEncoder(sparse = False, handle_unknown='ignore'))\n", - " ])" - ] - }, - { - "cell_type": "code", - "execution_count": 10, - "metadata": { - "_uuid": "b0d8ea39452e796de213ee23d2f2a18684be547a" - }, - "outputs": [], - "source": [ - "def car(accident):\n", - " list_of_small_makers = list(dataofcoll['make'].value_counts()[dataofcoll['make'].value_counts() < 2000].index)\n", - " return accident['make'].replace(list_of_small_makers, 'Other').to_frame()\n", - "\n", - "FullTransformertoOnMake = Pipeline([(\"Select_Make\", FunctionTransformer(func=car, validate=False)),\n", - " (\"Fill_Null\", SimpleImputer(missing_values=np.nan, strategy='constant', fill_value='Other')),\n", - " (\"One_Hot_Encoder\", OneHotEncoder(sparse = False, handle_unknown='ignore'))])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": { - "_uuid": "1e990e01def800571511c13fe54bc6036e934126" - }, - "outputs": [], - "source": [ - "def enginesize(accident):\n", - " return accident[['Engine_Capacity_.CC.']]\n", - "\n", - "FullTransformerOnEnginesize = Pipeline([(\"Select_Engine_Capacity\", FunctionTransformer(func=enginesize, validate=False)),\n", - " (\"Fill_Null\", SimpleImputer(missing_values=np.nan, strategy='most_frequent')),\n", - " (\"Car_Types_by_Engine_Capacity\", KBinsDiscretizer(n_bins=7, encode='ordinal', strategy='quantile')),\n", - " (\"One_Hot_Encoder\", OneHotEncoder(sparse = False, handle_unknown='ignore'))\n", - " ])" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": { - "_uuid": "54cd276128c4fec26d922b9b332468be1114dbf6" - }, - "outputs": [], - "source": [ - "def column_to_onehotencode(accident):\n", - " return accident[['1st_Road_Class', 'Day_of_Week', 'Junction_Detail', 'Light_Conditions', 'Number_of_Casualties', \n", - " 'Number_of_Vehicles', 'Road_Surface_Conditions', 'Road_Type', 'Special_Conditions_at_Site', \n", - " 'Urban_or_Rural_Area', 'Weather_Conditions', 'Age_Band_of_Driver', 'Hit_Object_in_Carriageway',\n", - " 'Hit_Object_off_Carriageway', 'Sex_of_Driver', 'Skidding_and_Overturning',\n", - " 'Vehicle_Manoeuvre', 'Vehicle_Type'\n", - " ]]\n", - "\n", - "DataToOneHotTransformerOnColumns = Pipeline([(\"Select_Columns\", FunctionTransformer(func=column_to_onehotencode, validate=False)),\n", - " (\"One_Hot_Encoder\", OneHotEncoder(sparse = False, handle_unknown='ignore'))])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": { - "_uuid": "ad450742878f97b87195e37c2ee4ec11ad255443" - }, - "outputs": [], - "source": [ - "FeatureUnionTransformer = FeatureUnion([\n", - " (\"FTEngineCapacity\", FullTransformerOnEnginesize),\n", - " (\"FTMake\", FullTransformertoOnMake),\n", - " (\"FTSpeedLimit\", FullTransformer_SpeedLimit),\n", - " (\"OHEColumns\", DataToOneHotTransformerOnColumns)])\n" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": { - "_uuid": "eeeae8ba4b89dcab70c249b6edce35a720fe2f8a" - }, - "outputs": [], - "source": [ - "Full_Transformer = Pipeline([\n", - " (\"Feature_Engineering\", FeatureUnionTransformer),\n", - " (\"Min_Max_Transformer\", MaxAbsScaler())\n", - " ])" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": { - "_uuid": "01f0ff3782eee344740648031d7a82381c807d4e" - }, - "outputs": [], - "source": [ - "X_train, X_test, y_train, y_test = split(X, y)" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "_uuid": "f452ddcd8d4d2919252116f9e4553e91a378b7a4" - }, - "source": [ - "## **4.1 Logistic Regression**" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Classification Report:\n", - " precision recall f1-score support\n", - "\n", - " 0 0.56 0.66 0.60 61610\n", - " 1 0.74 0.65 0.69 92771\n", - "\n", - " accuracy 0.65 154381\n", - " macro avg 0.65 0.65 0.65 154381\n", - "weighted avg 0.67 0.65 0.66 154381\n", - "\n", - "Score: 0.7102721982118161\n" - ] - } - ], - "source": [ - "Full_Transformer.fit(X_train)\n", - "\n", - "lf = LogisticRegression(class_weight = \"balanced\")\n", - "\n", - "X_train_transformed = Full_Transformer.transform(X_train)\n", - "lf.fit(X_train_transformed, y_train)\n", - "\n", - "X_test_transformed = Full_Transformer.transform(X_test)\n", - "\n", - "y_pred = lf.predict(X_test_transformed)\n", - "\n", - "print('Classification Report:' '\\n',classification_report(y_test, y_pred))\n", - "\n", - "print('Score:',roc_auc_score(y_test.values, lf.predict_proba(X_test_transformed)[:, 1]))" - ] - }, - { - "cell_type": "code", - "execution_count": 58, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# create confusion matrix# create confusion matrix\n", - "matrix = confusion_matrix(y_test, y_pred)\n", - "\n", - "# create dataframe\n", - "class_names = dataofcoll.Accident_Severity.values\n", - "dataframe = pd.DataFrame(matrix, index=['Serious or Fatal', 'Slight'], \n", - " columns=['Serious or Fatal', 'Slight'])\n", - "\n", - "# create heatmap\n", - "sns.heatmap(dataframe, annot=True, cbar=None, cmap='Blues')\n", - "plt.title('Confusion Matrix')\n", - "plt.tight_layout(), plt.xlabel('True Values'), plt.ylabel('Predicted Values')\n", - "plt.show()" - ] - }, - { - "cell_type": "markdown", - "metadata": { - "_uuid": "19879a9691ce3a8aa6165962366e583d4af5b2fa" - }, - "source": [ - "## **4.2 Random Forest Classifier**" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": { - "_uuid": "a39a44a3d5dcaff0afc10821872011246e011db6" - }, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Classification Report:\n", - " precision recall f1-score support\n", - "\n", - " 0 0.78 0.67 0.72 61742\n", - " 1 0.80 0.87 0.83 92639\n", - "\n", - " accuracy 0.79 154381\n", - " macro avg 0.79 0.77 0.78 154381\n", - "weighted avg 0.79 0.79 0.79 154381\n", - "\n", - "Score: 0.8540924830957961\n" - ] - } - ], - "source": [ - "\n", - "rf = RandomForestClassifier(n_estimators=100, n_jobs=3)\n", - "\n", - "Full_Transformer.fit(X_train)\n", - "X_train_transformed = Full_Transformer.transform(X_train)\n", - "rf.fit(X_train_transformed, y_train)\n", - "\n", - "X_test_transformed = Full_Transformer.transform(X_test)\n", - "\n", - "y_pred = rf.predict(X_test_transformed)\n", - "\n", - "print('Classification Report:' '\\n',classification_report(y_test, y_pred))\n", - "\n", - "print('Score:',roc_auc_score(y_test.values, rf.predict_proba(X_test_transformed)[:, 1]))" - ] - }, - { - "cell_type": "code", - "execution_count": 32, - "metadata": {}, - "outputs": [ - { - "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>1st_Road_Class</th>\n", - " <th>Day_of_Week</th>\n", - " <th>Junction_Detail</th>\n", - " <th>Light_Conditions</th>\n", - " <th>Number_of_Casualties</th>\n", - " <th>Number_of_Vehicles</th>\n", - " <th>Road_Surface_Conditions</th>\n", - " <th>Road_Type</th>\n", - " <th>Special_Conditions_at_Site</th>\n", - " <th>Speed_limit</th>\n", - " <th>...</th>\n", - " <th>Age_Band_of_Driver</th>\n", - " <th>Age_of_Vehicle</th>\n", - " <th>Hit_Object_in_Carriageway</th>\n", - " <th>Hit_Object_off_Carriageway</th>\n", - " <th>make</th>\n", - " <th>Engine_Capacity_.CC.</th>\n", - " <th>Sex_of_Driver</th>\n", - " <th>Skidding_and_Overturning</th>\n", - " <th>Vehicle_Manoeuvre</th>\n", - " <th>Vehicle_Type</th>\n", - " </tr>\n", - " </thead>\n", - " <tbody>\n", - " <tr>\n", - " <th>456708</th>\n", - " <td>B</td>\n", - " <td>Thursday</td>\n", - " <td>T or staggered junction</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>2</td>\n", - " <td>Dry</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>20.0</td>\n", - " <td>...</td>\n", - " <td>36 - 45</td>\n", - " <td>4.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>RENAULT</td>\n", - " <td>1870.0</td>\n", - " <td>Female</td>\n", - " <td>None</td>\n", - " <td>Turning right</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " <tr>\n", - " <th>370736</th>\n", - " <td>A</td>\n", - " <td>Saturday</td>\n", - " <td>Not at junction or within 20 metres</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>3</td>\n", - " <td>Dry</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>60.0</td>\n", - " <td>...</td>\n", - " <td>36 - 45</td>\n", - " <td>13.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>KAWASAKI</td>\n", - " <td>749.0</td>\n", - " <td>Male</td>\n", - " <td>None</td>\n", - " <td>Overtaking static vehicle - offside</td>\n", - " <td>Motorcycle over 500cc</td>\n", - " </tr>\n", - " <tr>\n", - " <th>243494</th>\n", - " <td>B</td>\n", - " <td>Tuesday</td>\n", - " <td>Not at junction or within 20 metres</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>4</td>\n", - " <td>Dry</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>...</td>\n", - " <td>26 - 35</td>\n", - " <td>8.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>PEUGEOT</td>\n", - " <td>1997.0</td>\n", - " <td>Male</td>\n", - " <td>None</td>\n", - " <td>Slowing or stopping</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " <tr>\n", - " <th>785303</th>\n", - " <td>A</td>\n", - " <td>Saturday</td>\n", - " <td>Roundabout</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>2</td>\n", - " <td>Dry</td>\n", - " <td>Roundabout</td>\n", - " <td>None</td>\n", - " <td>60.0</td>\n", - " <td>...</td>\n", - " <td>46 - 55</td>\n", - " <td>1.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>FIAT</td>\n", - " <td>1108.0</td>\n", - " <td>Female</td>\n", - " <td>None</td>\n", - " <td>Going ahead other</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1359698</th>\n", - " <td>Unclassified</td>\n", - " <td>Wednesday</td>\n", - " <td>Roundabout</td>\n", - " <td>Darkness - lights lit</td>\n", - " <td>1</td>\n", - " <td>2</td>\n", - " <td>Wet or damp</td>\n", - " <td>Roundabout</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>...</td>\n", - " <td>36 - 45</td>\n", - " <td>6.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>HONDA</td>\n", - " <td>1799.0</td>\n", - " <td>Female</td>\n", - " <td>None</td>\n", - " <td>Turning left</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " <tr>\n", - " <th>...</th>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " <td>...</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1782633</th>\n", - " <td>A</td>\n", - " <td>Wednesday</td>\n", - " <td>T or staggered junction</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>2</td>\n", - " <td>Dry</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>...</td>\n", - " <td>11 - 15</td>\n", - " <td>NaN</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>NaN</td>\n", - " <td>NaN</td>\n", - " <td>Male</td>\n", - " <td>None</td>\n", - " <td>Overtaking static vehicle - offside</td>\n", - " <td>Pedal cycle</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1857601</th>\n", - " <td>Unclassified</td>\n", - " <td>Saturday</td>\n", - " <td>Crossroads</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>2</td>\n", - " <td>Dry</td>\n", - " <td>One way street</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>...</td>\n", - " <td>36 - 45</td>\n", - " <td>1.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>MAZDA</td>\n", - " <td>2191.0</td>\n", - " <td>Male</td>\n", - " <td>None</td>\n", - " <td>Parked</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " <tr>\n", - " <th>490713</th>\n", - " <td>A</td>\n", - " <td>Wednesday</td>\n", - " <td>Crossroads</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>1</td>\n", - " <td>Dry</td>\n", - " <td>Dual carriageway</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>...</td>\n", - " <td>36 - 45</td>\n", - " <td>4.0</td>\n", - " <td>Bollard or refuge</td>\n", - " <td>None</td>\n", - " <td>SUZUKI</td>\n", - " <td>1586.0</td>\n", - " <td>Female</td>\n", - " <td>None</td>\n", - " <td>Going ahead other</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " <tr>\n", - " <th>124192</th>\n", - " <td>A</td>\n", - " <td>Thursday</td>\n", - " <td>Roundabout</td>\n", - " <td>Daylight</td>\n", - " <td>1</td>\n", - " <td>1</td>\n", - " <td>Dry</td>\n", - " <td>Roundabout</td>\n", - " <td>None</td>\n", - " <td>30.0</td>\n", - " <td>...</td>\n", - " <td>26 - 35</td>\n", - " <td>2.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>RENAULT</td>\n", - " <td>4116.0</td>\n", - " <td>Male</td>\n", - " <td>None</td>\n", - " <td>Going ahead left-hand bend</td>\n", - " <td>Goods over 3.5t. and under 7.5t</td>\n", - " </tr>\n", - " <tr>\n", - " <th>1855856</th>\n", - " <td>Unclassified</td>\n", - " <td>Monday</td>\n", - " <td>T or staggered junction</td>\n", - " <td>Darkness - lights lit</td>\n", - " <td>1</td>\n", - " <td>2</td>\n", - " <td>Wet or damp</td>\n", - " <td>Single carriageway</td>\n", - " <td>None</td>\n", - " <td>40.0</td>\n", - " <td>...</td>\n", - " <td>46 - 55</td>\n", - " <td>3.0</td>\n", - " <td>None</td>\n", - " <td>None</td>\n", - " <td>TOYOTA</td>\n", - " <td>1329.0</td>\n", - " <td>Female</td>\n", - " <td>None</td>\n", - " <td>Turning right</td>\n", - " <td>Car</td>\n", - " </tr>\n", - " </tbody>\n", - "</table>\n", - "<p>463141 rows × 23 columns</p>\n", - "</div>" - ], - "text/plain": [ - " 1st_Road_Class Day_of_Week Junction_Detail \\\n", - "456708 B Thursday T or staggered junction \n", - "370736 A Saturday Not at junction or within 20 metres \n", - "243494 B Tuesday Not at junction or within 20 metres \n", - "785303 A Saturday Roundabout \n", - "1359698 Unclassified Wednesday Roundabout \n", - "... ... ... ... \n", - "1782633 A Wednesday T or staggered junction \n", - "1857601 Unclassified Saturday Crossroads \n", - "490713 A Wednesday Crossroads \n", - "124192 A Thursday Roundabout \n", - "1855856 Unclassified Monday T or staggered junction \n", - "\n", - " Light_Conditions Number_of_Casualties Number_of_Vehicles \\\n", - "456708 Daylight 1 2 \n", - "370736 Daylight 1 3 \n", - "243494 Daylight 1 4 \n", - "785303 Daylight 1 2 \n", - "1359698 Darkness - lights lit 1 2 \n", - "... ... ... ... \n", - "1782633 Daylight 1 2 \n", - "1857601 Daylight 1 2 \n", - "490713 Daylight 1 1 \n", - "124192 Daylight 1 1 \n", - "1855856 Darkness - lights lit 1 2 \n", - "\n", - " Road_Surface_Conditions Road_Type \\\n", - "456708 Dry Single carriageway \n", - "370736 Dry Single carriageway \n", - "243494 Dry Single carriageway \n", - "785303 Dry Roundabout \n", - "1359698 Wet or damp Roundabout \n", - "... ... ... \n", - "1782633 Dry Single carriageway \n", - "1857601 Dry One way street \n", - "490713 Dry Dual carriageway \n", - "124192 Dry Roundabout \n", - "1855856 Wet or damp Single carriageway \n", - "\n", - " Special_Conditions_at_Site Speed_limit ... Age_Band_of_Driver \\\n", - "456708 None 20.0 ... 36 - 45 \n", - "370736 None 60.0 ... 36 - 45 \n", - "243494 None 30.0 ... 26 - 35 \n", - "785303 None 60.0 ... 46 - 55 \n", - "1359698 None 30.0 ... 36 - 45 \n", - "... ... ... ... ... \n", - "1782633 None 30.0 ... 11 - 15 \n", - "1857601 None 30.0 ... 36 - 45 \n", - "490713 None 30.0 ... 36 - 45 \n", - "124192 None 30.0 ... 26 - 35 \n", - "1855856 None 40.0 ... 46 - 55 \n", - "\n", - " Age_of_Vehicle Hit_Object_in_Carriageway Hit_Object_off_Carriageway \\\n", - "456708 4.0 None None \n", - "370736 13.0 None None \n", - "243494 8.0 None None \n", - "785303 1.0 None None \n", - "1359698 6.0 None None \n", - "... ... ... ... \n", - "1782633 NaN None None \n", - "1857601 1.0 None None \n", - "490713 4.0 Bollard or refuge None \n", - "124192 2.0 None None \n", - "1855856 3.0 None None \n", - "\n", - " make Engine_Capacity_.CC. Sex_of_Driver Skidding_and_Overturning \\\n", - "456708 RENAULT 1870.0 Female None \n", - "370736 KAWASAKI 749.0 Male None \n", - "243494 PEUGEOT 1997.0 Male None \n", - "785303 FIAT 1108.0 Female None \n", - "1359698 HONDA 1799.0 Female None \n", - "... ... ... ... ... \n", - "1782633 NaN NaN Male None \n", - "1857601 MAZDA 2191.0 Male None \n", - "490713 SUZUKI 1586.0 Female None \n", - "124192 RENAULT 4116.0 Male None \n", - "1855856 TOYOTA 1329.0 Female None \n", - "\n", - " Vehicle_Manoeuvre Vehicle_Type \n", - "456708 Turning right Car \n", - "370736 Overtaking static vehicle - offside Motorcycle over 500cc \n", - "243494 Slowing or stopping Car \n", - "785303 Going ahead other Car \n", - "1359698 Turning left Car \n", - "... ... ... \n", - "1782633 Overtaking static vehicle - offside Pedal cycle \n", - "1857601 Parked Car \n", - "490713 Going ahead other Car \n", - "124192 Going ahead left-hand bend Goods over 3.5t. and under 7.5t \n", - "1855856 Turning right Car \n", - "\n", - "[463141 rows x 23 columns]" - ] - }, - "execution_count": 32, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "X_train" - ] - }, - { - "cell_type": "code", - "execution_count": 55, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "463141" - ] - }, - "execution_count": 55, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "len(X_train_transformed)" - ] - }, - { - "cell_type": "code", - "execution_count": 56, - "metadata": {}, - "outputs": [], - "source": [ - "feature_names = [f\"feature {i}\" for i in range(X_train_transformed.shape[1])]" - ] - }, - { - "cell_type": "code", - "execution_count": 57, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "['feature 0',\n", - " 'feature 1',\n", - " 'feature 2',\n", - " 'feature 3',\n", - " 'feature 4',\n", - " 'feature 5',\n", - " 'feature 6',\n", - " 'feature 7',\n", - " 'feature 8',\n", - " 'feature 9',\n", - " 'feature 10',\n", - " 'feature 11',\n", - " 'feature 12',\n", - " 'feature 13',\n", - " 'feature 14',\n", - " 'feature 15',\n", - " 'feature 16',\n", - " 'feature 17',\n", - " 'feature 18',\n", - " 'feature 19',\n", - " 'feature 20',\n", - " 'feature 21',\n", - " 'feature 22',\n", - " 'feature 23',\n", - " 'feature 24',\n", - " 'feature 25',\n", - " 'feature 26',\n", - " 'feature 27',\n", - " 'feature 28',\n", - " 'feature 29',\n", - " 'feature 30',\n", - " 'feature 31',\n", - " 'feature 32',\n", - " 'feature 33',\n", - " 'feature 34',\n", - " 'feature 35',\n", - " 'feature 36',\n", - " 'feature 37',\n", - " 'feature 38',\n", - " 'feature 39',\n", - " 'feature 40',\n", - " 'feature 41',\n", - " 'feature 42',\n", - " 'feature 43',\n", - " 'feature 44',\n", - " 'feature 45',\n", - " 'feature 46',\n", - " 'feature 47',\n", - " 'feature 48',\n", - " 'feature 49',\n", - " 'feature 50',\n", - " 'feature 51',\n", - " 'feature 52',\n", - " 'feature 53',\n", - " 'feature 54',\n", - " 'feature 55',\n", - " 'feature 56',\n", - " 'feature 57',\n", - " 'feature 58',\n", - " 'feature 59',\n", - " 'feature 60',\n", - " 'feature 61',\n", - " 'feature 62',\n", - " 'feature 63',\n", - " 'feature 64',\n", - " 'feature 65',\n", - " 'feature 66',\n", - " 'feature 67',\n", - " 'feature 68',\n", - " 'feature 69',\n", - " 'feature 70',\n", - " 'feature 71',\n", - " 'feature 72',\n", - " 'feature 73',\n", - " 'feature 74',\n", - " 'feature 75',\n", - " 'feature 76',\n", - " 'feature 77',\n", - " 'feature 78',\n", - " 'feature 79',\n", - " 'feature 80',\n", - " 'feature 81',\n", - " 'feature 82',\n", - " 'feature 83',\n", - " 'feature 84',\n", - " 'feature 85',\n", - " 'feature 86',\n", - " 'feature 87',\n", - " 'feature 88',\n", - " 'feature 89',\n", - " 'feature 90',\n", - " 'feature 91',\n", - " 'feature 92',\n", - " 'feature 93',\n", - " 'feature 94',\n", - " 'feature 95',\n", - " 'feature 96',\n", - " 'feature 97',\n", - " 'feature 98',\n", - " 'feature 99',\n", - " 'feature 100',\n", - " 'feature 101',\n", - " 'feature 102',\n", - " 'feature 103',\n", - " 'feature 104',\n", - " 'feature 105',\n", - " 'feature 106',\n", - " 'feature 107',\n", - " 'feature 108',\n", - " 'feature 109',\n", - " 'feature 110',\n", - " 'feature 111',\n", - " 'feature 112',\n", - " 'feature 113',\n", - " 'feature 114',\n", - " 'feature 115',\n", - " 'feature 116',\n", - " 'feature 117',\n", - " 'feature 118',\n", - " 'feature 119',\n", - " 'feature 120',\n", - " 'feature 121',\n", - " 'feature 122',\n", - " 'feature 123',\n", - " 'feature 124',\n", - " 'feature 125',\n", - " 'feature 126',\n", - " 'feature 127',\n", - " 'feature 128',\n", - " 'feature 129',\n", - " 'feature 130',\n", - " 'feature 131',\n", - " 'feature 132',\n", - " 'feature 133',\n", - " 'feature 134',\n", - " 'feature 135',\n", - " 'feature 136',\n", - " 'feature 137',\n", - " 'feature 138',\n", - " 'feature 139',\n", - " 'feature 140',\n", - " 'feature 141',\n", - " 'feature 142',\n", - " 'feature 143',\n", - " 'feature 144',\n", - " 'feature 145',\n", - " 'feature 146',\n", - " 'feature 147',\n", - " 'feature 148',\n", - " 'feature 149',\n", - " 'feature 150',\n", - " 'feature 151',\n", - " 'feature 152',\n", - " 'feature 153',\n", - " 'feature 154',\n", - " 'feature 155',\n", - " 'feature 156',\n", - " 'feature 157',\n", - " 'feature 158',\n", - " 'feature 159',\n", - " 'feature 160',\n", - " 'feature 161',\n", - " 'feature 162',\n", - " 'feature 163',\n", - " 'feature 164',\n", - " 'feature 165',\n", - " 'feature 166',\n", - " 'feature 167',\n", - " 'feature 168',\n", - " 'feature 169',\n", - " 'feature 170',\n", - " 'feature 171',\n", - " 'feature 172',\n", - " 'feature 173',\n", - " 'feature 174',\n", - " 'feature 175',\n", - " 'feature 176',\n", - " 'feature 177',\n", - " 'feature 178',\n", - " 'feature 179',\n", - " 'feature 180',\n", - " 'feature 181',\n", - " 'feature 182',\n", - " 'feature 183',\n", - " 'feature 184',\n", - " 'feature 185',\n", - " 'feature 186',\n", - " 'feature 187',\n", - " 'feature 188',\n", - " 'feature 189',\n", - " 'feature 190',\n", - " 'feature 191',\n", - " 'feature 192',\n", - " 'feature 193',\n", - " 'feature 194',\n", - " 'feature 195',\n", - " 'feature 196',\n", - " 'feature 197',\n", - " 'feature 198',\n", - " 'feature 199',\n", - " 'feature 200',\n", - " 'feature 201',\n", - " 'feature 202',\n", - " 'feature 203',\n", - " 'feature 204',\n", - " 'feature 205',\n", - " 'feature 206',\n", - " 'feature 207',\n", - " 'feature 208',\n", - " 'feature 209',\n", - " 'feature 210',\n", - " 'feature 211',\n", - " 'feature 212',\n", - " 'feature 213',\n", - " 'feature 214',\n", - " 'feature 215',\n", - " 'feature 216',\n", - " 'feature 217',\n", - " 'feature 218']" - ] - }, - "execution_count": 57, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "feature_names" - ] - }, - { - "cell_type": "code", - "execution_count": 44, - "metadata": {}, - "outputs": [], - "source": [ - "importances = rf.feature_importances_\n", - "std = np.std([tree.feature_importances_ for tree in clf.estimators_], axis=0)" - ] - }, - { - "cell_type": "code", - "execution_count": 45, - "metadata": { - "scrolled": true - }, - "outputs": [ - { - "data": { - "text/plain": [ - "feature 0 0.023685\n", - "feature 1 0.000850\n", - "feature 2 0.016691\n", - "feature 3 0.013066\n", - "feature 4 0.003740\n", - " ... \n", - "feature 214 0.003173\n", - "feature 215 0.000064\n", - "feature 216 0.003639\n", - "feature 217 0.000013\n", - "feature 218 0.006902\n", - "Length: 219, dtype: float64" - ] - }, - "execution_count": 45, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import pandas as pd\n", - "\n", - "forest_importances = pd.Series(importances, index=feature_names)\n", - "forest_importances" - ] - }, - { - "cell_type": "code", - "execution_count": 50, - "metadata": {}, - "outputs": [ - { - "data": { - "image/png": "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", - "text/plain": [ - "<Figure size 432x288 with 1 Axes>" - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "# create confusion matrix# create confusion matrix\n", - "matrix = confusion_matrix(y_test, y_pred)\n", - "\n", - "# create dataframe\n", - "class_names = dataofcoll.Accident_Severity.values\n", - "dataframe = pd.DataFrame(matrix, index=['Serious or Fatal', 'Slight'], \n", - " columns=['Serious or Fatal', 'Slight'])\n", - "\n", - "# create heatmap\n", - "sns.heatmap(dataframe, annot=True, cbar=None, cmap='Blues')\n", - "plt.title('Confusion Matrix')\n", - "plt.tight_layout(), plt.xlabel('True Values'), plt.ylabel('Predicted Values')\n", - "plt.show()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.8.8" - } - }, - "nbformat": 4, - "nbformat_minor": 1 -}