{
"cells": [
{
"cell_type": "markdown",
"id": "8d4bf69d",
"metadata": {},
"source": [
"# Voltage Quality Classification Model\n",
" The quality of power supplied to end-use equipments depends upon the quality of voltage supplied by utility. Voltage is said to have quality if it has rated value at rated frequency without any distortion from sine wave. The normal voltage quality issues are:\n",
"- Voltage Sag\n",
"- Voltage Swell\n",
"- Voltage Flicker\n",
"- Voltage Harmonics\n",
"- Voltage Interruption\n",
"\n",
"Classification of voltage quality is a must for activating corresponding controllers to mitigate the issues using compensating device. Training data is generated by using functions which simulate the above power quality issues."
]
},
{
"cell_type": "markdown",
"id": "8ba94acd",
"metadata": {},
"source": [
"# Installing the required packages"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "4f7c0ea6",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Requirement already satisfied: xgboost in /opt/anaconda3/lib/python3.8/site-packages (1.4.2)\r\n",
"Requirement already satisfied: scipy in /opt/anaconda3/lib/python3.8/site-packages (from xgboost) (1.6.2)\r\n",
"Requirement already satisfied: numpy in /opt/anaconda3/lib/python3.8/site-packages (from xgboost) (1.20.1)\r\n"
]
}
],
"source": [
"!pip install xgboost"
]
},
{
"cell_type": "markdown",
"id": "18fc265e",
"metadata": {},
"source": [
"# Importing the required libraries"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "c8212aea",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sn\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib import rcParams\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"from sklearn.svm import SVC\n",
"from sklearn.metrics import classification_report, confusion_matrix, accuracy_score\n",
"from xgboost import XGBClassifier\n",
"from sklearn.ensemble import RandomForestClassifier\n",
"from sklearn.model_selection import GridSearchCV\n",
"\n",
"%matplotlib inline\n",
"\n",
"import warnings\n",
"warnings.filterwarnings(\"ignore\")"
]
},
{
"cell_type": "markdown",
"id": "0cf4bd32",
"metadata": {},
"source": [
"# Loading the data into the dataframe"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "be3e6804",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Sample \n",
" Voltage \n",
" Problem \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 56.46 \n",
" Normal \n",
" \n",
" \n",
" 1 \n",
" 2 \n",
" 111.20 \n",
" Normal \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" 162.57 \n",
" Normal \n",
" \n",
" \n",
" 3 \n",
" 4 \n",
" 209.00 \n",
" Normal \n",
" \n",
" \n",
" 4 \n",
" 5 \n",
" 249.09 \n",
" Normal \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Sample Voltage Problem\n",
"0 1 56.46 Normal\n",
"1 2 111.20 Normal\n",
"2 3 162.57 Normal\n",
"3 4 209.00 Normal\n",
"4 5 249.09 Normal"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_csv(\"Voltage Quality.csv\")\n",
"test = pd.read_csv(\"Voltage Quality Test.csv\")\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "959d88dc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Sample \n",
" Voltage \n",
" Problem \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 56.46 \n",
" Normal \n",
" \n",
" \n",
" 1 \n",
" 2 \n",
" 111.20 \n",
" Normal \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" 162.57 \n",
" Normal \n",
" \n",
" \n",
" 3 \n",
" 4 \n",
" 209.00 \n",
" Normal \n",
" \n",
" \n",
" 4 \n",
" 5 \n",
" 249.09 \n",
" Normal \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Sample Voltage Problem\n",
"0 1 56.46 Normal\n",
"1 2 111.20 Normal\n",
"2 3 162.57 Normal\n",
"3 4 209.00 Normal\n",
"4 5 249.09 Normal"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.head()"
]
},
{
"cell_type": "markdown",
"id": "865fe385",
"metadata": {},
"source": [
"# Total number of rows and columns"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "34b1b141",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(3366, 3)"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.shape # 3366 rows and 3 columns"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "c6fcc035",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(1020, 3)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.shape"
]
},
{
"cell_type": "markdown",
"id": "91147657",
"metadata": {},
"source": [
"# Checking the type of data"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "a2612df2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 3366 entries, 0 to 3365\n",
"Data columns (total 3 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Sample 3366 non-null int64 \n",
" 1 Voltage 3366 non-null float64\n",
" 2 Problem 3366 non-null object \n",
"dtypes: float64(1), int64(1), object(1)\n",
"memory usage: 79.0+ KB\n"
]
}
],
"source": [
"data.info()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "4bda0fc9",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"RangeIndex: 1020 entries, 0 to 1019\n",
"Data columns (total 3 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 Sample 1020 non-null int64 \n",
" 1 Voltage 1020 non-null float64\n",
" 2 Problem 1020 non-null object \n",
"dtypes: float64(1), int64(1), object(1)\n",
"memory usage: 24.0+ KB\n"
]
}
],
"source": [
"test.info()"
]
},