Commit 06b95689 authored by Abhishek Kumar's avatar Abhishek Kumar

Merge branch 'trained' into 'master'

Tuned Modification

See merge request mlproject2022/sign-language-classifier!4
parents 0a266d02 f5e79840
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SIGN LANGUAGE CLASSIFICATION USING MNIST DATASET"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"%matplotlib inline\n",
"import seaborn as sns\n",
"#import warnings \n",
"#warnings.filterwarnings(\"ignore\")\n",
"from sklearn import metrics \n",
"from sklearn.decomposition import PCA\n",
"#plt.rcParams[\"figure.figsize\"] = (14,8)"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"letters = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S','T', 'U', 'V', 'W', 'X', 'Y']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"##### Loading Dataset"
]
},
{
"cell_type": "code",
"execution_count": 3,
"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>label</th>\n",
" <th>pixel1</th>\n",
" <th>pixel2</th>\n",
" <th>pixel3</th>\n",
" <th>pixel4</th>\n",
" <th>pixel5</th>\n",
" <th>pixel6</th>\n",
" <th>pixel7</th>\n",
" <th>pixel8</th>\n",
" <th>pixel9</th>\n",
" <th>...</th>\n",
" <th>pixel775</th>\n",
" <th>pixel776</th>\n",
" <th>pixel777</th>\n",
" <th>pixel778</th>\n",
" <th>pixel779</th>\n",
" <th>pixel780</th>\n",
" <th>pixel781</th>\n",
" <th>pixel782</th>\n",
" <th>pixel783</th>\n",
" <th>pixel784</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>count</th>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>...</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" <td>27455.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>mean</th>\n",
" <td>12.318813</td>\n",
" <td>145.419377</td>\n",
" <td>148.500273</td>\n",
" <td>151.247714</td>\n",
" <td>153.546531</td>\n",
" <td>156.210891</td>\n",
" <td>158.411255</td>\n",
" <td>160.472154</td>\n",
" <td>162.339683</td>\n",
" <td>163.954799</td>\n",
" <td>...</td>\n",
" <td>141.104863</td>\n",
" <td>147.495611</td>\n",
" <td>153.325806</td>\n",
" <td>159.125332</td>\n",
" <td>161.969259</td>\n",
" <td>162.736696</td>\n",
" <td>162.906137</td>\n",
" <td>161.966454</td>\n",
" <td>161.137898</td>\n",
" <td>159.824731</td>\n",
" </tr>\n",
" <tr>\n",
" <th>std</th>\n",
" <td>7.287552</td>\n",
" <td>41.358555</td>\n",
" <td>39.942152</td>\n",
" <td>39.056286</td>\n",
" <td>38.595247</td>\n",
" <td>37.111165</td>\n",
" <td>36.125579</td>\n",
" <td>35.016392</td>\n",
" <td>33.661998</td>\n",
" <td>32.651607</td>\n",
" <td>...</td>\n",
" <td>63.751194</td>\n",
" <td>65.512894</td>\n",
" <td>64.427412</td>\n",
" <td>63.708507</td>\n",
" <td>63.738316</td>\n",
" <td>63.444008</td>\n",
" <td>63.509210</td>\n",
" <td>63.298721</td>\n",
" <td>63.610415</td>\n",
" <td>64.396846</td>\n",
" </tr>\n",
" <tr>\n",
" <th>min</th>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>...</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>25%</th>\n",
" <td>6.000000</td>\n",
" <td>121.000000</td>\n",
" <td>126.000000</td>\n",
" <td>130.000000</td>\n",
" <td>133.000000</td>\n",
" <td>137.000000</td>\n",
" <td>140.000000</td>\n",
" <td>142.000000</td>\n",
" <td>144.000000</td>\n",
" <td>146.000000</td>\n",
" <td>...</td>\n",
" <td>92.000000</td>\n",
" <td>96.000000</td>\n",
" <td>103.000000</td>\n",
" <td>112.000000</td>\n",
" <td>120.000000</td>\n",
" <td>125.000000</td>\n",
" <td>128.000000</td>\n",
" <td>128.000000</td>\n",
" <td>128.000000</td>\n",
" <td>125.500000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>50%</th>\n",
" <td>13.000000</td>\n",
" <td>150.000000</td>\n",
" <td>153.000000</td>\n",
" <td>156.000000</td>\n",
" <td>158.000000</td>\n",
" <td>160.000000</td>\n",
" <td>162.000000</td>\n",
" <td>164.000000</td>\n",
" <td>165.000000</td>\n",
" <td>166.000000</td>\n",
" <td>...</td>\n",
" <td>144.000000</td>\n",
" <td>162.000000</td>\n",
" <td>172.000000</td>\n",
" <td>180.000000</td>\n",
" <td>183.000000</td>\n",
" <td>184.000000</td>\n",
" <td>184.000000</td>\n",
" <td>182.000000</td>\n",
" <td>182.000000</td>\n",
" <td>182.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>75%</th>\n",
" <td>19.000000</td>\n",
" <td>174.000000</td>\n",
" <td>176.000000</td>\n",
" <td>178.000000</td>\n",
" <td>179.000000</td>\n",
" <td>181.000000</td>\n",
" <td>182.000000</td>\n",
" <td>183.000000</td>\n",
" <td>184.000000</td>\n",
" <td>185.000000</td>\n",
" <td>...</td>\n",
" <td>196.000000</td>\n",
" <td>202.000000</td>\n",
" <td>205.000000</td>\n",
" <td>207.000000</td>\n",
" <td>208.000000</td>\n",
" <td>207.000000</td>\n",
" <td>207.000000</td>\n",
" <td>206.000000</td>\n",
" <td>204.000000</td>\n",
" <td>204.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>max</th>\n",
" <td>24.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>...</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" <td>255.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>8 rows × 785 columns</p>\n",
"</div>"
],
"text/plain": [
" label pixel1 pixel2 pixel3 pixel4 \\\n",
"count 27455.000000 27455.000000 27455.000000 27455.000000 27455.000000 \n",
"mean 12.318813 145.419377 148.500273 151.247714 153.546531 \n",
"std 7.287552 41.358555 39.942152 39.056286 38.595247 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 6.000000 121.000000 126.000000 130.000000 133.000000 \n",
"50% 13.000000 150.000000 153.000000 156.000000 158.000000 \n",
"75% 19.000000 174.000000 176.000000 178.000000 179.000000 \n",
"max 24.000000 255.000000 255.000000 255.000000 255.000000 \n",
"\n",
" pixel5 pixel6 pixel7 pixel8 pixel9 \\\n",
"count 27455.000000 27455.000000 27455.000000 27455.000000 27455.000000 \n",
"mean 156.210891 158.411255 160.472154 162.339683 163.954799 \n",
"std 37.111165 36.125579 35.016392 33.661998 32.651607 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 137.000000 140.000000 142.000000 144.000000 146.000000 \n",
"50% 160.000000 162.000000 164.000000 165.000000 166.000000 \n",
"75% 181.000000 182.000000 183.000000 184.000000 185.000000 \n",
"max 255.000000 255.000000 255.000000 255.000000 255.000000 \n",
"\n",
" ... pixel775 pixel776 pixel777 pixel778 \\\n",
"count ... 27455.000000 27455.000000 27455.000000 27455.000000 \n",
"mean ... 141.104863 147.495611 153.325806 159.125332 \n",
"std ... 63.751194 65.512894 64.427412 63.708507 \n",
"min ... 0.000000 0.000000 0.000000 0.000000 \n",
"25% ... 92.000000 96.000000 103.000000 112.000000 \n",
"50% ... 144.000000 162.000000 172.000000 180.000000 \n",
"75% ... 196.000000 202.000000 205.000000 207.000000 \n",
"max ... 255.000000 255.000000 255.000000 255.000000 \n",
"\n",
" pixel779 pixel780 pixel781 pixel782 pixel783 \\\n",
"count 27455.000000 27455.000000 27455.000000 27455.000000 27455.000000 \n",
"mean 161.969259 162.736696 162.906137 161.966454 161.137898 \n",
"std 63.738316 63.444008 63.509210 63.298721 63.610415 \n",
"min 0.000000 0.000000 0.000000 0.000000 0.000000 \n",
"25% 120.000000 125.000000 128.000000 128.000000 128.000000 \n",
"50% 183.000000 184.000000 184.000000 182.000000 182.000000 \n",
"75% 208.000000 207.000000 207.000000 206.000000 204.000000 \n",
"max 255.000000 255.000000 255.000000 255.000000 255.000000 \n",
"\n",
" pixel784 \n",
"count 27455.000000 \n",
"mean 159.824731 \n",
"std 64.396846 \n",
"min 0.000000 \n",
"25% 125.500000 \n",
"50% 182.000000 \n",
"75% 204.000000 \n",
"max 255.000000 \n",
"\n",
"[8 rows x 785 columns]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_df = pd.read_csv(\"data/sign_mnist_train.csv\")\n",
"test_df = pd.read_csv(\"data/sign_mnist_test.csv\")\n",
"train_df.describe()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(27455, 785)\n",
"(7172, 785)\n"
]
}
],
"source": [
"print(train_df.shape)\n",
"print(test_df.shape)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Visualize the Dataset"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 864x432 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Checking distribution of each label\n",
"plt.figure(figsize=(12,6))\n",
"count_plot = sns.countplot(x=\"label\",data=train_df)\n",
"count_plot.set_xticklabels(letters)\n",
"fig = count_plot.get_figure()\n",
"fig.savefig(\"results/letters_count.png\") \n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"X_train = train_df.iloc[:, 1:].to_numpy()/255\n",
"X_test = test_df.iloc[:, 1:].to_numpy()/255\n",
"y_train = train_df['label'].to_numpy()\n",
"y_test = test_df['label'].to_numpy()"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 10 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# Plot few images\n",
"fig, ax = plt.subplots(2,5) \n",
"k = 0\n",
"for i in range(2):\n",
" for j in range(5):\n",
" ax[i,j].imshow(X_train[k].reshape(28, 28) , cmap = \"gray\")\n",
" k += 1\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [],
"source": [
"pca = PCA().fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"113 component require for 95% variance\n"
]
}
],
"source": [
"# Principal component analysis\n",
"\n",
"\n",
"fig, ax = plt.subplots()\n",
"\n",
"x = np.arange(1, 785, step=1)\n",
"y = np.cumsum(pca.explained_variance_ratio_)\n",
"\n",
"plt.plot(x[:200:10], y[:200:10], marker='x', linestyle='--', color='r')\n",
"plt.xlabel('No of Components')\n",
"plt.xticks(np.arange(0, 200, step=10),rotation=90)\n",
"plt.ylabel('Variance')\n",
"plt.title('Components needed to capture variance')\n",
"\n",
"plt.axhline(y=0.95, color='green', linestyle='--')\n",
"plt.text(0.5, 0.85, 'threshold', color = 'green')\n",
"\n",
"ax.grid(axis='x')\n",
"plt.tight_layout()\n",
"plt.savefig(\"./results/pca.jpg\")\n",
"plt.show()\n",
"\n",
"for i,j in zip(x,y):\n",
" if(j>0.95):\n",
" print(f\"{i} component require for 95% variance\")\n",
" break"
]
},
{
"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.9.0"
},
"vscode": {
"interpreter": {
"hash": "916dbcbb3f70747c44a77c7bcd40155683ae19c65e1c03b4aa3499c5328201f1"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
File added
This source diff could not be displayed because it is too large. You can view the blob instead.
precision recall f1-score support
0 0.41 0.95 0.57 331
1 0.96 0.88 0.92 432
2 0.95 0.93 0.94 310
3 0.90 0.74 0.81 245
4 0.81 0.86 0.83 498
5 0.74 0.90 0.81 247
6 0.88 0.71 0.78 348
7 0.92 0.81 0.86 436
8 0.80 0.73 0.77 288
9 0.70 0.51 0.59 331
10 0.82 0.90 0.86 209
11 0.72 0.50 0.59 394
12 0.71 0.47 0.56 291
13 0.98 0.65 0.78 246
14 0.78 0.86 0.82 347
15 0.53 0.74 0.62 164
16 0.24 0.38 0.29 144
17 0.35 0.46 0.39 246
18 0.68 0.62 0.65 248
19 0.50 0.56 0.53 266
20 0.77 0.60 0.68 346
21 0.66 0.70 0.68 206
22 0.69 0.60 0.64 267
23 0.67 0.46 0.54 332
accuracy 0.70 7172
macro avg 0.71 0.69 0.69 7172
weighted avg 0.74 0.70 0.71 7172
precision recall f1-score support
0 0.53 0.95 0.68 331
1 0.95 0.93 0.94 432
2 0.99 0.89 0.94 310
3 0.96 0.59 0.73 245
4 0.88 1.00 0.94 498
5 1.00 0.91 0.96 247
6 1.00 0.69 0.82 348
7 0.94 0.89 0.91 436
8 0.52 1.00 0.69 288
9 1.00 0.80 0.89 331
10 1.00 0.93 0.96 209
11 0.97 0.74 0.84 394
12 0.79 0.82 0.80 291
13 1.00 0.83 0.91 246
14 0.93 0.85 0.89 347
15 1.00 0.99 0.99 164
16 0.77 0.86 0.81 144
17 1.00 0.48 0.65 246
18 0.71 0.68 0.70 248
19 0.70 0.82 0.75 266
20 1.00 0.53 0.70 346
21 0.85 1.00 0.92 206
22 0.78 0.96 0.86 267
23 0.69 0.82 0.75 332
accuracy 0.83 7172
macro avg 0.87 0.83 0.83 7172
weighted avg 0.88 0.83 0.84 7172
precision recall f1-score support
0 0.83 1.00 0.91 331
1 1.00 0.99 1.00 432
2 0.92 0.88 0.90 310
3 0.94 0.96 0.95 245
4 0.92 1.00 0.96 498
5 1.00 1.00 1.00 247
6 0.92 0.70 0.80 348
7 0.86 0.94 0.90 436
8 0.87 1.00 0.93 288
9 0.96 0.96 0.96 331
10 0.88 0.89 0.88 209
11 0.98 0.94 0.96 394
12 1.00 0.95 0.97 291
13 0.84 0.81 0.83 246
14 1.00 0.99 0.99 347
15 0.93 1.00 0.96 164
16 0.75 0.57 0.65 144
17 0.83 0.84 0.83 246
18 0.69 0.82 0.75 248
19 0.91 0.98 0.94 266
20 0.89 0.68 0.77 346
21 0.98 1.00 0.99 206
22 0.86 0.92 0.89 267
23 1.00 0.88 0.94 332
accuracy 0.91 7172
macro avg 0.91 0.90 0.90 7172
weighted avg 0.91 0.91 0.91 7172
precision recall f1-score support
0 0.98 1.00 0.99 331
1 1.00 1.00 1.00 432
2 1.00 1.00 1.00 310
3 1.00 1.00 1.00 245
4 0.98 1.00 0.99 498
5 1.00 1.00 1.00 247
6 0.94 0.95 0.94 348
7 0.96 0.95 0.96 436
8 0.94 1.00 0.97 288
9 1.00 0.98 0.99 331
10 0.91 1.00 0.95 209
11 1.00 1.00 1.00 394
12 1.00 0.93 0.96 291
13 1.00 1.00 1.00 246
14 1.00 1.00 1.00 347
15 1.00 1.00 1.00 164
16 0.98 0.72 0.83 144
17 0.98 0.96 0.97 246
18 0.92 0.83 0.88 248
19 0.93 0.99 0.96 266
20 0.95 1.00 0.97 346
21 1.00 1.00 1.00 206
22 0.93 1.00 0.96 267
23 1.00 0.94 0.97 332
accuracy 0.97 7172
macro avg 0.97 0.97 0.97 7172
weighted avg 0.98 0.97 0.97 7172
precision recall f1-score support
0 0.99 1.00 1.00 331
1 1.00 1.00 1.00 432
2 1.00 1.00 1.00 310
3 1.00 1.00 1.00 245
4 1.00 1.00 1.00 498
5 1.00 1.00 1.00 247
6 1.00 1.00 1.00 348
7 1.00 1.00 1.00 436
8 1.00 1.00 1.00 288
9 1.00 1.00 1.00 331
10 1.00 1.00 1.00 209
11 1.00 1.00 1.00 394
12 1.00 1.00 1.00 291
13 1.00 1.00 1.00 246
14 1.00 1.00 1.00 347
15 1.00 1.00 1.00 164
16 1.00 1.00 1.00 144
17 1.00 1.00 1.00 246
18 1.00 1.00 1.00 248
19 1.00 1.00 1.00 266
20 0.99 1.00 1.00 346
21 1.00 1.00 1.00 206
22 1.00 1.00 1.00 267
23 1.00 0.98 0.99 332
accuracy 1.00 7172
macro avg 1.00 1.00 1.00 7172
weighted avg 1.00 1.00 1.00 7172
precision recall f1-score support
0 0.84 1.00 0.91 331
1 0.94 0.93 0.93 432
2 0.97 1.00 0.98 310
3 0.76 0.94 0.84 245
4 0.79 0.97 0.87 498
5 0.88 0.93 0.91 247
6 0.91 0.94 0.92 348
7 0.96 0.95 0.95 436
8 0.86 0.69 0.77 288
10 0.82 0.59 0.69 331
11 0.95 0.93 0.94 209
12 0.79 0.52 0.63 394
13 0.79 0.64 0.70 291
14 1.00 0.92 0.96 246
15 0.99 1.00 1.00 347
16 0.95 1.00 0.97 164
17 0.33 0.61 0.43 144
18 0.67 0.86 0.76 246
19 0.74 0.69 0.71 248
20 0.43 0.66 0.52 266
21 0.69 0.53 0.60 346
22 0.74 0.74 0.74 206
23 0.82 0.69 0.75 267
24 0.97 0.70 0.81 332
accuracy 0.81 7172
macro avg 0.82 0.81 0.80 7172
weighted avg 0.83 0.81 0.81 7172
precision recall f1-score support
0 0.93 1.00 0.96 331
1 1.00 0.99 1.00 432
2 0.88 0.99 0.93 310
3 0.95 1.00 0.97 245
4 0.94 0.99 0.97 498
5 0.76 0.83 0.80 247
6 0.94 0.90 0.92 348
7 0.97 0.95 0.96 436
8 0.82 0.90 0.85 288
10 0.81 0.66 0.73 331
11 0.87 1.00 0.93 209
12 0.84 0.73 0.78 394
13 0.90 0.67 0.77 291
14 0.95 0.85 0.89 246
15 1.00 1.00 1.00 347
16 1.00 0.99 1.00 164
17 0.33 0.61 0.43 144
18 0.72 0.81 0.76 246
19 0.84 0.69 0.76 248
20 0.62 0.64 0.63 266
21 0.79 0.62 0.69 346
22 0.64 0.80 0.71 206
23 0.84 0.81 0.83 267
24 0.85 0.76 0.80 332
accuracy 0.85 7172
macro avg 0.84 0.84 0.84 7172
weighted avg 0.86 0.85 0.85 7172
......@@ -32,7 +32,7 @@ def save_model_history(model_history, model_name):
def save_results(y_test, y_pred, model_name="model"):
with open('./results/svm_scores.txt', 'w') as f:
with open("./results/"+model_name+"_scores.txt", 'w') as f:
print(metrics.classification_report(y_test, y_pred), file = f)
print(metrics.classification_report(y_test, y_pred))
# Confusion matrix
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment