hç
commited on
Upload 7 files
Browse files- Game of Thrones – Karakterin Ölüp Ölmediğini Tahmin Etme (ML Sınıflandırma).ipynb +460 -0
- README.md +42 -20
- app.py +31 -0
- got_house_encoder.pkl +3 -0
- got_isalive_model.pkl +3 -0
- got_title_encoder.pkl +3 -0
- requirements.txt +4 -3
Game of Thrones – Karakterin Ölüp Ölmediğini Tahmin Etme (ML Sınıflandırma).ipynb
ADDED
|
@@ -0,0 +1,460 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
{
|
| 2 |
+
"cells": [
|
| 3 |
+
{
|
| 4 |
+
"cell_type": "code",
|
| 5 |
+
"execution_count": 1,
|
| 6 |
+
"id": "f3e15233-ef0f-42fd-8fee-bf045d0ed4cf",
|
| 7 |
+
"metadata": {},
|
| 8 |
+
"outputs": [
|
| 9 |
+
{
|
| 10 |
+
"name": "stdout",
|
| 11 |
+
"output_type": "stream",
|
| 12 |
+
"text": [
|
| 13 |
+
"(1946, 33)\n"
|
| 14 |
+
]
|
| 15 |
+
},
|
| 16 |
+
{
|
| 17 |
+
"data": {
|
| 18 |
+
"text/html": [
|
| 19 |
+
"<div>\n",
|
| 20 |
+
"<style scoped>\n",
|
| 21 |
+
" .dataframe tbody tr th:only-of-type {\n",
|
| 22 |
+
" vertical-align: middle;\n",
|
| 23 |
+
" }\n",
|
| 24 |
+
"\n",
|
| 25 |
+
" .dataframe tbody tr th {\n",
|
| 26 |
+
" vertical-align: top;\n",
|
| 27 |
+
" }\n",
|
| 28 |
+
"\n",
|
| 29 |
+
" .dataframe thead th {\n",
|
| 30 |
+
" text-align: right;\n",
|
| 31 |
+
" }\n",
|
| 32 |
+
"</style>\n",
|
| 33 |
+
"<table border=\"1\" class=\"dataframe\">\n",
|
| 34 |
+
" <thead>\n",
|
| 35 |
+
" <tr style=\"text-align: right;\">\n",
|
| 36 |
+
" <th></th>\n",
|
| 37 |
+
" <th>S.No</th>\n",
|
| 38 |
+
" <th>actual</th>\n",
|
| 39 |
+
" <th>pred</th>\n",
|
| 40 |
+
" <th>alive</th>\n",
|
| 41 |
+
" <th>plod</th>\n",
|
| 42 |
+
" <th>name</th>\n",
|
| 43 |
+
" <th>title</th>\n",
|
| 44 |
+
" <th>male</th>\n",
|
| 45 |
+
" <th>culture</th>\n",
|
| 46 |
+
" <th>dateOfBirth</th>\n",
|
| 47 |
+
" <th>...</th>\n",
|
| 48 |
+
" <th>isAliveHeir</th>\n",
|
| 49 |
+
" <th>isAliveSpouse</th>\n",
|
| 50 |
+
" <th>isMarried</th>\n",
|
| 51 |
+
" <th>isNoble</th>\n",
|
| 52 |
+
" <th>age</th>\n",
|
| 53 |
+
" <th>numDeadRelations</th>\n",
|
| 54 |
+
" <th>boolDeadRelations</th>\n",
|
| 55 |
+
" <th>isPopular</th>\n",
|
| 56 |
+
" <th>popularity</th>\n",
|
| 57 |
+
" <th>isAlive</th>\n",
|
| 58 |
+
" </tr>\n",
|
| 59 |
+
" </thead>\n",
|
| 60 |
+
" <tbody>\n",
|
| 61 |
+
" <tr>\n",
|
| 62 |
+
" <th>0</th>\n",
|
| 63 |
+
" <td>1</td>\n",
|
| 64 |
+
" <td>0</td>\n",
|
| 65 |
+
" <td>0</td>\n",
|
| 66 |
+
" <td>0.054</td>\n",
|
| 67 |
+
" <td>0.946</td>\n",
|
| 68 |
+
" <td>Viserys II Targaryen</td>\n",
|
| 69 |
+
" <td>NaN</td>\n",
|
| 70 |
+
" <td>1</td>\n",
|
| 71 |
+
" <td>NaN</td>\n",
|
| 72 |
+
" <td>NaN</td>\n",
|
| 73 |
+
" <td>...</td>\n",
|
| 74 |
+
" <td>0.0</td>\n",
|
| 75 |
+
" <td>NaN</td>\n",
|
| 76 |
+
" <td>0</td>\n",
|
| 77 |
+
" <td>0</td>\n",
|
| 78 |
+
" <td>NaN</td>\n",
|
| 79 |
+
" <td>11</td>\n",
|
| 80 |
+
" <td>1</td>\n",
|
| 81 |
+
" <td>1</td>\n",
|
| 82 |
+
" <td>0.605351</td>\n",
|
| 83 |
+
" <td>0</td>\n",
|
| 84 |
+
" </tr>\n",
|
| 85 |
+
" <tr>\n",
|
| 86 |
+
" <th>1</th>\n",
|
| 87 |
+
" <td>2</td>\n",
|
| 88 |
+
" <td>1</td>\n",
|
| 89 |
+
" <td>0</td>\n",
|
| 90 |
+
" <td>0.387</td>\n",
|
| 91 |
+
" <td>0.613</td>\n",
|
| 92 |
+
" <td>Walder Frey</td>\n",
|
| 93 |
+
" <td>Lord of the Crossing</td>\n",
|
| 94 |
+
" <td>1</td>\n",
|
| 95 |
+
" <td>Rivermen</td>\n",
|
| 96 |
+
" <td>208.0</td>\n",
|
| 97 |
+
" <td>...</td>\n",
|
| 98 |
+
" <td>NaN</td>\n",
|
| 99 |
+
" <td>1.0</td>\n",
|
| 100 |
+
" <td>1</td>\n",
|
| 101 |
+
" <td>1</td>\n",
|
| 102 |
+
" <td>97.0</td>\n",
|
| 103 |
+
" <td>1</td>\n",
|
| 104 |
+
" <td>1</td>\n",
|
| 105 |
+
" <td>1</td>\n",
|
| 106 |
+
" <td>0.896321</td>\n",
|
| 107 |
+
" <td>1</td>\n",
|
| 108 |
+
" </tr>\n",
|
| 109 |
+
" <tr>\n",
|
| 110 |
+
" <th>2</th>\n",
|
| 111 |
+
" <td>3</td>\n",
|
| 112 |
+
" <td>1</td>\n",
|
| 113 |
+
" <td>0</td>\n",
|
| 114 |
+
" <td>0.493</td>\n",
|
| 115 |
+
" <td>0.507</td>\n",
|
| 116 |
+
" <td>Addison Hill</td>\n",
|
| 117 |
+
" <td>Ser</td>\n",
|
| 118 |
+
" <td>1</td>\n",
|
| 119 |
+
" <td>NaN</td>\n",
|
| 120 |
+
" <td>NaN</td>\n",
|
| 121 |
+
" <td>...</td>\n",
|
| 122 |
+
" <td>NaN</td>\n",
|
| 123 |
+
" <td>NaN</td>\n",
|
| 124 |
+
" <td>0</td>\n",
|
| 125 |
+
" <td>1</td>\n",
|
| 126 |
+
" <td>NaN</td>\n",
|
| 127 |
+
" <td>0</td>\n",
|
| 128 |
+
" <td>0</td>\n",
|
| 129 |
+
" <td>0</td>\n",
|
| 130 |
+
" <td>0.267559</td>\n",
|
| 131 |
+
" <td>1</td>\n",
|
| 132 |
+
" </tr>\n",
|
| 133 |
+
" <tr>\n",
|
| 134 |
+
" <th>3</th>\n",
|
| 135 |
+
" <td>4</td>\n",
|
| 136 |
+
" <td>0</td>\n",
|
| 137 |
+
" <td>0</td>\n",
|
| 138 |
+
" <td>0.076</td>\n",
|
| 139 |
+
" <td>0.924</td>\n",
|
| 140 |
+
" <td>Aemma Arryn</td>\n",
|
| 141 |
+
" <td>Queen</td>\n",
|
| 142 |
+
" <td>0</td>\n",
|
| 143 |
+
" <td>NaN</td>\n",
|
| 144 |
+
" <td>82.0</td>\n",
|
| 145 |
+
" <td>...</td>\n",
|
| 146 |
+
" <td>NaN</td>\n",
|
| 147 |
+
" <td>0.0</td>\n",
|
| 148 |
+
" <td>1</td>\n",
|
| 149 |
+
" <td>1</td>\n",
|
| 150 |
+
" <td>23.0</td>\n",
|
| 151 |
+
" <td>0</td>\n",
|
| 152 |
+
" <td>0</td>\n",
|
| 153 |
+
" <td>0</td>\n",
|
| 154 |
+
" <td>0.183946</td>\n",
|
| 155 |
+
" <td>0</td>\n",
|
| 156 |
+
" </tr>\n",
|
| 157 |
+
" <tr>\n",
|
| 158 |
+
" <th>4</th>\n",
|
| 159 |
+
" <td>5</td>\n",
|
| 160 |
+
" <td>1</td>\n",
|
| 161 |
+
" <td>1</td>\n",
|
| 162 |
+
" <td>0.617</td>\n",
|
| 163 |
+
" <td>0.383</td>\n",
|
| 164 |
+
" <td>Sylva Santagar</td>\n",
|
| 165 |
+
" <td>Greenstone</td>\n",
|
| 166 |
+
" <td>0</td>\n",
|
| 167 |
+
" <td>Dornish</td>\n",
|
| 168 |
+
" <td>276.0</td>\n",
|
| 169 |
+
" <td>...</td>\n",
|
| 170 |
+
" <td>NaN</td>\n",
|
| 171 |
+
" <td>1.0</td>\n",
|
| 172 |
+
" <td>1</td>\n",
|
| 173 |
+
" <td>1</td>\n",
|
| 174 |
+
" <td>29.0</td>\n",
|
| 175 |
+
" <td>0</td>\n",
|
| 176 |
+
" <td>0</td>\n",
|
| 177 |
+
" <td>0</td>\n",
|
| 178 |
+
" <td>0.043478</td>\n",
|
| 179 |
+
" <td>1</td>\n",
|
| 180 |
+
" </tr>\n",
|
| 181 |
+
" </tbody>\n",
|
| 182 |
+
"</table>\n",
|
| 183 |
+
"<p>5 rows × 33 columns</p>\n",
|
| 184 |
+
"</div>"
|
| 185 |
+
],
|
| 186 |
+
"text/plain": [
|
| 187 |
+
" S.No actual pred alive plod name \\\n",
|
| 188 |
+
"0 1 0 0 0.054 0.946 Viserys II Targaryen \n",
|
| 189 |
+
"1 2 1 0 0.387 0.613 Walder Frey \n",
|
| 190 |
+
"2 3 1 0 0.493 0.507 Addison Hill \n",
|
| 191 |
+
"3 4 0 0 0.076 0.924 Aemma Arryn \n",
|
| 192 |
+
"4 5 1 1 0.617 0.383 Sylva Santagar \n",
|
| 193 |
+
"\n",
|
| 194 |
+
" title male culture dateOfBirth ... isAliveHeir \\\n",
|
| 195 |
+
"0 NaN 1 NaN NaN ... 0.0 \n",
|
| 196 |
+
"1 Lord of the Crossing 1 Rivermen 208.0 ... NaN \n",
|
| 197 |
+
"2 Ser 1 NaN NaN ... NaN \n",
|
| 198 |
+
"3 Queen 0 NaN 82.0 ... NaN \n",
|
| 199 |
+
"4 Greenstone 0 Dornish 276.0 ... NaN \n",
|
| 200 |
+
"\n",
|
| 201 |
+
" isAliveSpouse isMarried isNoble age numDeadRelations boolDeadRelations \\\n",
|
| 202 |
+
"0 NaN 0 0 NaN 11 1 \n",
|
| 203 |
+
"1 1.0 1 1 97.0 1 1 \n",
|
| 204 |
+
"2 NaN 0 1 NaN 0 0 \n",
|
| 205 |
+
"3 0.0 1 1 23.0 0 0 \n",
|
| 206 |
+
"4 1.0 1 1 29.0 0 0 \n",
|
| 207 |
+
"\n",
|
| 208 |
+
" isPopular popularity isAlive \n",
|
| 209 |
+
"0 1 0.605351 0 \n",
|
| 210 |
+
"1 1 0.896321 1 \n",
|
| 211 |
+
"2 0 0.267559 1 \n",
|
| 212 |
+
"3 0 0.183946 0 \n",
|
| 213 |
+
"4 0 0.043478 1 \n",
|
| 214 |
+
"\n",
|
| 215 |
+
"[5 rows x 33 columns]"
|
| 216 |
+
]
|
| 217 |
+
},
|
| 218 |
+
"execution_count": 1,
|
| 219 |
+
"metadata": {},
|
| 220 |
+
"output_type": "execute_result"
|
| 221 |
+
}
|
| 222 |
+
],
|
| 223 |
+
"source": [
|
| 224 |
+
"import pandas as pd\n",
|
| 225 |
+
"\n",
|
| 226 |
+
"# CSV dosyasını oku (gerekirse adını değiştir)\n",
|
| 227 |
+
"df = pd.read_csv(\"character-predictions.csv\")\n",
|
| 228 |
+
"\n",
|
| 229 |
+
"# İlk 5 satıra göz at\n",
|
| 230 |
+
"print(df.shape)\n",
|
| 231 |
+
"df.head()\n"
|
| 232 |
+
]
|
| 233 |
+
},
|
| 234 |
+
{
|
| 235 |
+
"cell_type": "markdown",
|
| 236 |
+
"id": "93107ff0-9d1f-44de-9321-a3df088047fb",
|
| 237 |
+
"metadata": {},
|
| 238 |
+
"source": [
|
| 239 |
+
"Hedef: isAlive\n",
|
| 240 |
+
"Bu sütun:\n",
|
| 241 |
+
"\n",
|
| 242 |
+
"1 → karakter hayatta\n",
|
| 243 |
+
"\n",
|
| 244 |
+
"0 → karakter ölmüş"
|
| 245 |
+
]
|
| 246 |
+
},
|
| 247 |
+
{
|
| 248 |
+
"cell_type": "markdown",
|
| 249 |
+
"id": "a8b0f6d3-de1b-47a4-9f34-aa5a15088a81",
|
| 250 |
+
"metadata": {},
|
| 251 |
+
"source": [
|
| 252 |
+
"Eksik Değer ve Hedef Dağılımı"
|
| 253 |
+
]
|
| 254 |
+
},
|
| 255 |
+
{
|
| 256 |
+
"cell_type": "code",
|
| 257 |
+
"execution_count": 2,
|
| 258 |
+
"id": "160ab417-8a89-471d-824e-805a88d4d122",
|
| 259 |
+
"metadata": {},
|
| 260 |
+
"outputs": [
|
| 261 |
+
{
|
| 262 |
+
"name": "stdout",
|
| 263 |
+
"output_type": "stream",
|
| 264 |
+
"text": [
|
| 265 |
+
"Eksik oranı % yüksek olan sütunlar:\n",
|
| 266 |
+
"mother 0.989209\n",
|
| 267 |
+
"isAliveMother 0.989209\n",
|
| 268 |
+
"isAliveHeir 0.988181\n",
|
| 269 |
+
"heir 0.988181\n",
|
| 270 |
+
"father 0.986639\n",
|
| 271 |
+
"isAliveFather 0.986639\n",
|
| 272 |
+
"isAliveSpouse 0.858171\n",
|
| 273 |
+
"spouse 0.858171\n",
|
| 274 |
+
"dateOfBirth 0.777492\n",
|
| 275 |
+
"age 0.777492\n",
|
| 276 |
+
"DateoFdeath 0.771840\n",
|
| 277 |
+
"culture 0.652107\n",
|
| 278 |
+
"title 0.517986\n",
|
| 279 |
+
"house 0.219424\n",
|
| 280 |
+
"dtype: float64\n",
|
| 281 |
+
"isAlive\n",
|
| 282 |
+
"1 0.745632\n",
|
| 283 |
+
"0 0.254368\n",
|
| 284 |
+
"Name: proportion, dtype: float64\n"
|
| 285 |
+
]
|
| 286 |
+
},
|
| 287 |
+
{
|
| 288 |
+
"data": {
|
| 289 |
+
"text/plain": [
|
| 290 |
+
"<Axes: title={'center': 'Hayatta Kalma Durumu'}, xlabel='isAlive'>"
|
| 291 |
+
]
|
| 292 |
+
},
|
| 293 |
+
"execution_count": 2,
|
| 294 |
+
"metadata": {},
|
| 295 |
+
"output_type": "execute_result"
|
| 296 |
+
},
|
| 297 |
+
{
|
| 298 |
+
"data": {
|
| 299 |
+
"image/png": "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yuFwqKSkRJKUnp6uiIiIgOwbgDkIMABq3AcffKCnn376tMfn5OSoUaNGSkxM/N2xt912m7755puzKQ+AgQgwAGpcy5Yt1bx589MeP3/+fI0ZM0bZ2dnat2/fKceGh4crMjLybEsEYBgCDIAa99tLSHPmzNHFF1+ssLAwRUVF6eabb/YbW1paqnfffVcPPPCAEhMTlZ6efsp9//YS0jfffCOHw6EdO3b4jXnppZfUoUMHe/2rr77S4MGD1axZM0VFRWn48OH2C9MAmIEAA6DWbNq0SWPHjtXUqVO1c+dOZWZm6pprrvEb895776lTp07q2LGj7rzzTi1YsOCU33v1W3/4wx/Uq1cvZWRk+LVnZGTojjvukCSVlJSof//+6tGjhzZt2qTMzEwVFhbyenrAMAQYALVm7969atq0qYYMGaK2bduqR48eGjt2rN+Y+fPn684775QkDRo0SF6vV+vWrTvtOVJSUvT222/b6998843y8vKUkpIiSXr11VfVo0cPPfvss+rUqZN69OihBQsWaM2aNdxLAxiEAAOg1lx33XVq27atLrzwQg0fPlwZGRk6dOiQ3b9z505t3LhRt99+uyQpODhYt912m+bPn3/acyQnJ2vPnj364osvJP337Mtll12mTp06Sfrvd2WtWbNGzZo1s5fKvu+//z5QhwqghvFdSABqTfPmzbV582atXbtWK1eu1OTJkzVlyhTl5uYqIiJC8+fP19GjR+V2u+1tLMtSaGioXn31Vblcrt+dIzo6Wv3799fixYvVp08fLV68WA888IDdX1paqqFDh+r5558/YVu+dwcwB2dgANSq4OBgxcfHa/r06dq6dav27Nmj1atX6+jRo3rzzTf197//Xfn5+fayZcsWud1uv8tCvyclJUXvvvuucnJytGvXLiUnJ9t9l112mbZt26Z27drpoosu8luaNm1aE4cMoAYQYADUmuXLl2vWrFnKz8/XDz/8oDfffFMVFRXq2LGjli9frv3792vkyJHq2rWr35KUlFSty0g33XSTDhw4oAceeEDXXnut3xmd1NRUFRcX6/bbb1dubq6+//57rVixQvfcc4+OHTtWE4cNoAYQYADUmoiICH3wwQfq37+/OnfurHnz5untt99Wly5dNH/+fMXHx1d5mSgpKUmbNm3S1q1bT2ue5s2ba+jQodqyZYt9824lt9ut9evX69ixYxo4cKC6deumcePGKSIiQkFB/JUImMJhne7ziQAAAPUE/9wAAADGIcAAAADjEGAAAIBxCDAAAMA4BBgAAGAcAgwAADAOAQYAABiHAAMAAIxDgAEAAMYhwAAAAOMQYAAAgHEIMAAAwDj/H/P036tM3Uh+AAAAAElFTkSuQmCC",
|
| 300 |
+
"text/plain": [
|
| 301 |
+
"<Figure size 640x480 with 1 Axes>"
|
| 302 |
+
]
|
| 303 |
+
},
|
| 304 |
+
"metadata": {},
|
| 305 |
+
"output_type": "display_data"
|
| 306 |
+
}
|
| 307 |
+
],
|
| 308 |
+
"source": [
|
| 309 |
+
"# Eksik verileri kontrol et\n",
|
| 310 |
+
"missing = df.isnull().mean().sort_values(ascending=False)\n",
|
| 311 |
+
"print(\"Eksik oranı % yüksek olan sütunlar:\")\n",
|
| 312 |
+
"print(missing[missing > 0.1])\n",
|
| 313 |
+
"\n",
|
| 314 |
+
"# Hedef değişken dağılımı\n",
|
| 315 |
+
"print(df[\"isAlive\"].value_counts(normalize=True))\n",
|
| 316 |
+
"df[\"isAlive\"].value_counts().plot(kind=\"bar\", title=\"Hayatta Kalma Durumu\")\n"
|
| 317 |
+
]
|
| 318 |
+
},
|
| 319 |
+
{
|
| 320 |
+
"cell_type": "code",
|
| 321 |
+
"execution_count": 3,
|
| 322 |
+
"id": "02c6ab81-7fed-4458-add3-3593a33c22f5",
|
| 323 |
+
"metadata": {},
|
| 324 |
+
"outputs": [],
|
| 325 |
+
"source": [
|
| 326 |
+
"features = [\n",
|
| 327 |
+
" 'male',\n",
|
| 328 |
+
" 'popularity',\n",
|
| 329 |
+
" 'house',\n",
|
| 330 |
+
" 'title'\n",
|
| 331 |
+
"]\n"
|
| 332 |
+
]
|
| 333 |
+
},
|
| 334 |
+
{
|
| 335 |
+
"cell_type": "code",
|
| 336 |
+
"execution_count": 4,
|
| 337 |
+
"id": "4bd553d0-3e4f-42f2-b8c0-513acddd2f76",
|
| 338 |
+
"metadata": {},
|
| 339 |
+
"outputs": [],
|
| 340 |
+
"source": [
|
| 341 |
+
"df['house'] = df['house'].fillna(\"Unknown\")\n",
|
| 342 |
+
"df['title'] = df['title'].fillna(\"Unknown\")\n",
|
| 343 |
+
"\n",
|
| 344 |
+
"# Label encoding\n",
|
| 345 |
+
"from sklearn.preprocessing import LabelEncoder\n",
|
| 346 |
+
"\n",
|
| 347 |
+
"le_house = LabelEncoder()\n",
|
| 348 |
+
"le_title = LabelEncoder()\n",
|
| 349 |
+
"\n",
|
| 350 |
+
"df['house_encoded'] = le_house.fit_transform(df['house'])\n",
|
| 351 |
+
"df['title_encoded'] = le_title.fit_transform(df['title'])\n"
|
| 352 |
+
]
|
| 353 |
+
},
|
| 354 |
+
{
|
| 355 |
+
"cell_type": "code",
|
| 356 |
+
"execution_count": 5,
|
| 357 |
+
"id": "afbeeb5e-fcdc-4389-b307-8379d3357005",
|
| 358 |
+
"metadata": {},
|
| 359 |
+
"outputs": [],
|
| 360 |
+
"source": [
|
| 361 |
+
"features = ['male', 'popularity', 'house_encoded', 'title_encoded']\n",
|
| 362 |
+
"X = df[features]\n",
|
| 363 |
+
"y = df['isAlive']\n"
|
| 364 |
+
]
|
| 365 |
+
},
|
| 366 |
+
{
|
| 367 |
+
"cell_type": "code",
|
| 368 |
+
"execution_count": 6,
|
| 369 |
+
"id": "8737a7d6-e30b-4eb2-b0a9-d7dac67e2b78",
|
| 370 |
+
"metadata": {},
|
| 371 |
+
"outputs": [
|
| 372 |
+
{
|
| 373 |
+
"name": "stdout",
|
| 374 |
+
"output_type": "stream",
|
| 375 |
+
"text": [
|
| 376 |
+
"Accuracy: 0.735897435897436\n",
|
| 377 |
+
" precision recall f1-score support\n",
|
| 378 |
+
"\n",
|
| 379 |
+
" 0 0.43 0.28 0.34 94\n",
|
| 380 |
+
" 1 0.79 0.88 0.84 296\n",
|
| 381 |
+
"\n",
|
| 382 |
+
" accuracy 0.74 390\n",
|
| 383 |
+
" macro avg 0.61 0.58 0.59 390\n",
|
| 384 |
+
"weighted avg 0.70 0.74 0.71 390\n",
|
| 385 |
+
"\n"
|
| 386 |
+
]
|
| 387 |
+
}
|
| 388 |
+
],
|
| 389 |
+
"source": [
|
| 390 |
+
"from sklearn.ensemble import RandomForestClassifier\n",
|
| 391 |
+
"from sklearn.model_selection import train_test_split\n",
|
| 392 |
+
"from sklearn.metrics import accuracy_score, classification_report\n",
|
| 393 |
+
"\n",
|
| 394 |
+
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
|
| 395 |
+
"\n",
|
| 396 |
+
"model = RandomForestClassifier(random_state=42)\n",
|
| 397 |
+
"model.fit(X_train, y_train)\n",
|
| 398 |
+
"\n",
|
| 399 |
+
"y_pred = model.predict(X_test)\n",
|
| 400 |
+
"\n",
|
| 401 |
+
"print(\"Accuracy:\", accuracy_score(y_test, y_pred))\n",
|
| 402 |
+
"print(classification_report(y_test, y_pred))\n"
|
| 403 |
+
]
|
| 404 |
+
},
|
| 405 |
+
{
|
| 406 |
+
"cell_type": "code",
|
| 407 |
+
"execution_count": 8,
|
| 408 |
+
"id": "fd69a795-c6b2-4f8f-ac62-87ec5c50f993",
|
| 409 |
+
"metadata": {},
|
| 410 |
+
"outputs": [
|
| 411 |
+
{
|
| 412 |
+
"data": {
|
| 413 |
+
"text/plain": [
|
| 414 |
+
"['got_title_encoder.pkl']"
|
| 415 |
+
]
|
| 416 |
+
},
|
| 417 |
+
"execution_count": 8,
|
| 418 |
+
"metadata": {},
|
| 419 |
+
"output_type": "execute_result"
|
| 420 |
+
}
|
| 421 |
+
],
|
| 422 |
+
"source": [
|
| 423 |
+
"import joblib\n",
|
| 424 |
+
"\n",
|
| 425 |
+
"joblib.dump(model, \"got_isalive_model.pkl\")\n",
|
| 426 |
+
"joblib.dump(le_house, \"got_house_encoder.pkl\")\n",
|
| 427 |
+
"joblib.dump(le_title, \"got_title_encoder.pkl\")\n"
|
| 428 |
+
]
|
| 429 |
+
},
|
| 430 |
+
{
|
| 431 |
+
"cell_type": "code",
|
| 432 |
+
"execution_count": null,
|
| 433 |
+
"id": "9328cd52-72b0-4f5d-8790-c2a2ea2ae131",
|
| 434 |
+
"metadata": {},
|
| 435 |
+
"outputs": [],
|
| 436 |
+
"source": []
|
| 437 |
+
}
|
| 438 |
+
],
|
| 439 |
+
"metadata": {
|
| 440 |
+
"kernelspec": {
|
| 441 |
+
"display_name": "Python 3 (ipykernel)",
|
| 442 |
+
"language": "python",
|
| 443 |
+
"name": "python3"
|
| 444 |
+
},
|
| 445 |
+
"language_info": {
|
| 446 |
+
"codemirror_mode": {
|
| 447 |
+
"name": "ipython",
|
| 448 |
+
"version": 3
|
| 449 |
+
},
|
| 450 |
+
"file_extension": ".py",
|
| 451 |
+
"mimetype": "text/x-python",
|
| 452 |
+
"name": "python",
|
| 453 |
+
"nbconvert_exporter": "python",
|
| 454 |
+
"pygments_lexer": "ipython3",
|
| 455 |
+
"version": "3.12.9"
|
| 456 |
+
}
|
| 457 |
+
},
|
| 458 |
+
"nbformat": 4,
|
| 459 |
+
"nbformat_minor": 5
|
| 460 |
+
}
|
README.md
CHANGED
|
@@ -1,20 +1,42 @@
|
|
| 1 |
-
---
|
| 2 |
-
|
| 3 |
-
|
| 4 |
-
|
| 5 |
-
|
| 6 |
-
|
| 7 |
-
|
| 8 |
-
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
tags:
|
| 3 |
+
- machine-learning
|
| 4 |
+
- classification
|
| 5 |
+
- game-of-thrones
|
| 6 |
+
- streamlit
|
| 7 |
+
- huggingface
|
| 8 |
+
---
|
| 9 |
+
|
| 10 |
+
# 🐉 Game of Thrones – Karakter Hayatta mı? (ML Modeli)
|
| 11 |
+
|
| 12 |
+
Bu proje, Game of Thrones evrenindeki karakterlerin hayatta kalıp kalmadığını tahmin etmek için oluşturulmuş bir makine öğrenimi modelidir.
|
| 13 |
+
|
| 14 |
+
## 🔍 Kullanılan Özellikler
|
| 15 |
+
|
| 16 |
+
- Cinsiyet (male)
|
| 17 |
+
- Popülerlik
|
| 18 |
+
- House (label encoded)
|
| 19 |
+
- Title (label encoded)
|
| 20 |
+
|
| 21 |
+
## 🎯 Model
|
| 22 |
+
|
| 23 |
+
- `RandomForestClassifier`
|
| 24 |
+
- Accuracy: ~ (senin çıktın neyse onu yaz)
|
| 25 |
+
|
| 26 |
+
## 🖥 Streamlit Arayüzü
|
| 27 |
+
|
| 28 |
+
Kullanıcı girişlerine göre karakterin yaşayıp yaşamadığını tahmin eder.
|
| 29 |
+
|
| 30 |
+
## 🔧 Gereksinimler
|
| 31 |
+
|
| 32 |
+
```bash
|
| 33 |
+
pip install -r requirements.txt
|
| 34 |
+
|
| 35 |
+
|
| 36 |
+
▶️ Uygulama
|
| 37 |
+
|
| 38 |
+
streamlit run app.py
|
| 39 |
+
|
| 40 |
+
|
| 41 |
+
|
| 42 |
+
|
app.py
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
|
| 2 |
+
import streamlit as st
|
| 3 |
+
import joblib
|
| 4 |
+
import numpy as np
|
| 5 |
+
|
| 6 |
+
# Model ve encoder'ları yükle
|
| 7 |
+
model = joblib.load("got_isalive_model.pkl")
|
| 8 |
+
house_encoder = joblib.load("got_house_encoder.pkl")
|
| 9 |
+
title_encoder = joblib.load("got_title_encoder.pkl")
|
| 10 |
+
|
| 11 |
+
st.title("🛡️ Game of Thrones – Hayatta mı?")
|
| 12 |
+
|
| 13 |
+
# Kullanıcıdan giriş al
|
| 14 |
+
male = st.selectbox("Cinsiyet", ["Erkek", "Kadın"])
|
| 15 |
+
popularity = st.slider("Popülarite (0-1 arası)", 0.0, 1.0, 0.5)
|
| 16 |
+
house = st.selectbox("House", house_encoder.classes_)
|
| 17 |
+
title = st.selectbox("Title", title_encoder.classes_)
|
| 18 |
+
|
| 19 |
+
# Girdileri encode et
|
| 20 |
+
male_val = 1 if male == "Erkek" else 0
|
| 21 |
+
house_val = house_encoder.transform([house])[0]
|
| 22 |
+
title_val = title_encoder.transform([title])[0]
|
| 23 |
+
|
| 24 |
+
# Tahmin
|
| 25 |
+
X_input = np.array([[male_val, popularity, house_val, title_val]])
|
| 26 |
+
prediction = model.predict(X_input)[0]
|
| 27 |
+
|
| 28 |
+
if prediction == 1:
|
| 29 |
+
st.success("✅ Bu karakter hayatta!")
|
| 30 |
+
else:
|
| 31 |
+
st.error("☠️ Bu karakter maalesef ölmüş.")
|
got_house_encoder.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:6824d76c6f2b0073423b272ed368f663c545c9879b07d568880da9cf8eb0b30c
|
| 3 |
+
size 8158
|
got_isalive_model.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:08a8750ede9ce529c6f04057594bfa7abeeb63194784376197070bc0bba6afbe
|
| 3 |
+
size 5393305
|
got_title_encoder.pkl
ADDED
|
@@ -0,0 +1,3 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
version https://git-lfs.github.com/spec/v1
|
| 2 |
+
oid sha256:bfeb8d04ff1f21bfbdf89921895d86d7a8e78f8e9cef28aaa1c47729f4479f86
|
| 3 |
+
size 5970
|
requirements.txt
CHANGED
|
@@ -1,3 +1,4 @@
|
|
| 1 |
-
|
| 2 |
-
pandas
|
| 3 |
-
|
|
|
|
|
|
| 1 |
+
streamlit
|
| 2 |
+
pandas
|
| 3 |
+
scikit-learn
|
| 4 |
+
joblib
|