
{
"cell_type": "markdown",
"id": "593b3e7c",
"metadata": {},
"source": [
"# Checking for missing values"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "a62ca453",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sample 0\n",
"Voltage 0\n",
"Problem 0\n",
"dtype: int64"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.isnull().sum() # No missing values"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ddf6406b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sample 0\n",
"Voltage 0\n",
"Problem 0\n",
"dtype: int64"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.isnull().sum()"
]
},
{
"cell_type": "markdown",
"id": "451f6cda",
"metadata": {},
"source": [
"# Checking for duplicates"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "48f717bc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"510"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.duplicated().sum() # 510 duplicates"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "f1aa7d57",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"136"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.duplicated().sum()"
]
},
{
"cell_type": "markdown",
"id": "2f7bc812",
"metadata": {},
"source": [
"# Finding the unique values in problem column"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "66c66225",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Normal', 'Sag', 'Swell', 'Flicker', 'Interruption', 'Harmonics'],\n",
" dtype=object)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.Problem.unique() # 6 unique values"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "e0974cd2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['Normal', 'Sag', 'Swell', 'Flicker', 'Interruption', 'Harmonics'],\n",
" dtype=object)"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"test.Problem.unique()"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "99109e7f",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Sample \n",
" Voltage \n",
" Problem \n",
" \n",
" \n",
" \n",
" \n",
" 0 \n",
" 1 \n",
" 56.46 \n",
" Normal \n",
" \n",
" \n",
" 1 \n",
" 2 \n",
" 111.20 \n",
" Normal \n",
" \n",
" \n",
" 2 \n",
" 3 \n",
" 162.57 \n",
" Normal \n",
" \n",
" \n",
" 3 \n",
" 4 \n",
" 209.00 \n",
" Normal \n",
" \n",
" \n",
" 4 \n",
" 5 \n",
" 249.09 \n",
" Normal \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Sample Voltage Problem\n",
"0 1 56.46 Normal\n",
"1 2 111.20 Normal\n",
"2 3 162.57 Normal\n",
"3 4 209.00 Normal\n",
"4 5 249.09 Normal"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.head()"
]
},
{
"cell_type": "markdown",
"id": "1410da43",
"metadata": {},
"source": [
"# Analysing statistical data"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "d35d8713",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" \n",
" Sample \n",
" Voltage \n",
" Problem \n",
" \n",
" \n",
" \n",
" \n",
" count \n",
" 3366.000000 \n",
" 3366.000000 \n",
" 3366 \n",
" \n",
" \n",
" unique \n",
" NaN \n",
" NaN \n",
" 6 \n",
" \n",
" \n",
" top \n",
" NaN \n",
" NaN \n",
" Harmonics \n",
" \n",
" \n",
" freq \n",
" NaN \n",
" NaN \n",
" 578 \n",
" \n",
" \n",
" mean \n",
" 17.500000 \n",
" 0.000226 \n",
" NaN \n",
" \n",
" \n",
" std \n",
" 9.812166 \n",
" 229.620084 \n",
" NaN \n",
" \n",
" \n",
" min \n",
" 1.000000 \n",
" -585.480000 \n",
" NaN \n",
" \n",
" \n",
" 25% \n",
" 9.000000 \n",
" -208.957500 \n",
" NaN \n",
" \n",
" \n",
" 50% \n",
" 17.500000 \n",
" 0.000000 \n",
" NaN \n",
" \n",
" \n",
" 75% \n",
" 26.000000 \n",
" 209.255000 \n",
" NaN \n",
" \n",
" \n",
" max \n",
" 34.000000 \n",
" 585.480000 \n",
" NaN \n",
" \n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Sample Voltage Problem\n",
"count 3366.000000 3366.000000 3366\n",
"unique NaN NaN 6\n",
"top NaN NaN Harmonics\n",
"freq NaN NaN 578\n",
"mean 17.500000 0.000226 NaN\n",
"std 9.812166 229.620084 NaN\n",
"min 1.000000 -585.480000 NaN\n",
"25% 9.000000 -208.957500 NaN\n",
"50% 17.500000 0.000000 NaN\n",
"75% 26.000000 209.255000 NaN\n",
"max 34.000000 585.480000 NaN"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.describe(include=\"all\")"
]
},