research/machine_learning/scripts/ml/randomforest.ipynb
2024-01-31 21:41:29 +01:00

939 lines
54 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"id": "4d2a8b6c",
"metadata": {},
"source": [
"#### Database"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "7be9eeff",
"metadata": {},
"outputs": [],
"source": [
"PROJECT_PATH = '/home/md/Work/ligalytics/leagues_stable/'\n",
"import os, sys\n",
"sys.path.insert(0, PROJECT_PATH)\n",
"os.environ.setdefault(\"DJANGO_SETTINGS_MODULE\", \"leagues.settings\")\n",
"\n",
"from leagues import settings\n",
"settings.DATABASES['default']['NAME'] = PROJECT_PATH+'/db.sqlite3'\n",
"\n",
"import django\n",
"django.setup()\n",
"\n",
"from scheduler.models import *\n",
"from common.functions import distanceInKmByGPS\n",
"season = Season.objects.filter(nicename=\"Imported: Benchmark Season\").first()\n",
"import pandas as pd\n",
"import numpy as np\n",
"from django.db.models import F\n",
"games = Game.objects.filter(season=season)\n",
"df = pd.DataFrame.from_records(games.values())\n",
"games = Game.objects.filter(season=season).annotate(\n",
" home=F('homeTeam__shortname'),\n",
" away=F('awayTeam__shortname'),\n",
" home_lat=F('homeTeam__latitude'),\n",
" home_lon=F('homeTeam__longitude'),\n",
" home_attr=F('homeTeam__attractivity'),\n",
" away_lat=F('awayTeam__latitude'),\n",
" away_lon=F('awayTeam__longitude'),\n",
" away_attr=F('awayTeam__attractivity'),\n",
" home_country=F('homeTeam__country'),\n",
" away_country=F('awayTeam__country'),\n",
").values()\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "bc191792",
"metadata": {},
"source": [
"#### Dataframe"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "1e404cf8",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.preprocessing import OneHotEncoder\n",
"\n",
"# create dataset\n",
"df = pd.DataFrame.from_records(games.values())\n",
"\n",
"# data cleaning\n",
"df['time'] = df['time'].replace('','0')\n",
"df = df[df['attendance'] != 0]\n",
"\n",
"# remove outliers\n",
"out_fields = ['attendance']\n",
"for field in out_fields:\n",
" q_low = df[field].quantile(0.01)\n",
" q_hi = df[field].quantile(0.99)\n",
" df = df[(df[field] < q_hi) & (df[field] > q_low)]\n",
"\n",
"\n",
"# pivots\n",
"pivot_homeTeam_mean = df.pivot_table('attendance','homeTeam_id',aggfunc='mean')\n",
"pivot_homeTeam_max = df.pivot_table('attendance','homeTeam_id',aggfunc='max')\n",
"\n",
"# add more features\n",
"df['weekday'] = df.apply(lambda r: r['date'].weekday(), axis=1)\n",
"df['day'] = df.apply(lambda r: r['date'].day, axis=1)\n",
"df['month'] = df.apply(lambda r: r['date'].month, axis=1)\n",
"df['year'] = df.apply(lambda r: r['date'].year, axis=1)\n",
"df['distance'] = df.apply(lambda r: distanceInKmByGPS(r['home_lon'],r['home_lat'],r['away_lon'],r['away_lat']), axis=1)\n",
"df['weekend'] = df.apply(lambda r: int(r['weekday'] in [6,7]), axis=1)\n",
"df['winter_season'] = df.apply(lambda r: int(r['month'] in [1,2,3,10,11,12]), axis=1)\n",
"df['home_base'] = df.apply(lambda r: pivot_homeTeam_mean.loc[r['homeTeam_id'],'attendance'], axis=1)\n",
"df['stadium_size'] = df.apply(lambda r: pivot_homeTeam_max.loc[r['homeTeam_id'],'attendance'], axis=1)\n",
"df['early'] = df.apply(lambda r: r['time'].replace(':','') < \"1800\", axis=1)\n",
"df['before2010'] = df.apply(lambda r: r['historic_season'].split('-')[0] < \"2010\", axis=1)\n",
"\n",
"\n",
"\n",
"# one hot encoding\n",
"ohe_fields = ['home_country']\n",
"\n",
"for field in ohe_fields:\n",
" ohe = OneHotEncoder()\n",
" transformed = ohe.fit_transform(df[[field]])\n",
" df[ohe.categories_[0]] = transformed.toarray()\n",
"\n",
"# sort label to last index\n",
"cols = list(df.columns)\n",
"cols.append(cols.pop(cols.index('attendance')))\n",
"df = df[cols]"
]
},
{
"cell_type": "markdown",
"id": "e2ea08e5",
"metadata": {},
"source": [
"#### Train/Test Data - Normalization"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "74e12f87",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np \n",
"import pandas as pd \n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"from sklearn.model_selection import train_test_split, cross_val_predict\n",
"from sklearn import metrics\n",
"from sklearn.ensemble import RandomForestRegressor\n",
"\n",
"\n",
"remove_columns = ['season_id', 'resultEntered', 'reversible', 'reschedule', 'homeGoals', 'awayGoals',\n",
" 'homeGoals2', 'awayGoals2', 'homeGoals3', 'awayGoals3', 'home', 'away', 'date', 'time',\n",
" 'id', 'homeTeam_id', 'awayTeam_id', 'historic_season',\n",
" 'home_country','home_lat','home_lon','away_lat','away_lon','away_country','year']\n",
"feature_cols = list(set(df.columns[:-1]) - set(remove_columns))\n",
"# feature_cols = ['weekday','weekend','home_base','distance','winter_season']\n",
"label = 'attendance'\n",
"\n",
"\n",
"data = df[feature_cols+[label]]\n",
"\n",
"\n",
"\n",
"\n",
"X = df[feature_cols] # Features\n",
"y = df[label] # Target variable\n",
"\n",
"X_train, X_test, y_train, y_test = train_test_split(\n",
" X, y, test_size=0.3, random_state=1) # 70% training and 30% test"
]
},
{
"cell_type": "code",
"execution_count": 60,
"id": "45e08026",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Random Forest Regression Accuracy: 0.701779484610914\n"
]
}
],
"source": [
"rf_regressor = RandomForestRegressor(n_estimators = 200 , random_state = 42)\n",
"rf_regressor.fit(X_train,y_train)\n",
"\n",
"# #Predicting the SalePrices using test set \n",
"y_pred_rf = rf_regressor.predict(X_test)\n",
"\n",
"# #Random Forest Regression Accuracy with test set\n",
"print('Random Forest Regression Accuracy: ', rf_regressor.score(X_test,y_test))\n",
"\n",
"# #Predicting the SalePrice using cross validation (KFold method)\n",
"# y_pred_rf = cross_val_predict(rf_regressor, X, y, cv=10 )\n",
"\n",
"# #Random Forest Regression Accuracy with cross validation\n",
"# accuracy_rf = metrics.r2_score(y, y_pred_rf)\n",
"# print('Cross-Predicted(KFold) Random Forest Regression Accuracy: ', accuracy_rf)"
]
},
{
"cell_type": "code",
"execution_count": 43,
"id": "0de49b8a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1080x720 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ranking = np.argsort(-rf_regressor.feature_importances_)\n",
"f, ax = plt.subplots(figsize=(15, 10))\n",
"sns.barplot(x=rf_regressor.feature_importances_[ranking], y=X_train.columns.values[ranking], orient='h')\n",
"ax.set_xlabel(\"feature importance\")\n",
"plt.tight_layout()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 61,
"id": "4c1f8b45",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 4000 6580.545\n",
"1 3264 1930.28\n",
"2 6000 4557.7\n",
"3 4250 5707.365\n",
"4 1200 2293.235\n",
"5 4300 14245.4\n",
"6 3874 10814.615\n",
"7 2800 7051.27\n",
"8 5500 5780.415\n",
"9 6000 16578.36\n",
"10 3500 3465.88\n",
"11 4500 6437.125\n",
"12 2140 2539.445\n",
"13 3146 7725.725\n",
"14 2600 4115.015\n",
"15 4875 3892.94\n",
"16 5807 2310.32\n",
"17 5200 5284.785\n",
"18 3500 14448.53\n",
"19 2643 13368.715\n",
"20 4000 5098.405\n",
"21 2500 11200.69\n",
"22 2000 4440.93\n",
"23 3198 13613.71\n",
"24 3571 2143.51\n",
"25 2712 14239.07\n",
"26 2100 2803.565\n",
"27 4525 3025.8\n",
"28 6625 5005.1\n",
"29 4966 4908.325\n",
"30 2000 11584.62\n",
"31 2100 17840.985\n",
"32 2310 11679.06\n",
"33 2600 3441.75\n",
"34 2000 4676.61\n",
"35 4300 12716.24\n",
"36 2734 4625.195\n",
"37 3500 8200.89\n",
"38 3050 5654.81\n",
"39 5256 9792.665\n",
"40 3012 2310.83\n",
"41 5060 4974.58\n",
"42 1500 9684.55\n",
"43 4000 7074.835\n",
"44 1950 9311.275\n",
"45 2300 5989.395\n",
"46 2300 2172.745\n",
"47 1950 9854.69\n",
"48 3058 3366.505\n",
"49 2000 9185.505\n",
"50 2345 5486.87\n",
"51 5500 6112.29\n",
"52 5585 3817.555\n",
"53 4046 5211.04\n",
"54 6000 5262.485\n",
"55 4384 4752.54\n",
"56 3000 4680.4\n",
"57 3500 3730.125\n",
"58 7000 19604.555\n",
"59 10195 12155.54\n",
"60 3476 2316.185\n",
"61 2120 6507.535\n",
"62 3800 4992.07\n",
"63 2675 17715.46\n",
"64 6603 5947.32\n",
"65 1500 6841.915\n",
"66 4000 14031.8475\n",
"67 4545 3450.985\n",
"68 1396 3998.6\n",
"69 5400 12293.125\n",
"70 5041 10571.61\n",
"71 1500 13793.105\n",
"72 1800 3019.735\n",
"73 3189 2286.085\n",
"74 3800 8072.33\n",
"75 2178 14740.815\n",
"76 6169 3358.27\n",
"77 2676 6266.61\n",
"78 3510 4507.855\n",
"79 3900 5281.48\n",
"80 2120 6582.6\n",
"81 8000 7046.1\n",
"82 2500 5538.39\n",
"83 4016 1779.045\n",
"84 1500 14032.36875\n",
"85 2860 3886.32\n",
"86 2150 12050.75\n",
"87 3336 13855.32\n",
"88 8820 6569.785\n",
"89 4792 8718.28\n",
"90 1650 23018.465\n",
"91 2000 7827.75\n",
"92 2111 3149.185\n",
"93 4470 12892.46\n",
"94 7000 6091.705\n",
"95 3850 6530.255\n",
"96 4366 10065.345\n",
"97 2645 9916.91\n",
"98 2384 6651.595\n",
"99 4522 14023.15\n",
"100 6328 16536.015\n",
"101 3877 22520.085\n",
"102 2000 5087.5858333333335\n",
"103 4157 4995.895\n",
"104 2942 14835.2\n",
"105 3655 11868.02\n",
"106 4500 2356.345\n",
"107 2964 3001.075\n",
"108 2863 2862.48\n",
"109 4935 11530.06\n",
"110 2526 13431.275\n",
"111 5679 8583.235\n",
"112 7286 12046.48\n",
"113 6055 12324.2175\n",
"114 1200 10979.595\n",
"115 4110 3696.885\n",
"116 1957 1784.81\n",
"117 1790 2310.685\n",
"118 5422 5891.27\n",
"119 4650 12989.17\n",
"120 5297 13769.85\n",
"121 3036 7880.975\n",
"122 3233 10235.395\n",
"123 12000 2019.825\n",
"124 7632 1784.93\n",
"125 3620 8620.28\n",
"126 2000 2247.685\n",
"127 2145 5211.695\n",
"128 2227 16537.25\n",
"129 2520 16835.395\n",
"130 10000 8674.06\n",
"131 2000 5183.62\n",
"132 4052 5794.44\n",
"133 2137 3961.6\n",
"134 2609 10219.755\n",
"135 3256 3750.165\n",
"136 8173 7718.525\n",
"137 1250 5951.49\n",
"138 7401 2454.21\n",
"139 4200 9402.87\n",
"140 6100 6322.165\n",
"141 5182 4632.07\n",
"142 1300 3705.42\n",
"143 2117 2149.76\n",
"144 6500 5198.585\n",
"145 5174 24179.485\n",
"146 3867 7086.495\n",
"147 1918 3776.675\n",
"148 2800 7035.84\n",
"149 7648 6624.045\n",
"150 5638 4533.465\n",
"151 5262 8931.215\n",
"152 1650 10611.175\n",
"153 1657 5332.755\n",
"154 4086 16697.77\n",
"155 9000 4076.79\n",
"156 1500 4362.885\n",
"157 8145 15920.005\n",
"158 2625 8195.605\n",
"159 6281 2241.7\n",
"160 4520 2029.15\n",
"161 1200 2951.745\n",
"162 4829 4604.96\n",
"163 1760 3564.905\n",
"164 3469 9817.235\n",
"165 7500 5750.205\n",
"166 5227 6575.79\n",
"167 1765 12158.355\n",
"168 5200 3810.195\n",
"169 6402 7280.82\n",
"170 4832 3182.905\n",
"171 1500 9403.08\n",
"172 2342 3885.02\n",
"173 2799 2147.4\n",
"174 3850 3098.345\n",
"175 4200 3161.31\n",
"176 4531 1797.735\n",
"177 1751 1703.18\n",
"178 4250 5936.4125\n",
"179 5705 7906.34\n",
"180 3528 1578.835\n",
"181 2496 5813.035\n",
"182 4370 1658.86\n",
"183 1350 3784.05\n",
"184 5334 9792.665\n",
"185 1423 6670.74\n",
"186 4129 3725.405\n",
"187 5858 2032.275\n",
"188 3300 4597.795\n",
"189 3500 4803.27\n",
"190 10280 3359.415\n",
"191 4500 8830.49625\n",
"192 10500 3642.33\n",
"193 3932 5338.775\n",
"194 5500 5575.605\n",
"195 2200 16004.22\n",
"196 8206 4797.275\n",
"197 8000 5357.22\n",
"198 6372 8878.1\n",
"199 7900 13958.58\n",
"200 1628 13360.12\n",
"201 4142 3265.425\n",
"202 1150 8374.72\n",
"203 1750 4471.255\n",
"204 4072 4537.83\n",
"205 1176 14088.795\n",
"206 3200 4798.96\n",
"207 1715 12487.48\n",
"208 7530 10884.455\n",
"209 4600 7020.67\n",
"210 1200 5571.775\n",
"211 4452 16737.72\n",
"212 2400 3627.235\n",
"213 4057 3048.885\n",
"214 5000 7612.795\n",
"215 4147 1906.285\n",
"216 3046 11647.86\n",
"217 6215 2800.26\n",
"218 3350 2044.6\n",
"219 3500 1575.61\n",
"220 5870 3940.91\n",
"221 4113 6889.23\n",
"222 3420 17471.3\n",
"223 6116 7448.86\n",
"224 5902 3766.12\n",
"225 3787 3984.03\n",
"226 3600 6773.825\n",
"227 7017 2120.505\n",
"228 10280 5304.46\n",
"229 5600 9301.37\n",
"230 3656 3520.035\n",
"231 6480 14618.295\n",
"232 1646 5412.37\n",
"233 2600 4642.425\n",
"234 4300 2358.205\n",
"235 7948 3387.4\n",
"236 4579 6892.56\n",
"237 4364 6032.51\n",
"238 5000 3701.665\n",
"239 2034 2459.645\n",
"240 3500 4322.685\n",
"241 5688 7433.355\n",
"242 1800 11416.59\n",
"243 10131 3018.53\n",
"244 5784 5802.455\n",
"245 1813 4643.985\n",
"246 3700 4748.285\n",
"247 6700 7172.535\n",
"248 3700 2260.81\n",
"249 7799 2543.05\n",
"250 1884 11840.945\n",
"251 3042 5026.895\n",
"252 5000 12697.255\n",
"253 5112 12816.485\n",
"254 1404 2985.83\n",
"255 2471 4937.79\n",
"256 7749 8946.405\n",
"257 6254 3540.255\n",
"258 2502 11979.99\n",
"259 2300 3865.78\n",
"260 6500 10954.815\n",
"261 2646 2107.79\n",
"262 9546 5031.68\n",
"263 7500 2161.645\n",
"264 11016 6702.55\n",
"265 5763 9477.27\n",
"266 2460 9735.075\n",
"267 5511 1635.865\n",
"268 1857 11158.305\n",
"269 7000 1856.91\n",
"270 6333 2795.195\n",
"271 6107 3487.66\n",
"272 1518 2304.03\n",
"273 9310 16034.98\n",
"274 3551 6612.595\n",
"275 1700 4897.935\n",
"276 2250 8678.285\n",
"277 6000 2745.995\n",
"278 2003 10819.06\n",
"279 15183 4209.865\n",
"280 7113 2508.52\n",
"281 3818 8803.065\n",
"282 12300 3207.05\n",
"283 12488 5297.225\n",
"284 8000 13887.795\n",
"285 10832 6841.995\n",
"286 2107 5646.825\n",
"287 2100 10862.95\n",
"288 14135 4668.9625\n",
"289 6115 3493.45\n",
"290 9364 6440.755\n",
"291 4773 12457.905\n",
"292 3525 4335.24\n",
"293 6126 3478.67\n",
"294 6487 6093.975\n",
"295 3879 5981.07\n",
"296 4943 2130.5\n",
"297 1335 18139.0\n",
"298 4125 2991.4\n",
"299 7986 20566.615\n",
"300 5000 1574.75\n",
"301 3559 12854.765\n",
"302 6573 6217.415\n",
"303 2300 7889.96\n",
"304 5117 7310.34\n",
"305 5000 6879.69\n",
"306 7165 6601.825\n",
"307 1406 4288.72\n",
"308 12300 5307.19\n",
"309 3573 4497.045\n",
"310 6500 6256.32\n",
"311 4508 5486.1\n",
"312 7546 3663.385\n",
"313 5413 7938.35\n",
"314 5754 3178.54\n",
"315 1307 3337.145\n",
"316 5433 2951.285\n",
"317 2304 4515.835\n",
"318 4000 10191.245\n",
"319 6425 6563.885\n",
"320 7250 14309.845\n",
"321 5500 8663.35\n",
"322 1800 6115.675\n",
"323 2240 3341.57\n",
"324 9000 9561.66\n",
"325 1266 6050.45\n",
"326 3850 5461.605\n",
"327 2122 5666.745\n",
"328 6423 4170.395\n",
"329 6455 12976.51\n",
"330 2100 9193.3\n",
"331 7843 6734.765\n",
"332 9617 3180.015\n",
"333 5033 10773.97125\n",
"334 1129 1717.375\n",
"335 1500 9708.96\n",
"336 8932 4352.705\n",
"337 4637 8567.97\n",
"338 15327 7835.35\n",
"339 1233 3639.265\n",
"340 2364 6209.395\n",
"341 10316 11016.235\n",
"342 13200 2119.405\n",
"343 1303 2709.155\n",
"344 8687 1634.185\n",
"345 1653 13753.1375\n",
"346 7067 4695.66\n",
"347 8265 8292.81\n",
"348 1587 4810.64\n",
"349 2479 7368.865\n",
"350 6366 3286.005\n",
"351 5114 4085.725\n",
"352 6138 9741.92\n",
"353 1765 5426.53\n",
"354 3129 1673.915\n",
"355 2295 3511.86\n",
"356 5507 4669.1925\n",
"357 5200 12605.555\n",
"358 6326 15411.865\n",
"359 10804 11185.52\n",
"360 6721 5787.13\n",
"361 5574 3080.71\n",
"362 10020 5907.88\n",
"363 3678 3327.455\n",
"364 4342 6535.975\n",
"365 8000 14431.15\n",
"366 1687 5395.356666666667\n",
"367 1967 5023.89\n",
"368 27252 5910.655\n",
"369 20520 9579.255\n",
"370 10000 17502.835\n",
"371 1661 5887.475\n",
"372 1356 4524.945\n",
"373 8000 13422.775\n",
"374 6288 8526.295\n",
"375 9979 12948.585\n",
"376 3083 7691.755\n",
"377 1574 11412.42\n",
"378 10452 2908.155\n",
"379 4790 3480.47\n",
"380 5563 4298.075\n",
"381 1103 4372.96\n",
"382 3846 9778.52\n",
"383 3750 2400.16\n",
"384 4309 5070.415\n",
"385 6254 1577.175\n",
"386 2133 4828.135\n",
"387 12800 7410.605\n",
"388 5300 1702.315\n",
"389 10102 2563.91\n",
"390 9326 6329.725\n",
"391 2613 7333.205\n",
"392 11976 4998.75\n",
"393 12143 2995.995\n",
"394 13200 4269.515\n",
"395 6320 5055.135\n",
"396 1542 13829.665\n",
"397 4560 4800.095\n",
"398 8304 5038.89\n",
"399 10480 3193.88\n",
"400 5352 4633.325\n",
"401 2137 7124.72\n",
"402 5169 6736.805\n",
"403 2799 13044.645\n",
"404 6000 2021.2\n",
"405 4986 3783.67\n",
"406 1824 6328.3\n",
"407 1562 4818.96\n",
"408 5890 12351.575\n",
"409 6077 8368.7\n",
"410 1485 2307.815\n",
"411 1825 4152.695\n",
"412 5340 3259.93\n",
"413 9237 1645.765\n",
"414 6499 7667.76125\n",
"415 1240 4280.79\n",
"416 4656 4129.7\n",
"417 2335 5560.904166666666\n",
"418 8000 11956.94\n",
"419 5641 7928.66\n",
"420 1444 7371.75\n",
"421 12900 2452.485\n",
"422 6500 3510.74\n",
"423 7506 13593.255\n",
"424 6438 10959.67\n",
"425 2261 13815.8\n",
"426 2121 7264.35\n",
"427 5437 3966.71\n",
"428 1536 3881.21\n",
"429 9295 14548.765\n",
"430 3252 6801.995\n",
"431 1331 2413.215\n",
"432 5442 9457.055\n",
"433 4527 3871.07\n",
"434 6500 5900.165\n",
"435 1238 4079.73\n",
"436 10702 4984.83\n",
"437 8056 6596.595\n",
"438 4517 3666.385\n",
"439 5108 12268.525\n",
"440 6354 9083.105\n",
"441 4322 3158.935\n",
"442 3129 6390.115\n",
"443 2486 16959.01\n",
"444 6200 3927.465\n",
"445 10320 6169.805\n",
"446 5204 11800.575\n",
"447 7429 17239.05\n",
"448 1837 4729.9\n",
"449 3311 6117.47\n",
"450 5425 4203.0\n",
"451 1141 7236.865\n",
"452 8142 4073.855\n",
"453 9630 6304.535\n",
"454 3400 2734.205\n",
"455 5991 7359.03\n",
"456 4537 2602.975\n",
"457 1389 8594.86\n",
"458 6560 13770.56\n",
"459 5417 7300.155\n",
"460 1326 12498.02\n",
"461 1226 12151.51\n",
"462 9439 7763.215\n",
"463 6075 2155.91\n",
"464 4139 11945.41\n",
"465 6921 4866.605\n",
"466 1412 4655.13\n",
"467 1580 3638.64\n",
"468 6480 3190.87\n",
"469 7740 8526.32\n",
"470 9187 3697.575\n",
"471 5923 16333.9175\n",
"472 1690 9985.465\n",
"473 1829 8347.22\n",
"474 13132 13420.35\n",
"475 5673 14952.235\n",
"476 10143 15199.465\n",
"477 2631 2170.875\n",
"478 16753 3160.5\n",
"479 8300 6444.085\n",
"480 2541 9135.885\n",
"481 1638 9089.395\n",
"482 6097 14731.42\n",
"483 8250 10358.07\n",
"484 1638 2472.25\n",
"485 1145 4099.34\n",
"486 8300 4606.435\n",
"487 9750 12722.03\n",
"488 12532 15722.44\n",
"489 10739 5063.045\n",
"490 18230 9996.75\n",
"491 6125 8251.825\n",
"492 6225 3833.575\n",
"493 16509 2648.755\n",
"494 6782 13865.8\n",
"495 6125 6070.855\n",
"496 1681 15837.77\n",
"497 1798 5082.45\n",
"498 13385 4033.305\n",
"499 12300 11861.3\n",
"500 4100 8838.96\n",
"501 6190 1632.66\n",
"502 9246 3630.915\n",
"503 14322 5414.425\n",
"504 7396 3048.95\n",
"505 3851 12195.32\n",
"506 4734 1627.625\n",
"507 2058 5133.655\n",
"508 8869 5051.91\n",
"509 11269 7680.75\n",
"510 2506 4868.0\n",
"511 11730 11872.185\n",
"512 8045 10004.22\n",
"513 7500 22047.495\n",
"514 9166 2411.96\n",
"515 5368 1678.645\n",
"516 2395 9312.065\n",
"517 9087 7342.77\n",
"518 7407 8699.05\n",
"519 5949 4514.755\n",
"520 10216 2410.22\n",
"521 4731 2032.19\n",
"522 9248 6795.98\n",
"523 18500 8829.36\n",
"524 6308 6920.595\n",
"525 5748 7288.28\n",
"526 3138 12551.665\n",
"527 2012 9096.635\n",
"528 8657 3791.66\n",
"529 7500 5467.56\n",
"530 1463 18574.32\n",
"531 7625 8138.19\n",
"532 17260 2172.135\n",
"533 7020 7228.85\n",
"534 6592 14669.08\n",
"535 1463 9407.33\n",
"536 5112 15252.19\n",
"537 9672 13353.205\n",
"538 5360 2470.61\n",
"539 7338 4989.74\n",
"540 4113 4484.305\n",
"541 5443 7201.3\n",
"542 7368 3404.155\n",
"543 8017 14148.48\n",
"544 8619 6160.425\n",
"545 2651 2679.64\n",
"546 14840 5971.57\n",
"547 6041 6304.95\n",
"548 8685 4880.825\n",
"549 1252 10886.525\n",
"550 2655 6104.335\n",
"551 15140 11179.75\n",
"552 7885 7929.78\n",
"553 8685 7818.845\n",
"554 7542 5478.925\n",
"555 4676 12477.1055\n",
"556 2450 5207.06\n",
"557 7225 9006.11\n",
"558 18500 2964.14\n",
"559 8499 12498.02\n",
"560 5057 13908.8225\n",
"561 8418 8635.185\n",
"562 22885 4714.2\n",
"563 2820 15387.885\n",
"564 1868 6215.625\n",
"565 2523 7000.925\n",
"566 10058 4604.805\n",
"567 7138 7506.575\n",
"568 7610 9124.655\n",
"569 2670 2921.225\n",
"570 2364 13164.26\n",
"571 8435 4459.1\n",
"572 8841 2059.765\n",
"573 15240 6943.635\n",
"574 10180 12877.445\n",
"575 12534 5554.46\n",
"576 20520 5569.985\n",
"577 13500 2075.635\n",
"578 5000 5377.4\n",
"579 12813 6347.0\n",
"580 7050 4979.655\n",
"581 6665 1697.77\n",
"582 16350 12666.47\n",
"583 25623 14755.155\n",
"584 2063 7468.775\n",
"585 3393 3799.25\n",
"586 2217 7613.54\n",
"587 9003 4315.82\n",
"588 14470 14461.775\n",
"589 7603 8187.18\n",
"590 8685 5318.81\n",
"591 6436 3784.09\n",
"592 6112 14373.265\n",
"593 6127 5815.515\n",
"594 1373 15596.585\n",
"595 8046 7578.585\n",
"596 6865 2831.665\n",
"597 8286 8018.355\n",
"598 6302 6389.695\n",
"599 2208 10284.765\n",
"600 3615 8835.65\n",
"601 15940 1988.025\n",
"602 5010 13787.54\n",
"603 8212 1622.005\n",
"604 1272 3604.73\n",
"605 2540 2657.585\n",
"606 9600 4641.735\n",
"607 26043 9152.84\n",
"608 6103 10734.435\n",
"609 2747 4064.025\n",
"610 2960 6617.965\n",
"611 26043 7470.415\n",
"612 11444 6470.97\n",
"613 6608 6619.14\n",
"614 8685 4750.37\n",
"615 7809 2736.045\n",
"616 10910 16122.215\n",
"617 6015 8841.82\n",
"618 5233 5604.625\n",
"619 1425 18549.55\n",
"620 11160 15778.39\n",
"621 2105 7980.145\n",
"622 7428 9160.515\n",
"623 5204 4859.245\n",
"624 1851 3186.285\n",
"625 26043 3114.36\n",
"626 5426 3059.535\n",
"627 6219 16506.235\n",
"628 11212 10394.045\n",
"629 8124 2754.425\n",
"630 1982 17523.185\n",
"631 3694 5186.16\n",
"632 6075 2738.09\n",
"633 4561 2731.69\n",
"634 3042 4152.18\n",
"635 19747 6661.585\n",
"636 15145 2865.705\n",
"637 7072 3242.73\n",
"638 2582 2405.715\n",
"639 1425 4791.017083333334\n",
"640 5219 18050.315\n",
"641 7182 2914.96\n",
"642 8899 5130.16\n",
"643 6313 1917.815\n",
"644 2435 2274.995\n",
"645 3108 4957.4\n",
"646 12198 6797.66\n",
"647 5761 4253.455\n",
"648 8685 3508.57\n",
"649 8141 7389.745\n",
"650 9185 6143.315\n",
"651 5331 5715.955\n"
]
},
{
"ename": "IndexError",
"evalue": "index 652 is out of bounds for axis 0 with size 652",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m/tmp/ipykernel_11017/1621740581.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0menumerate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0my_pred_rf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mi\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;31mIndexError\u001b[0m: index 652 is out of bounds for axis 0 with size 652"
]
}
],
"source": [
"for i,v in enumerate(y):\n",
" print(i,v,y_pred_rf[i])"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "bba1ad86",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.7.13 ('leagues')",
"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.7.13"
},
"vscode": {
"interpreter": {
"hash": "a07b7f3079ca8c056705d3c757c4f3f92f9509f33eeab9ad5420dacec37bc01a"
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}