
{
"cell_type": "markdown",
"id": "553a108e",
"metadata": {},
"source": [
"# Finding outliers"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "51229178",
"metadata": {},
"outputs": [],
"source": [
"# Function to find the outliers\n",
"def findoutliers(column):\n",
" outliers=[]\n",
" Q1=column.quantile(.25)\n",
" Q3=column.quantile(.75)\n",
" IQR=Q3-Q1\n",
" lower_limit=Q1-(1.5*IQR)\n",
" upper_limit=Q3+(1.5*IQR)\n",
" for out1 in column:\n",
" if out1>upper_limit or out1 "
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Voltage\n",
"fix, (ax1,ax2) =plt.subplots(1,2,figsize=(7,5))\n",
"sn.boxplot(data.Voltage, orient='v',ax=ax1)\n",
"ax1.set_ylabel=data.Voltage.name\n",
"ax1.set_title('Box plot of {}'.format(data.Voltage.name))\n",
"sn.distplot(data.Voltage,ax=ax2) \n",
"ax2.set_title('Distribution plot of {}'.format(data.Voltage.name))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "784eada8",
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"Harmonics 578\n",
"Swell 578\n",
"Sag 578\n",
"Normal 578\n",
"Flicker 544\n",
"Interruption 510\n",
"Name: Problem, dtype: int64"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# Problem\n",
"data.Problem.value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "012d7672",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"pl = sn.factorplot('Problem',data=data, aspect=4,kind='count')\n",
"pl.set_xticklabels()"
]
},
{
"cell_type": "markdown",
"id": "07cb4c79",
"metadata": {},
"source": [
"# Identifying the independent and dependent variables"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "d18b49b6",
"metadata": {},
"outputs": [],
"source": [
"X = data.iloc[:,:-1] # Independent variable\n",
"y = data.Problem # Dependent variable"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "a22d8277",
"metadata": {},
"outputs": [],
"source": [
"x_test = test.iloc[:,:-1]\n",
"y_test = test.Problem "
]
},
{
"cell_type": "markdown",
"id": "57dfd617",
"metadata": {},
"source": [
"# Decision Tree"
]
},
{
"cell_type": "markdown",
"id": "50e0afdc",
"metadata": {},
"source": [
"# Defining the model"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "56e08b15",
"metadata": {},
"outputs": [],
"source": [
"model_dt = DecisionTreeClassifier()"
]
},
{
"cell_type": "markdown",
"id": "0626248b",
"metadata": {},
"source": [
"# Training the model"
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "91e5d0f2",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier()"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_dt.fit(X,y)"
]
},
{
"cell_type": "markdown",
"id": "7a358b81",
"metadata": {},
"source": [
"# Testing the model"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "5ef648e8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.95"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_predict_dt = model_dt.predict(x_test)\n",
"as_dt = accuracy_score(y_test,y_predict_dt)\n",
"as_dt"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "894932ae",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" Flicker 0.92 1.00 0.96 170\n",
" Harmonics 0.91 0.85 0.88 170\n",
"Interruption 1.00 1.00 1.00 170\n",
" Normal 0.95 1.00 0.97 170\n",
" Sag 0.98 0.92 0.95 170\n",
" Swell 0.95 0.92 0.93 170\n",
"\n",
" accuracy 0.95 1020\n",
" macro avg 0.95 0.95 0.95 1020\n",
"weighted avg 0.95 0.95 0.95 1020\n",
"\n"
]
}
],
"source": [
"print(classification_report(y_test,y_predict_dt))"
]
},
{
"cell_type": "code",
"execution_count": 29,
"id": "d9a53648",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[170, 0, 0, 0, 0, 0],\n",
" [ 7, 145, 0, 5, 4, 9],\n",
" [ 0, 0, 170, 0, 0, 0],\n",
" [ 0, 0, 0, 170, 0, 0],\n",
" [ 3, 10, 0, 0, 157, 0],\n",
" [ 4, 5, 0, 4, 0, 157]])"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"confusion_matrix(y_test,y_predict_dt)"
]
},
{
"cell_type": "markdown",
"id": "03be07e5",
"metadata": {},
"source": [
"# XGBoost"
]
},
{
"cell_type": "markdown",
"id": "10b72622",
"metadata": {},
"source": [
"# Defining the model"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "d9b1d0d6",
"metadata": {},
"outputs": [],
"source": [
"model_xgb = XGBClassifier(n_estimators=300)"
]
},
{
"cell_type": "markdown",
"id": "473fe685",
"metadata": {},
"source": [
"# Training the model"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "10d8cbdc",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[21:26:24] WARNING: /opt/concourse/worker/volumes/live/7a2b9f41-3287-451b-6691-43e9a6c0910f/volume/xgboost-split_1619728204606/work/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.\n"
]
},
{
"data": {
"text/plain": [
"XGBClassifier(base_score=0.5, booster='gbtree', colsample_bylevel=1,\n",
" colsample_bynode=1, colsample_bytree=1, gamma=0, gpu_id=-1,\n",
" importance_type='gain', interaction_constraints='',\n",
" learning_rate=0.300000012, max_delta_step=0, max_depth=6,\n",
" min_child_weight=1, missing=nan, monotone_constraints='()',\n",
" n_estimators=300, n_jobs=16, num_parallel_tree=1,\n",
" objective='multi:softprob', random_state=0, reg_alpha=0,\n",
" reg_lambda=1, scale_pos_weight=None, subsample=1,\n",
" tree_method='exact', validate_parameters=1, verbosity=None)"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_xgb.fit(X,y)"
]
},
{
"cell_type": "markdown",
"id": "8ffd720a",
"metadata": {},
"source": [
"# Testing the model"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "ab0a0c92",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.95"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_predict_xgb = model_dt.predict(x_test)\n",
"as_xgb = accuracy_score(y_test,y_predict_xgb)\n",
"as_xgb"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "f98f8111",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" Flicker 0.92 1.00 0.96 170\n",
" Harmonics 0.91 0.85 0.88 170\n",
"Interruption 1.00 1.00 1.00 170\n",
" Normal 0.95 1.00 0.97 170\n",
" Sag 0.98 0.92 0.95 170\n",
" Swell 0.95 0.92 0.93 170\n",
"\n",
" accuracy 0.95 1020\n",
" macro avg 0.95 0.95 0.95 1020\n",
"weighted avg 0.95 0.95 0.95 1020\n",
"\n"
]
}
],
"source": [
"print(classification_report(y_test,y_predict_xgb))"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "ebdecc0c",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[170, 0, 0, 0, 0, 0],\n",
" [ 7, 145, 0, 5, 4, 9],\n",
" [ 0, 0, 170, 0, 0, 0],\n",
" [ 0, 0, 0, 170, 0, 0],\n",
" [ 3, 10, 0, 0, 157, 0],\n",
" [ 4, 5, 0, 4, 0, 157]])"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"confusion_matrix(y_test,y_predict_xgb)"
]
},
{
"cell_type": "markdown",
"id": "f5dc8e32",
"metadata": {},
"source": [
"# Random Forest"
]
},
{
"cell_type": "markdown",
"id": "d8d6a4f0",
"metadata": {},
"source": [
"# Defining the model"
]
},
{
"cell_type": "code",
"execution_count": 35,
"id": "8a51ef49",
"metadata": {},
"outputs": [],
"source": [
"model_rf = RandomForestClassifier()"
]
},
{
"cell_type": "markdown",
"id": "11bf5e15",
"metadata": {},
"source": [
"# Training the model"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "8c568b29",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestClassifier()"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_rf.fit(X,y)"
]
},
{
"cell_type": "markdown",
"id": "bb844013",
"metadata": {},
"source": [
"# Testing the model"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "654580cb",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9774509803921568"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_predict_rf = model_rf.predict(x_test)\n",
"as_rf = accuracy_score(y_test,y_predict_rf)\n",
"as_rf"
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "afa6cdb1",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" Flicker 0.97 1.00 0.99 170\n",
" Harmonics 0.94 0.92 0.93 170\n",
"Interruption 1.00 1.00 1.00 170\n",
" Normal 1.00 1.00 1.00 170\n",
" Sag 0.98 0.96 0.97 170\n",
" Swell 0.97 0.98 0.97 170\n",
"\n",
" accuracy 0.98 1020\n",
" macro avg 0.98 0.98 0.98 1020\n",
"weighted avg 0.98 0.98 0.98 1020\n",
"\n"
]
}
],
"source": [
"print(classification_report(y_test,y_predict_rf))"
]
},
{
"cell_type": "code",
"execution_count": 39,
"id": "cba6c72b",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[170, 0, 0, 0, 0, 0],\n",
" [ 5, 157, 0, 0, 3, 5],\n",
" [ 0, 0, 170, 0, 0, 0],\n",
" [ 0, 0, 0, 170, 0, 0],\n",
" [ 0, 6, 0, 0, 164, 0],\n",
" [ 0, 4, 0, 0, 0, 166]])"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"confusion_matrix(y_test,y_predict_rf)"
]
},
{
"cell_type": "markdown",
"id": "80d38c0b",
"metadata": {},
"source": [
"# Model Evaluation"
]
},
{
"cell_type": "code",
"execution_count": 40,
"id": "aa4afe29",
"metadata": {},
"outputs": [],
"source": [
"Accuracy_Score = [as_dt,as_rf,as_xgb]\n",
"Models = ['Decision Tree', 'Random Forest','XG Boost']"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "bae685ee",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"sn.barplot(Accuracy_Score, Models, color=\"r\")\n",
"plt.xlabel('Accuracy Score')\n",
"plt.title('Accuracy Score')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "e59d07ca",
"metadata": {},
"source": [
"Random Forest seems to have the highest accuracy score hence we go ahead with Random Forest algorithm."
]
},
{
"cell_type": "markdown",
"id": "f20c8195",
"metadata": {},
"source": [
"# Hyperparameter (using grid search)"
]
},
{
"cell_type": "code",
"execution_count": 42,
"id": "e513bf46",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Fitting 5 folds for each of 120 candidates, totalling 600 fits\n"
]
},
{
"data": {
"text/plain": [
"GridSearchCV(cv=5, estimator=RandomForestClassifier(),\n",
" param_grid={'max_depth': [10, 15, 14, 13, 12],\n",
" 'n_estimators': [150, 160, 170, 180, 190, 200],\n",
" 'random_state': [4, 5, 6, 7]},\n",
" verbose=1)"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"parameters = {'max_depth':[10,15,14,13,12],\n",
" 'random_state': [4,5,6,7],\n",
" 'n_estimators':[150,160,170,180,190,200]}\n",
"\n",
"grid = GridSearchCV(model_rf,parameters,cv=5,verbose=1)\n",
"grid.fit(X,y)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "10a4aca4",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.8773607700142415"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid.best_score_"
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "94bb569e",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'max_depth': 13, 'n_estimators': 190, 'random_state': 5}"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"grid.best_params_"
]
},
{
"cell_type": "markdown",
"id": "71b111fc",
"metadata": {},
"source": [
"# Training Random Forest with best parameters"
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "0ee81152",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"RandomForestClassifier(max_depth=13, n_estimators=190, random_state=5)"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model_rf = RandomForestClassifier(n_estimators=190,max_depth=13,random_state=5)\n",
"model_rf.fit(X,y)"
]
},
{
"cell_type": "markdown",
"id": "77dd9b12",
"metadata": {},
"source": [
"# Testing Random Forest with best parameters"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "ed03903a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0.9892156862745098"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"y_predict = model_rf.predict(x_test)\n",
"accuracy_score(y_test,y_predict)"
]
},
{
"cell_type": "code",
"execution_count": 52,
"id": "96b24b5a",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" Flicker 1.00 1.00 1.00 170\n",
" Harmonics 0.94 1.00 0.97 170\n",
"Interruption 1.00 1.00 1.00 170\n",
" Normal 1.00 1.00 1.00 170\n",
" Sag 1.00 0.96 0.98 170\n",
" Swell 1.00 0.98 0.99 170\n",
"\n",
" accuracy 0.99 1020\n",
" macro avg 0.99 0.99 0.99 1020\n",
"weighted avg 0.99 0.99 0.99 1020\n",
"\n"
]
}
],
"source": [
"print(classification_report(y_test,y_predict))"
]
},
{
"cell_type": "code",
"execution_count": 53,
"id": "9b77ef9f",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array([[170, 0, 0, 0, 0, 0],\n",
" [ 0, 170, 0, 0, 0, 0],\n",
" [ 0, 0, 170, 0, 0, 0],\n",
" [ 0, 0, 0, 170, 0, 0],\n",
" [ 0, 7, 0, 0, 163, 0],\n",
" [ 0, 4, 0, 0, 0, 166]])"
]
},
"execution_count": 53,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"confusion_matrix(y_test,y_predict)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "596a373a",
"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": 5
}