Files
fantabeto/6_neural_network_training_and_prediction.ipynb
T
Giuseppe Musicco 99fb244c26 Matchday 34
2023-05-06 09:12:45 +02:00

6566 lines
529 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "4a867836",
"metadata": {},
"source": [
"Bayesian Neural Network model traning and prediction data generation."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "210da263",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.neural_network import MLPRegressor\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.metrics import r2_score\n",
"\n",
"import pickle"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "edbf3b27",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import tensorflow as tf\n",
"from tensorflow import keras\n",
"from tensorflow.keras import layers\n",
"import tensorflow_datasets as tfds\n",
"import tensorflow_probability as tfp\n",
"\n",
"tfk = tf.keras\n",
"tf.keras.backend.set_floatx(\"float32\")\n",
"import tensorflow_probability as tfp\n",
"tfd = tfp.distributions\n",
"from sklearn.preprocessing import StandardScaler\n",
"from sklearn.ensemble import IsolationForest\n",
"\n",
"from scipy.stats import norm"
]
},
{
"cell_type": "markdown",
"id": "9dadf6ec",
"metadata": {},
"source": [
"Load the training databases, generated in player_match_database_creation"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "fa098fa4",
"metadata": {},
"outputs": [],
"source": [
"db1 = pd.read_excel('mid_outputs/database_entries.xlsx', index_col = 0) \n",
"db2 = pd.read_excel('mid_outputs/season2021/database_entries.xlsx', index_col = 0) \n",
"db3 = pd.read_excel('mid_outputs/season2122/database_entries.xlsx', index_col = 0) "
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "f71fa9a4",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" <th>...</th>\n",
" <th>miscontrols</th>\n",
" <th>dispossessed</th>\n",
" <th>fouls</th>\n",
" <th>fouled</th>\n",
" <th>aerials_won</th>\n",
" <th>aerials_lost</th>\n",
" <th>carries</th>\n",
" <th>progressive_carries</th>\n",
" <th>carries_into_final_third</th>\n",
" <th>carries_into_penalty_area</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Toloi</td>\n",
" <td>Atalanta</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>10.0</td>\n",
" <td>...</td>\n",
" <td>0.006961</td>\n",
" <td>0.001392</td>\n",
" <td>0.011137</td>\n",
" <td>0.006961</td>\n",
" <td>0.015313</td>\n",
" <td>0.010209</td>\n",
" <td>0.386543</td>\n",
" <td>0.007889</td>\n",
" <td>0.015777</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Djimsiti</td>\n",
" <td>Atalanta</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.006734</td>\n",
" <td>0.004209</td>\n",
" <td>0.008418</td>\n",
" <td>0.004209</td>\n",
" <td>0.028620</td>\n",
" <td>0.022727</td>\n",
" <td>0.414141</td>\n",
" <td>0.005051</td>\n",
" <td>0.005051</td>\n",
" <td>0.000842</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Hateboer</td>\n",
" <td>Atalanta</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.005727</td>\n",
" <td>0.005011</td>\n",
" <td>0.013601</td>\n",
" <td>0.002147</td>\n",
" <td>0.017180</td>\n",
" <td>0.010021</td>\n",
" <td>0.284896</td>\n",
" <td>0.011453</td>\n",
" <td>0.010021</td>\n",
" <td>0.000716</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Okoli</td>\n",
" <td>Atalanta</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>0.013018</td>\n",
" <td>0.003550</td>\n",
" <td>0.015385</td>\n",
" <td>0.008284</td>\n",
" <td>0.047337</td>\n",
" <td>0.027219</td>\n",
" <td>0.269822</td>\n",
" <td>0.002367</td>\n",
" <td>0.004734</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Zortea</td>\n",
" <td>Atalanta</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.017279</td>\n",
" <td>0.006479</td>\n",
" <td>0.019438</td>\n",
" <td>0.010799</td>\n",
" <td>0.006479</td>\n",
" <td>0.017279</td>\n",
" <td>0.431965</td>\n",
" <td>0.034557</td>\n",
" <td>0.025918</td>\n",
" <td>0.002160</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>27154</th>\n",
" <td>38</td>\n",
" <td>Tameze</td>\n",
" <td>Verona</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>0.019814</td>\n",
" <td>0.010101</td>\n",
" <td>0.012821</td>\n",
" <td>0.013209</td>\n",
" <td>0.023699</td>\n",
" <td>0.021368</td>\n",
" <td>0.337218</td>\n",
" <td>0.021368</td>\n",
" <td>0.012821</td>\n",
" <td>0.003885</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27155</th>\n",
" <td>38</td>\n",
" <td>Hongla</td>\n",
" <td>Verona</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>9.5</td>\n",
" <td>...</td>\n",
" <td>0.018433</td>\n",
" <td>0.012289</td>\n",
" <td>0.023041</td>\n",
" <td>0.007680</td>\n",
" <td>0.023041</td>\n",
" <td>0.026114</td>\n",
" <td>0.341014</td>\n",
" <td>0.009217</td>\n",
" <td>0.015361</td>\n",
" <td>0.003072</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27156</th>\n",
" <td>38</td>\n",
" <td>Lasagna</td>\n",
" <td>Verona</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>9.5</td>\n",
" <td>...</td>\n",
" <td>0.046453</td>\n",
" <td>0.022804</td>\n",
" <td>0.016047</td>\n",
" <td>0.008446</td>\n",
" <td>0.026182</td>\n",
" <td>0.041385</td>\n",
" <td>0.190878</td>\n",
" <td>0.021959</td>\n",
" <td>0.010980</td>\n",
" <td>0.005912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27157</th>\n",
" <td>38</td>\n",
" <td>Caprari</td>\n",
" <td>Verona</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>0.033954</td>\n",
" <td>0.019715</td>\n",
" <td>0.015334</td>\n",
" <td>0.027017</td>\n",
" <td>0.002921</td>\n",
" <td>0.009858</td>\n",
" <td>0.391384</td>\n",
" <td>0.042716</td>\n",
" <td>0.027747</td>\n",
" <td>0.018620</td>\n",
" </tr>\n",
" <tr>\n",
" <th>27158</th>\n",
" <td>38</td>\n",
" <td>Simeone</td>\n",
" <td>Verona</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>7.0</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>10.0</td>\n",
" <td>...</td>\n",
" <td>0.051263</td>\n",
" <td>0.030155</td>\n",
" <td>0.021108</td>\n",
" <td>0.021862</td>\n",
" <td>0.022616</td>\n",
" <td>0.040709</td>\n",
" <td>0.246136</td>\n",
" <td>0.015077</td>\n",
" <td>0.012816</td>\n",
" <td>0.006031</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>27159 rows × 122 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote goals assists \\\n",
"0 1 Toloi Atalanta Sampdoria 0 7.0 1 0 \n",
"1 1 Djimsiti Atalanta Sampdoria 0 6.0 0 0 \n",
"2 1 Hateboer Atalanta Sampdoria 0 6.0 0 0 \n",
"3 1 Okoli Atalanta Sampdoria 0 5.5 0 0 \n",
"4 1 Zortea Atalanta Sampdoria 0 6.0 0 0 \n",
"... ... ... ... ... ... ... ... ... \n",
"27154 38 Tameze Verona Lazio 0 5.5 0 0 \n",
"27155 38 Hongla Verona Lazio 0 7.0 1 0 \n",
"27156 38 Lasagna Verona Lazio 0 7.0 1 0 \n",
"27157 38 Caprari Verona Lazio 0 6.0 0 0 \n",
"27158 38 Simeone Verona Lazio 0 7.0 1 0 \n",
"\n",
" cards_malus fantavote ... miscontrols dispossessed fouls \\\n",
"0 0.0 10.0 ... 0.006961 0.001392 0.011137 \n",
"1 0.0 6.0 ... 0.006734 0.004209 0.008418 \n",
"2 0.5 5.5 ... 0.005727 0.005011 0.013601 \n",
"3 0.5 5.0 ... 0.013018 0.003550 0.015385 \n",
"4 0.5 5.5 ... 0.017279 0.006479 0.019438 \n",
"... ... ... ... ... ... ... \n",
"27154 0.0 5.5 ... 0.019814 0.010101 0.012821 \n",
"27155 0.5 9.5 ... 0.018433 0.012289 0.023041 \n",
"27156 0.5 9.5 ... 0.046453 0.022804 0.016047 \n",
"27157 0.0 6.0 ... 0.033954 0.019715 0.015334 \n",
"27158 0.0 10.0 ... 0.051263 0.030155 0.021108 \n",
"\n",
" fouled aerials_won aerials_lost carries progressive_carries \\\n",
"0 0.006961 0.015313 0.010209 0.386543 0.007889 \n",
"1 0.004209 0.028620 0.022727 0.414141 0.005051 \n",
"2 0.002147 0.017180 0.010021 0.284896 0.011453 \n",
"3 0.008284 0.047337 0.027219 0.269822 0.002367 \n",
"4 0.010799 0.006479 0.017279 0.431965 0.034557 \n",
"... ... ... ... ... ... \n",
"27154 0.013209 0.023699 0.021368 0.337218 0.021368 \n",
"27155 0.007680 0.023041 0.026114 0.341014 0.009217 \n",
"27156 0.008446 0.026182 0.041385 0.190878 0.021959 \n",
"27157 0.027017 0.002921 0.009858 0.391384 0.042716 \n",
"27158 0.021862 0.022616 0.040709 0.246136 0.015077 \n",
"\n",
" carries_into_final_third carries_into_penalty_area \n",
"0 0.015777 0.000000 \n",
"1 0.005051 0.000842 \n",
"2 0.010021 0.000716 \n",
"3 0.004734 0.000000 \n",
"4 0.025918 0.002160 \n",
"... ... ... \n",
"27154 0.012821 0.003885 \n",
"27155 0.015361 0.003072 \n",
"27156 0.010980 0.005912 \n",
"27157 0.027747 0.018620 \n",
"27158 0.012816 0.006031 \n",
"\n",
"[27159 rows x 122 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db = pd.concat([db1, db2, db3], ignore_index = True) \n",
"\n",
"db"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1d024554",
"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>matchday</th>\n",
" <th>player</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>vote</th>\n",
" <th>goals</th>\n",
" <th>assists</th>\n",
" <th>cards_malus</th>\n",
" <th>fantavote</th>\n",
" <th>...</th>\n",
" <th>gk_psxg</th>\n",
" <th>gk_psnpxg_per_shot_on_target_against</th>\n",
" <th>gk_psxg_net</th>\n",
" <th>gk_passes_completed_launched</th>\n",
" <th>gk_passes_launched</th>\n",
" <th>gk_passes</th>\n",
" <th>gk_passes_throws</th>\n",
" <th>gk_goal_kicks</th>\n",
" <th>gk_crosses</th>\n",
" <th>gk_crosses_stopped</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Musso</td>\n",
" <td>Atalanta</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.5</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>20.000000</td>\n",
" <td>0.220000</td>\n",
" <td>-3.000000</td>\n",
" <td>108.0</td>\n",
" <td>266.0</td>\n",
" <td>532.000000</td>\n",
" <td>148.000000</td>\n",
" <td>149.000000</td>\n",
" <td>247.000000</td>\n",
" <td>14.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Skorupski</td>\n",
" <td>Bologna</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>40.200000</td>\n",
" <td>0.250000</td>\n",
" <td>3.200000</td>\n",
" <td>129.0</td>\n",
" <td>329.0</td>\n",
" <td>773.000000</td>\n",
" <td>169.000000</td>\n",
" <td>219.000000</td>\n",
" <td>402.000000</td>\n",
" <td>24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Vicario</td>\n",
" <td>Empoli</td>\n",
" <td>Spezia</td>\n",
" <td>0</td>\n",
" <td>5.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>4.5</td>\n",
" <td>...</td>\n",
" <td>32.300000</td>\n",
" <td>0.280000</td>\n",
" <td>2.300000</td>\n",
" <td>117.0</td>\n",
" <td>346.0</td>\n",
" <td>869.000000</td>\n",
" <td>123.000000</td>\n",
" <td>139.000000</td>\n",
" <td>489.000000</td>\n",
" <td>28.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Gollini</td>\n",
" <td>Fiorentina</td>\n",
" <td>Cremonese</td>\n",
" <td>1</td>\n",
" <td>5.0</td>\n",
" <td>-2</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>3.0</td>\n",
" <td>...</td>\n",
" <td>18.616667</td>\n",
" <td>0.220000</td>\n",
" <td>1.116667</td>\n",
" <td>45.5</td>\n",
" <td>114.0</td>\n",
" <td>556.166667</td>\n",
" <td>92.833333</td>\n",
" <td>155.000000</td>\n",
" <td>258.666667</td>\n",
" <td>8.5</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Handanovic</td>\n",
" <td>Inter</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>12.500000</td>\n",
" <td>0.270000</td>\n",
" <td>-2.500000</td>\n",
" <td>31.0</td>\n",
" <td>62.0</td>\n",
" <td>345.000000</td>\n",
" <td>54.000000</td>\n",
" <td>59.000000</td>\n",
" <td>112.000000</td>\n",
" <td>2.0</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>1843</th>\n",
" <td>31</td>\n",
" <td>Consigli</td>\n",
" <td>Sassuolo</td>\n",
" <td>Salernitana</td>\n",
" <td>0</td>\n",
" <td>5.0</td>\n",
" <td>-3</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>2.0</td>\n",
" <td>...</td>\n",
" <td>31.000000</td>\n",
" <td>0.300000</td>\n",
" <td>-12.000000</td>\n",
" <td>153.0</td>\n",
" <td>380.0</td>\n",
" <td>946.000000</td>\n",
" <td>154.000000</td>\n",
" <td>249.000000</td>\n",
" <td>409.000000</td>\n",
" <td>24.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1844</th>\n",
" <td>31</td>\n",
" <td>Zoet</td>\n",
" <td>Spezia</td>\n",
" <td>Sampdoria</td>\n",
" <td>0</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>14.566667</td>\n",
" <td>0.213333</td>\n",
" <td>-0.433333</td>\n",
" <td>56.0</td>\n",
" <td>171.0</td>\n",
" <td>316.333333</td>\n",
" <td>49.666667</td>\n",
" <td>64.333333</td>\n",
" <td>160.333333</td>\n",
" <td>5.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1845</th>\n",
" <td>31</td>\n",
" <td>Milinkovic-Savic V.</td>\n",
" <td>Torino</td>\n",
" <td>Lazio</td>\n",
" <td>0</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>31.500000</td>\n",
" <td>0.240000</td>\n",
" <td>-4.500000</td>\n",
" <td>224.0</td>\n",
" <td>762.0</td>\n",
" <td>1196.000000</td>\n",
" <td>142.000000</td>\n",
" <td>236.000000</td>\n",
" <td>387.000000</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1846</th>\n",
" <td>31</td>\n",
" <td>Silvestri</td>\n",
" <td>Udinese</td>\n",
" <td>Cremonese</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>6.0</td>\n",
" <td>...</td>\n",
" <td>37.500000</td>\n",
" <td>0.300000</td>\n",
" <td>0.500000</td>\n",
" <td>121.0</td>\n",
" <td>316.0</td>\n",
" <td>687.000000</td>\n",
" <td>120.000000</td>\n",
" <td>237.000000</td>\n",
" <td>441.000000</td>\n",
" <td>11.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1847</th>\n",
" <td>31</td>\n",
" <td>Montipo'</td>\n",
" <td>Verona</td>\n",
" <td>Bologna</td>\n",
" <td>1</td>\n",
" <td>6.5</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.5</td>\n",
" <td>...</td>\n",
" <td>38.700000</td>\n",
" <td>0.260000</td>\n",
" <td>-4.300000</td>\n",
" <td>280.0</td>\n",
" <td>616.0</td>\n",
" <td>745.000000</td>\n",
" <td>99.000000</td>\n",
" <td>227.000000</td>\n",
" <td>401.000000</td>\n",
" <td>22.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1848 rows × 102 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote \\\n",
"0 1 Musso Atalanta Sampdoria 0 6.0 \n",
"1 1 Skorupski Bologna Lazio 0 6.5 \n",
"2 1 Vicario Empoli Spezia 0 5.5 \n",
"3 1 Gollini Fiorentina Cremonese 1 5.0 \n",
"4 1 Handanovic Inter Lecce 0 6.5 \n",
"... ... ... ... ... ... ... \n",
"1843 31 Consigli Sassuolo Salernitana 0 5.0 \n",
"1844 31 Zoet Spezia Sampdoria 0 6.5 \n",
"1845 31 Milinkovic-Savic V. Torino Lazio 0 6.0 \n",
"1846 31 Silvestri Udinese Cremonese 1 6.0 \n",
"1847 31 Montipo' Verona Bologna 1 6.5 \n",
"\n",
" goals assists cards_malus fantavote ... gk_psxg \\\n",
"0 0 0 0.5 5.5 ... 20.000000 \n",
"1 -2 0 0.0 4.5 ... 40.200000 \n",
"2 -1 0 0.0 4.5 ... 32.300000 \n",
"3 -2 0 0.0 3.0 ... 18.616667 \n",
"4 -1 0 0.0 5.5 ... 12.500000 \n",
"... ... ... ... ... ... ... \n",
"1843 -3 0 0.0 2.0 ... 31.000000 \n",
"1844 -1 0 0.0 5.5 ... 14.566667 \n",
"1845 0 0 0.0 6.0 ... 31.500000 \n",
"1846 0 0 0.0 6.0 ... 37.500000 \n",
"1847 -1 0 0.0 5.5 ... 38.700000 \n",
"\n",
" gk_psnpxg_per_shot_on_target_against gk_psxg_net \\\n",
"0 0.220000 -3.000000 \n",
"1 0.250000 3.200000 \n",
"2 0.280000 2.300000 \n",
"3 0.220000 1.116667 \n",
"4 0.270000 -2.500000 \n",
"... ... ... \n",
"1843 0.300000 -12.000000 \n",
"1844 0.213333 -0.433333 \n",
"1845 0.240000 -4.500000 \n",
"1846 0.300000 0.500000 \n",
"1847 0.260000 -4.300000 \n",
"\n",
" gk_passes_completed_launched gk_passes_launched gk_passes \\\n",
"0 108.0 266.0 532.000000 \n",
"1 129.0 329.0 773.000000 \n",
"2 117.0 346.0 869.000000 \n",
"3 45.5 114.0 556.166667 \n",
"4 31.0 62.0 345.000000 \n",
"... ... ... ... \n",
"1843 153.0 380.0 946.000000 \n",
"1844 56.0 171.0 316.333333 \n",
"1845 224.0 762.0 1196.000000 \n",
"1846 121.0 316.0 687.000000 \n",
"1847 280.0 616.0 745.000000 \n",
"\n",
" gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n",
"0 148.000000 149.000000 247.000000 14.0 \n",
"1 169.000000 219.000000 402.000000 24.0 \n",
"2 123.000000 139.000000 489.000000 28.0 \n",
"3 92.833333 155.000000 258.666667 8.5 \n",
"4 54.000000 59.000000 112.000000 2.0 \n",
"... ... ... ... ... \n",
"1843 154.000000 249.000000 409.000000 24.0 \n",
"1844 49.666667 64.333333 160.333333 5.0 \n",
"1845 142.000000 236.000000 387.000000 25.0 \n",
"1846 120.000000 237.000000 441.000000 11.0 \n",
"1847 99.000000 227.000000 401.000000 22.0 \n",
"\n",
"[1848 rows x 102 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"db_gk1 = pd.read_excel('mid_outputs/database_entries_gk.xlsx', index_col = 0) \n",
"db_gk2 = pd.read_excel('mid_outputs/season2021/database_entries_gk.xlsx', index_col = 0) \n",
"db_gk3 = pd.read_excel('mid_outputs/season2122/database_entries_gk.xlsx', index_col = 0) \n",
"\n",
"db_gk = pd.concat([db_gk1, db_gk1, db_gk1], ignore_index = True) \n",
"\n",
"db_gk"
]
},
{
"cell_type": "markdown",
"id": "04df0936",
"metadata": {},
"source": [
"Load player stats from current season and past seasons"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "bc9dae87",
"metadata": {},
"outputs": [],
"source": [
"players_orig = pd.read_excel('mid_outputs/players_stats.xlsx', index_col = 3)\n",
"#players = pd.read_excel('mid_outputs/players_stats_rwk.xlsx', index_col = 3) # reworked stats to account for past season\n",
"\n",
"players_old = pd.read_excel('mid_outputs/season2122/players_stats.xlsx', index_col = 3)\n",
"players_old_2 = pd.read_excel('mid_outputs/season2021/players_stats.xlsx', index_col = 3)\n",
"\n",
"players = players_orig"
]
},
{
"cell_type": "markdown",
"id": "397babf2",
"metadata": {},
"source": [
"Load team data from current season and add an average Serie A team row"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "493b0495",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\nicol\\AppData\\Local\\Temp\\ipykernel_6676\\661405348.py:3: FutureWarning: Dropping of nuisance columns in DataFrame reductions (with 'numeric_only=None') is deprecated; in a future version this will raise TypeError. Select only valid columns before calling the reduction.\n",
" avg_row = pd.DataFrame(index = ['Avg'], data = [team_data.mean()], columns = team_data.columns)\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>team</th>\n",
" <th>team_players_used</th>\n",
" <th>team_possession</th>\n",
" <th>team_games</th>\n",
" <th>team_games_starts</th>\n",
" <th>team_minutes</th>\n",
" <th>team_goals</th>\n",
" <th>team_assists</th>\n",
" <th>team_pens_made</th>\n",
" <th>team_pens_att</th>\n",
" <th>...</th>\n",
" <th>vs_team_fouls</th>\n",
" <th>vs_team_fouled</th>\n",
" <th>vs_team_offsides</th>\n",
" <th>vs_team_pens_won</th>\n",
" <th>vs_team_pens_conceded</th>\n",
" <th>vs_team_own_goals</th>\n",
" <th>vs_team_ball_recoveries</th>\n",
" <th>vs_team_aerials_won</th>\n",
" <th>vs_team_aerials_lost</th>\n",
" <th>vs_team_aerials_won_pct</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Atalanta</th>\n",
" <td>Atalanta</td>\n",
" <td>25.0</td>\n",
" <td>50.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>50.0</td>\n",
" <td>32.0</td>\n",
" <td>6.0</td>\n",
" <td>8.00</td>\n",
" <td>...</td>\n",
" <td>338.0</td>\n",
" <td>356.00</td>\n",
" <td>40.00</td>\n",
" <td>1.00</td>\n",
" <td>8.0</td>\n",
" <td>1.00</td>\n",
" <td>1865.0</td>\n",
" <td>389.0</td>\n",
" <td>472.0</td>\n",
" <td>45.200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bologna</th>\n",
" <td>Bologna</td>\n",
" <td>27.0</td>\n",
" <td>53.4</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>39.0</td>\n",
" <td>32.0</td>\n",
" <td>4.0</td>\n",
" <td>4.00</td>\n",
" <td>...</td>\n",
" <td>376.0</td>\n",
" <td>365.00</td>\n",
" <td>52.00</td>\n",
" <td>5.00</td>\n",
" <td>4.0</td>\n",
" <td>1.00</td>\n",
" <td>1687.0</td>\n",
" <td>379.0</td>\n",
" <td>306.0</td>\n",
" <td>55.300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cremonese</th>\n",
" <td>Cremonese</td>\n",
" <td>32.0</td>\n",
" <td>43.2</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>27.0</td>\n",
" <td>13.0</td>\n",
" <td>4.0</td>\n",
" <td>6.00</td>\n",
" <td>...</td>\n",
" <td>345.0</td>\n",
" <td>372.00</td>\n",
" <td>52.00</td>\n",
" <td>4.00</td>\n",
" <td>6.0</td>\n",
" <td>0.00</td>\n",
" <td>1745.0</td>\n",
" <td>594.0</td>\n",
" <td>462.0</td>\n",
" <td>56.300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Empoli</th>\n",
" <td>Empoli</td>\n",
" <td>31.0</td>\n",
" <td>47.4</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>25.0</td>\n",
" <td>13.0</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>...</td>\n",
" <td>384.0</td>\n",
" <td>341.00</td>\n",
" <td>60.00</td>\n",
" <td>2.00</td>\n",
" <td>1.0</td>\n",
" <td>0.00</td>\n",
" <td>1607.0</td>\n",
" <td>412.0</td>\n",
" <td>330.0</td>\n",
" <td>55.500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fiorentina</th>\n",
" <td>Fiorentina</td>\n",
" <td>29.0</td>\n",
" <td>56.6</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>35.0</td>\n",
" <td>25.0</td>\n",
" <td>4.0</td>\n",
" <td>6.00</td>\n",
" <td>...</td>\n",
" <td>460.0</td>\n",
" <td>371.00</td>\n",
" <td>78.00</td>\n",
" <td>2.00</td>\n",
" <td>6.0</td>\n",
" <td>2.00</td>\n",
" <td>1625.0</td>\n",
" <td>425.0</td>\n",
" <td>504.0</td>\n",
" <td>45.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Verona</th>\n",
" <td>Hellas Verona</td>\n",
" <td>36.0</td>\n",
" <td>42.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>24.0</td>\n",
" <td>18.0</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>...</td>\n",
" <td>337.0</td>\n",
" <td>438.00</td>\n",
" <td>32.00</td>\n",
" <td>1.00</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>1728.0</td>\n",
" <td>619.0</td>\n",
" <td>615.0</td>\n",
" <td>50.200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Inter</th>\n",
" <td>Inter</td>\n",
" <td>24.0</td>\n",
" <td>56.2</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>50.0</td>\n",
" <td>35.0</td>\n",
" <td>4.0</td>\n",
" <td>5.00</td>\n",
" <td>...</td>\n",
" <td>368.0</td>\n",
" <td>336.00</td>\n",
" <td>29.00</td>\n",
" <td>3.00</td>\n",
" <td>5.0</td>\n",
" <td>1.00</td>\n",
" <td>1443.0</td>\n",
" <td>344.0</td>\n",
" <td>443.0</td>\n",
" <td>43.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Juventus</th>\n",
" <td>Juventus</td>\n",
" <td>29.0</td>\n",
" <td>48.6</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>47.0</td>\n",
" <td>37.0</td>\n",
" <td>3.0</td>\n",
" <td>5.00</td>\n",
" <td>...</td>\n",
" <td>348.0</td>\n",
" <td>328.00</td>\n",
" <td>39.00</td>\n",
" <td>0.00</td>\n",
" <td>5.0</td>\n",
" <td>0.00</td>\n",
" <td>1556.0</td>\n",
" <td>381.0</td>\n",
" <td>390.0</td>\n",
" <td>49.400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lazio</th>\n",
" <td>Lazio</td>\n",
" <td>22.0</td>\n",
" <td>51.9</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>48.0</td>\n",
" <td>29.0</td>\n",
" <td>5.0</td>\n",
" <td>7.00</td>\n",
" <td>...</td>\n",
" <td>421.0</td>\n",
" <td>304.00</td>\n",
" <td>55.00</td>\n",
" <td>1.00</td>\n",
" <td>7.0</td>\n",
" <td>1.00</td>\n",
" <td>1677.0</td>\n",
" <td>319.0</td>\n",
" <td>319.0</td>\n",
" <td>50.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lecce</th>\n",
" <td>Lecce</td>\n",
" <td>29.0</td>\n",
" <td>41.7</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>24.0</td>\n",
" <td>17.0</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>378.0</td>\n",
" <td>425.00</td>\n",
" <td>57.00</td>\n",
" <td>4.00</td>\n",
" <td>2.0</td>\n",
" <td>2.00</td>\n",
" <td>1694.0</td>\n",
" <td>582.0</td>\n",
" <td>466.0</td>\n",
" <td>55.500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Milan</th>\n",
" <td>Milan</td>\n",
" <td>29.0</td>\n",
" <td>54.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>48.0</td>\n",
" <td>39.0</td>\n",
" <td>3.0</td>\n",
" <td>3.00</td>\n",
" <td>...</td>\n",
" <td>378.0</td>\n",
" <td>369.00</td>\n",
" <td>31.00</td>\n",
" <td>5.00</td>\n",
" <td>3.0</td>\n",
" <td>3.00</td>\n",
" <td>1617.0</td>\n",
" <td>387.0</td>\n",
" <td>456.0</td>\n",
" <td>45.900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Monza</th>\n",
" <td>Monza</td>\n",
" <td>31.0</td>\n",
" <td>55.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>36.0</td>\n",
" <td>23.0</td>\n",
" <td>5.0</td>\n",
" <td>5.00</td>\n",
" <td>...</td>\n",
" <td>437.0</td>\n",
" <td>385.00</td>\n",
" <td>48.00</td>\n",
" <td>1.00</td>\n",
" <td>5.0</td>\n",
" <td>2.00</td>\n",
" <td>1608.0</td>\n",
" <td>340.0</td>\n",
" <td>357.0</td>\n",
" <td>48.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Napoli</th>\n",
" <td>Napoli</td>\n",
" <td>26.0</td>\n",
" <td>61.8</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>65.0</td>\n",
" <td>51.0</td>\n",
" <td>6.0</td>\n",
" <td>7.00</td>\n",
" <td>...</td>\n",
" <td>405.0</td>\n",
" <td>287.00</td>\n",
" <td>39.00</td>\n",
" <td>1.00</td>\n",
" <td>6.0</td>\n",
" <td>2.00</td>\n",
" <td>1562.0</td>\n",
" <td>322.0</td>\n",
" <td>389.0</td>\n",
" <td>45.300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Roma</th>\n",
" <td>Roma</td>\n",
" <td>27.0</td>\n",
" <td>49.2</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>43.0</td>\n",
" <td>30.0</td>\n",
" <td>6.0</td>\n",
" <td>9.00</td>\n",
" <td>...</td>\n",
" <td>447.0</td>\n",
" <td>344.00</td>\n",
" <td>21.00</td>\n",
" <td>2.00</td>\n",
" <td>9.0</td>\n",
" <td>0.00</td>\n",
" <td>1621.0</td>\n",
" <td>331.0</td>\n",
" <td>426.0</td>\n",
" <td>43.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Salernitana</th>\n",
" <td>Salernitana</td>\n",
" <td>28.0</td>\n",
" <td>44.6</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>35.0</td>\n",
" <td>25.0</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>...</td>\n",
" <td>375.0</td>\n",
" <td>357.00</td>\n",
" <td>64.00</td>\n",
" <td>10.00</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>1709.0</td>\n",
" <td>448.0</td>\n",
" <td>427.0</td>\n",
" <td>51.200</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sampdoria</th>\n",
" <td>Sampdoria</td>\n",
" <td>37.0</td>\n",
" <td>47.4</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>20.0</td>\n",
" <td>16.0</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>449.0</td>\n",
" <td>408.00</td>\n",
" <td>75.00</td>\n",
" <td>6.00</td>\n",
" <td>2.0</td>\n",
" <td>0.00</td>\n",
" <td>1693.0</td>\n",
" <td>535.0</td>\n",
" <td>517.0</td>\n",
" <td>50.900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sassuolo</th>\n",
" <td>Sassuolo</td>\n",
" <td>29.0</td>\n",
" <td>48.9</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>37.0</td>\n",
" <td>24.0</td>\n",
" <td>6.0</td>\n",
" <td>7.00</td>\n",
" <td>...</td>\n",
" <td>384.0</td>\n",
" <td>307.00</td>\n",
" <td>94.00</td>\n",
" <td>2.00</td>\n",
" <td>7.0</td>\n",
" <td>1.00</td>\n",
" <td>1611.0</td>\n",
" <td>385.0</td>\n",
" <td>329.0</td>\n",
" <td>53.900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Spezia</th>\n",
" <td>Spezia</td>\n",
" <td>34.0</td>\n",
" <td>47.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>24.0</td>\n",
" <td>15.0</td>\n",
" <td>4.0</td>\n",
" <td>4.00</td>\n",
" <td>...</td>\n",
" <td>321.0</td>\n",
" <td>396.00</td>\n",
" <td>67.00</td>\n",
" <td>4.00</td>\n",
" <td>4.0</td>\n",
" <td>2.00</td>\n",
" <td>1708.0</td>\n",
" <td>470.0</td>\n",
" <td>424.0</td>\n",
" <td>52.600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Torino</th>\n",
" <td>Torino</td>\n",
" <td>28.0</td>\n",
" <td>53.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>32.0</td>\n",
" <td>26.0</td>\n",
" <td>2.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>341.0</td>\n",
" <td>409.00</td>\n",
" <td>32.00</td>\n",
" <td>4.00</td>\n",
" <td>2.0</td>\n",
" <td>0.00</td>\n",
" <td>1597.0</td>\n",
" <td>508.0</td>\n",
" <td>474.0</td>\n",
" <td>51.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Udinese</th>\n",
" <td>Udinese</td>\n",
" <td>27.0</td>\n",
" <td>48.1</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>41.0</td>\n",
" <td>36.0</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>412.0</td>\n",
" <td>357.00</td>\n",
" <td>50.00</td>\n",
" <td>3.00</td>\n",
" <td>2.0</td>\n",
" <td>1.00</td>\n",
" <td>1577.0</td>\n",
" <td>326.0</td>\n",
" <td>390.0</td>\n",
" <td>45.500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Avg</th>\n",
" <td>Avg</td>\n",
" <td>29.0</td>\n",
" <td>50.0</td>\n",
" <td>31.0</td>\n",
" <td>341.0</td>\n",
" <td>2790.0</td>\n",
" <td>37.5</td>\n",
" <td>26.8</td>\n",
" <td>3.4</td>\n",
" <td>4.35</td>\n",
" <td>...</td>\n",
" <td>385.2</td>\n",
" <td>362.75</td>\n",
" <td>50.75</td>\n",
" <td>3.05</td>\n",
" <td>4.3</td>\n",
" <td>1.15</td>\n",
" <td>1646.5</td>\n",
" <td>424.8</td>\n",
" <td>424.8</td>\n",
" <td>49.815</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>21 rows × 303 columns</p>\n",
"</div>"
],
"text/plain": [
" team team_players_used team_possession team_games \\\n",
"Atalanta Atalanta 25.0 50.0 31.0 \n",
"Bologna Bologna 27.0 53.4 31.0 \n",
"Cremonese Cremonese 32.0 43.2 31.0 \n",
"Empoli Empoli 31.0 47.4 31.0 \n",
"Fiorentina Fiorentina 29.0 56.6 31.0 \n",
"Verona Hellas Verona 36.0 42.0 31.0 \n",
"Inter Inter 24.0 56.2 31.0 \n",
"Juventus Juventus 29.0 48.6 31.0 \n",
"Lazio Lazio 22.0 51.9 31.0 \n",
"Lecce Lecce 29.0 41.7 31.0 \n",
"Milan Milan 29.0 54.0 31.0 \n",
"Monza Monza 31.0 55.0 31.0 \n",
"Napoli Napoli 26.0 61.8 31.0 \n",
"Roma Roma 27.0 49.2 31.0 \n",
"Salernitana Salernitana 28.0 44.6 31.0 \n",
"Sampdoria Sampdoria 37.0 47.4 31.0 \n",
"Sassuolo Sassuolo 29.0 48.9 31.0 \n",
"Spezia Spezia 34.0 47.0 31.0 \n",
"Torino Torino 28.0 53.0 31.0 \n",
"Udinese Udinese 27.0 48.1 31.0 \n",
"Avg Avg 29.0 50.0 31.0 \n",
"\n",
" team_games_starts team_minutes team_goals team_assists \\\n",
"Atalanta 341.0 2790.0 50.0 32.0 \n",
"Bologna 341.0 2790.0 39.0 32.0 \n",
"Cremonese 341.0 2790.0 27.0 13.0 \n",
"Empoli 341.0 2790.0 25.0 13.0 \n",
"Fiorentina 341.0 2790.0 35.0 25.0 \n",
"Verona 341.0 2790.0 24.0 18.0 \n",
"Inter 341.0 2790.0 50.0 35.0 \n",
"Juventus 341.0 2790.0 47.0 37.0 \n",
"Lazio 341.0 2790.0 48.0 29.0 \n",
"Lecce 341.0 2790.0 24.0 17.0 \n",
"Milan 341.0 2790.0 48.0 39.0 \n",
"Monza 341.0 2790.0 36.0 23.0 \n",
"Napoli 341.0 2790.0 65.0 51.0 \n",
"Roma 341.0 2790.0 43.0 30.0 \n",
"Salernitana 341.0 2790.0 35.0 25.0 \n",
"Sampdoria 341.0 2790.0 20.0 16.0 \n",
"Sassuolo 341.0 2790.0 37.0 24.0 \n",
"Spezia 341.0 2790.0 24.0 15.0 \n",
"Torino 341.0 2790.0 32.0 26.0 \n",
"Udinese 341.0 2790.0 41.0 36.0 \n",
"Avg 341.0 2790.0 37.5 26.8 \n",
"\n",
" team_pens_made team_pens_att ... vs_team_fouls \\\n",
"Atalanta 6.0 8.00 ... 338.0 \n",
"Bologna 4.0 4.00 ... 376.0 \n",
"Cremonese 4.0 6.00 ... 345.0 \n",
"Empoli 1.0 1.00 ... 384.0 \n",
"Fiorentina 4.0 6.00 ... 460.0 \n",
"Verona 1.0 1.00 ... 337.0 \n",
"Inter 4.0 5.00 ... 368.0 \n",
"Juventus 3.0 5.00 ... 348.0 \n",
"Lazio 5.0 7.00 ... 421.0 \n",
"Lecce 1.0 2.00 ... 378.0 \n",
"Milan 3.0 3.00 ... 378.0 \n",
"Monza 5.0 5.00 ... 437.0 \n",
"Napoli 6.0 7.00 ... 405.0 \n",
"Roma 6.0 9.00 ... 447.0 \n",
"Salernitana 1.0 1.00 ... 375.0 \n",
"Sampdoria 1.0 2.00 ... 449.0 \n",
"Sassuolo 6.0 7.00 ... 384.0 \n",
"Spezia 4.0 4.00 ... 321.0 \n",
"Torino 2.0 2.00 ... 341.0 \n",
"Udinese 1.0 2.00 ... 412.0 \n",
"Avg 3.4 4.35 ... 385.2 \n",
"\n",
" vs_team_fouled vs_team_offsides vs_team_pens_won \\\n",
"Atalanta 356.00 40.00 1.00 \n",
"Bologna 365.00 52.00 5.00 \n",
"Cremonese 372.00 52.00 4.00 \n",
"Empoli 341.00 60.00 2.00 \n",
"Fiorentina 371.00 78.00 2.00 \n",
"Verona 438.00 32.00 1.00 \n",
"Inter 336.00 29.00 3.00 \n",
"Juventus 328.00 39.00 0.00 \n",
"Lazio 304.00 55.00 1.00 \n",
"Lecce 425.00 57.00 4.00 \n",
"Milan 369.00 31.00 5.00 \n",
"Monza 385.00 48.00 1.00 \n",
"Napoli 287.00 39.00 1.00 \n",
"Roma 344.00 21.00 2.00 \n",
"Salernitana 357.00 64.00 10.00 \n",
"Sampdoria 408.00 75.00 6.00 \n",
"Sassuolo 307.00 94.00 2.00 \n",
"Spezia 396.00 67.00 4.00 \n",
"Torino 409.00 32.00 4.00 \n",
"Udinese 357.00 50.00 3.00 \n",
"Avg 362.75 50.75 3.05 \n",
"\n",
" vs_team_pens_conceded vs_team_own_goals \\\n",
"Atalanta 8.0 1.00 \n",
"Bologna 4.0 1.00 \n",
"Cremonese 6.0 0.00 \n",
"Empoli 1.0 0.00 \n",
"Fiorentina 6.0 2.00 \n",
"Verona 1.0 2.00 \n",
"Inter 5.0 1.00 \n",
"Juventus 5.0 0.00 \n",
"Lazio 7.0 1.00 \n",
"Lecce 2.0 2.00 \n",
"Milan 3.0 3.00 \n",
"Monza 5.0 2.00 \n",
"Napoli 6.0 2.00 \n",
"Roma 9.0 0.00 \n",
"Salernitana 1.0 2.00 \n",
"Sampdoria 2.0 0.00 \n",
"Sassuolo 7.0 1.00 \n",
"Spezia 4.0 2.00 \n",
"Torino 2.0 0.00 \n",
"Udinese 2.0 1.00 \n",
"Avg 4.3 1.15 \n",
"\n",
" vs_team_ball_recoveries vs_team_aerials_won \\\n",
"Atalanta 1865.0 389.0 \n",
"Bologna 1687.0 379.0 \n",
"Cremonese 1745.0 594.0 \n",
"Empoli 1607.0 412.0 \n",
"Fiorentina 1625.0 425.0 \n",
"Verona 1728.0 619.0 \n",
"Inter 1443.0 344.0 \n",
"Juventus 1556.0 381.0 \n",
"Lazio 1677.0 319.0 \n",
"Lecce 1694.0 582.0 \n",
"Milan 1617.0 387.0 \n",
"Monza 1608.0 340.0 \n",
"Napoli 1562.0 322.0 \n",
"Roma 1621.0 331.0 \n",
"Salernitana 1709.0 448.0 \n",
"Sampdoria 1693.0 535.0 \n",
"Sassuolo 1611.0 385.0 \n",
"Spezia 1708.0 470.0 \n",
"Torino 1597.0 508.0 \n",
"Udinese 1577.0 326.0 \n",
"Avg 1646.5 424.8 \n",
"\n",
" vs_team_aerials_lost vs_team_aerials_won_pct \n",
"Atalanta 472.0 45.200 \n",
"Bologna 306.0 55.300 \n",
"Cremonese 462.0 56.300 \n",
"Empoli 330.0 55.500 \n",
"Fiorentina 504.0 45.700 \n",
"Verona 615.0 50.200 \n",
"Inter 443.0 43.700 \n",
"Juventus 390.0 49.400 \n",
"Lazio 319.0 50.000 \n",
"Lecce 466.0 55.500 \n",
"Milan 456.0 45.900 \n",
"Monza 357.0 48.800 \n",
"Napoli 389.0 45.300 \n",
"Roma 426.0 43.700 \n",
"Salernitana 427.0 51.200 \n",
"Sampdoria 517.0 50.900 \n",
"Sassuolo 329.0 53.900 \n",
"Spezia 424.0 52.600 \n",
"Torino 474.0 51.700 \n",
"Udinese 390.0 45.500 \n",
"Avg 424.8 49.815 \n",
"\n",
"[21 rows x 303 columns]"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"team_data = pd.read_excel('mid_outputs/team_data.xlsx', index_col = 0)\n",
"\n",
"avg_row = pd.DataFrame(index = ['Avg'], data = [team_data.mean()], columns = team_data.columns)\n",
"avg_row['team']['Avg'] = 'Avg'\n",
"\n",
"team_data = pd.concat([team_data, avg_row])\n",
"\n",
"team_data"
]
},
{
"cell_type": "markdown",
"id": "cc1cd13d",
"metadata": {},
"source": [
"Data processing functions copied from player_match_dataset_creation"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "32f56138",
"metadata": {},
"outputs": [],
"source": [
"features_abs = ['r',\n",
" 'games',\n",
" 'games_starts', \n",
" 'minutes',\n",
" 'shots_on_target_pct',\n",
" 'goals_per_shot',\n",
" 'goals_per_shot_on_target',\n",
" 'passes_pct',\n",
" #'dribble_tackles_pct',\n",
" #'dribbles_completed_pct',\n",
" 'aerials_won_pct',\n",
" 'team_possession',\n",
" 'team_goals_assists_per90',\n",
" 'team_goals_pens_per90',\n",
" 'team_goals_assists_pens_per90',\n",
" 'team_xg_per90',\n",
" 'team_gk_goals_against_per90',\n",
" 'team_gk_save_pct',\n",
" 'team_gk_clean_sheets_pct',\n",
" 'team_passes_pct',\n",
" 'team_passes_pct_medium',\n",
" 'team_passes_pct_long',\n",
" 'team_sca_per90',\n",
" 'team_gca_per90',\n",
" #'team_dribble_tackles_pct',\n",
" 'team_aerials_won_pct',\n",
" 'vs_team_possession',\n",
" 'vs_team_goals_per90',\n",
" 'vs_team_assists_per90',\n",
" 'vs_team_xg_per90',\n",
" 'vs_team_gk_save_pct',\n",
" 'vs_team_gk_clean_sheets_pct',\n",
" 'vs_team_gk_pct_passes_launched',\n",
" 'vs_team_gk_crosses_stopped_pct',\n",
" 'vs_team_shots_on_target_per90',\n",
" 'vs_team_passes_pct',\n",
" 'vs_team_passes_pct_short',\n",
" 'vs_team_passes_pct_medium',\n",
" 'vs_team_passes_pct_long',\n",
" 'vs_team_sca_per90',\n",
" 'vs_team_gca_per90',\n",
" #'vs_team_dribble_tackles_pct',\n",
" #'vs_team_dribbles_completed_pct',\n",
" 'vs_team_aerials_won_pct',\n",
" 'opp_team_possession',\n",
" 'opp_team_goals_assists_per90',\n",
" 'opp_team_goals_pens_per90',\n",
" 'opp_team_goals_assists_pens_per90',\n",
" 'opp_team_xg_per90',\n",
" 'opp_team_gk_goals_against_per90',\n",
" 'opp_team_gk_save_pct',\n",
" 'opp_team_gk_clean_sheets_pct',\n",
" 'opp_team_passes_pct',\n",
" 'opp_team_passes_pct_medium',\n",
" 'opp_team_passes_pct_long',\n",
" 'opp_team_sca_per90',\n",
" 'opp_team_gca_per90',\n",
" #'opp_team_dribble_tackles_pct',\n",
" 'opp_team_aerials_won_pct',\n",
" 'opp_vs_team_possession',\n",
" 'opp_vs_team_goals_per90',\n",
" 'opp_vs_team_assists_per90',\n",
" 'opp_vs_team_xg_per90',\n",
" 'opp_vs_team_gk_save_pct',\n",
" 'opp_vs_team_gk_clean_sheets_pct',\n",
" 'opp_vs_team_gk_pct_passes_launched',\n",
" 'opp_vs_team_gk_crosses_stopped_pct',\n",
" 'opp_vs_team_shots_on_target_per90',\n",
" 'opp_vs_team_passes_pct',\n",
" 'opp_vs_team_passes_pct_short',\n",
" 'opp_vs_team_passes_pct_medium',\n",
" 'opp_vs_team_passes_pct_long',\n",
" 'opp_vs_team_sca_per90',\n",
" 'opp_vs_team_gca_per90',\n",
" #'opp_vs_team_dribble_tackles_pct',\n",
" #'opp_vs_team_dribbles_completed_pct',\n",
" 'opp_vs_team_aerials_won_pct',\n",
" \n",
" 'vote_avg',\n",
" 'vote_std']\n",
"\n",
"features_rel = [\n",
" 'goals',\n",
" 'assists',\n",
" 'cards_yellow',\n",
" 'cards_red',\n",
" 'xg',\n",
" 'npxg',\n",
" 'shots_on_target',\n",
" 'passes_completed',\n",
" 'passes_into_final_third',\n",
" 'passes_into_penalty_area',\n",
" 'progressive_passes',\n",
" 'passes_live',\n",
" 'passes_dead',\n",
" 'through_balls',\n",
" 'passes_switches',\n",
" 'crosses',\n",
" 'corner_kicks',\n",
" #'dribble_tackles',\n",
" #'dribbles_vs',\n",
" #'dribbled_past',\n",
" 'blocks',\n",
" 'blocked_shots',\n",
" 'blocked_passes',\n",
" 'interceptions',\n",
" 'clearances',\n",
" 'errors',\n",
" 'touches',\n",
" 'touches_def_pen_area',\n",
" 'touches_def_3rd',\n",
" 'touches_mid_3rd',\n",
" 'touches_att_3rd',\n",
" 'touches_att_pen_area',\n",
" 'touches_live_ball',\n",
" #'dribbles_completed',\n",
" #'dribbles',\n",
" 'passes_received',\n",
" 'miscontrols',\n",
" 'dispossessed',\n",
" 'fouls',\n",
" 'fouled',\n",
" 'aerials_won',\n",
" 'aerials_lost',\n",
" 'carries',\n",
" 'progressive_carries',\n",
" 'carries_into_final_third',\n",
" 'carries_into_penalty_area']\n",
"\n",
"features_rel_gamecorr = [\n",
" 'goals',\n",
" 'assists',\n",
" 'xg',\n",
" 'npxg',\n",
" 'cards_yellow',\n",
" 'cards_red'\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4001f3f8",
"metadata": {},
"outputs": [],
"source": [
"features_abs_gk = [\n",
" 'gk_games',\n",
" 'gk_games_starts',\n",
" 'gk_minutes',\n",
" 'gk_goals_against_per90', \n",
" 'gk_save_pct',\n",
" 'gk_clean_sheets_pct',\n",
" 'gk_psxg_net_per90',\n",
" 'gk_passes_pct_launched',\n",
" 'gk_pct_passes_launched',\n",
" 'gk_passes_length_avg',\n",
" 'gk_pct_goal_kicks_launched',\n",
" 'gk_goal_kick_length_avg',\n",
" 'gk_crosses_stopped_pct',\n",
" 'gk_def_actions_outside_pen_area_per90',\n",
" 'gk_avg_distance_def_actions',\n",
" \n",
" 'team_possession',\n",
" 'team_goals_assists_per90',\n",
" 'team_goals_pens_per90',\n",
" 'team_goals_assists_pens_per90',\n",
" 'team_xg_per90',\n",
" 'team_gk_goals_against_per90',\n",
" 'team_gk_save_pct',\n",
" 'team_gk_clean_sheets_pct',\n",
" 'team_passes_pct',\n",
" 'team_passes_pct_medium',\n",
" 'team_passes_pct_long',\n",
" 'team_sca_per90',\n",
" 'team_gca_per90',\n",
" #'team_dribble_tackles_pct',\n",
" 'team_aerials_won_pct',\n",
" 'vs_team_possession',\n",
" 'vs_team_goals_per90',\n",
" 'vs_team_assists_per90',\n",
" 'vs_team_xg_per90',\n",
" 'vs_team_gk_save_pct',\n",
" 'vs_team_gk_clean_sheets_pct',\n",
" 'vs_team_gk_pct_passes_launched',\n",
" 'vs_team_gk_crosses_stopped_pct',\n",
" 'vs_team_shots_on_target_per90',\n",
" 'vs_team_passes_pct',\n",
" 'vs_team_passes_pct_short',\n",
" 'vs_team_passes_pct_medium',\n",
" 'vs_team_passes_pct_long',\n",
" 'vs_team_sca_per90',\n",
" 'vs_team_gca_per90',\n",
" #'vs_team_dribble_tackles_pct',\n",
" #'vs_team_dribbles_completed_pct',\n",
" 'vs_team_aerials_won_pct',\n",
" 'opp_team_possession',\n",
" 'opp_team_goals_assists_per90',\n",
" 'opp_team_goals_pens_per90',\n",
" 'opp_team_goals_assists_pens_per90',\n",
" 'opp_team_xg_per90',\n",
" 'opp_team_gk_goals_against_per90',\n",
" 'opp_team_gk_save_pct',\n",
" 'opp_team_gk_clean_sheets_pct',\n",
" 'opp_team_passes_pct',\n",
" 'opp_team_passes_pct_medium',\n",
" 'opp_team_passes_pct_long',\n",
" 'opp_team_sca_per90',\n",
" 'opp_team_gca_per90',\n",
" #'opp_team_dribble_tackles_pct',\n",
" 'opp_team_aerials_won_pct',\n",
" 'opp_vs_team_possession',\n",
" 'opp_vs_team_goals_per90',\n",
" 'opp_vs_team_assists_per90',\n",
" 'opp_vs_team_xg_per90',\n",
" 'opp_vs_team_gk_save_pct',\n",
" 'opp_vs_team_gk_clean_sheets_pct',\n",
" 'opp_vs_team_gk_pct_passes_launched',\n",
" 'opp_vs_team_gk_crosses_stopped_pct',\n",
" 'opp_vs_team_shots_on_target_per90',\n",
" 'opp_vs_team_passes_pct',\n",
" 'opp_vs_team_passes_pct_short',\n",
" 'opp_vs_team_passes_pct_medium',\n",
" 'opp_vs_team_passes_pct_long',\n",
" 'opp_vs_team_sca_per90',\n",
" 'opp_vs_team_gca_per90',\n",
" #'opp_vs_team_dribble_tackles_pct',\n",
" #'opp_vs_team_dribbles_completed_pct',\n",
" 'opp_vs_team_aerials_won_pct',\n",
" \n",
" 'vote_avg',\n",
" 'vote_std']\n",
"\n",
"features_rel_gk = [\n",
" 'gk_shots_on_target_against',\n",
" 'gk_saves',\n",
" 'gk_free_kick_goals_against',\n",
" 'gk_corner_kick_goals_against',\n",
" 'gk_own_goals_against',\n",
" 'gk_psxg',\n",
" 'gk_psnpxg_per_shot_on_target_against',\n",
" 'gk_psxg_net',\n",
" 'gk_passes_completed_launched',\n",
" 'gk_passes_launched',\n",
" 'gk_passes',\n",
" 'gk_passes_throws',\n",
" 'gk_goal_kicks',\n",
" 'gk_crosses',\n",
" 'gk_crosses_stopped',\n",
"]"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "f4017b2f",
"metadata": {},
"outputs": [],
"source": [
"DEL_G = False\n",
"\n",
"features_to_del = [\n",
" 'goals',\n",
" 'assists',\n",
" 'xg',\n",
" 'npxg'\n",
"]\n",
"\n",
"def player_match_data(player, pteam, oppteam, oldseason = False):\n",
" if(not(player in players.index)):\n",
" return None\n",
" \n",
" if(oldseason):\n",
" pdata = players_old.loc[[player]]\n",
" else:\n",
" pdata = players.loc[[player]]\n",
" \n",
" pteam_stats = team_data.loc[[pteam]].rename(index = {pteam : player})\n",
" \n",
" oppteam_stats = team_data.loc[[oppteam]].rename(index = {oppteam : player})\n",
" \n",
" oppteam_stats = oppteam_stats.rename(lambda x: 'opp_' + x, axis='columns')\n",
" \n",
" out = pd.concat([pdata, pteam_stats, oppteam_stats], axis = 1)\n",
" \n",
" return(out)\n",
"\n",
"def player_match_data_ext(player, pteam, oppteam, oldseason = False):\n",
" pdata = player_match_data(player, pteam, oppteam, oldseason = oldseason)\n",
" \n",
" if(not isinstance(pdata, pd.DataFrame)):\n",
" return None\n",
" \n",
" assert pdata['games'][0] > 0\n",
" \n",
" out = pd.concat([pdata[features_abs], pdata[features_rel]], axis = 1)\n",
" \n",
" out[features_rel] = out[features_rel] / max(pdata['minutes'][0], 1)\n",
" \n",
" out[features_rel_gamecorr] = out[features_rel_gamecorr] * (pdata['minutes'][0] / max(pdata['games'][0], 1) / 90)\n",
" \n",
" if(DEL_G):\n",
" out[features_to_del] = 0\n",
" \n",
" return out\n",
"\n",
"def player_match_data_ext_gk(player, pteam, oppteam, oldseason = False):\n",
" pdata = player_match_data(player, pteam, oppteam, oldseason = oldseason)\n",
" \n",
" if(not isinstance(pdata, pd.DataFrame)):\n",
" return None\n",
" \n",
" if(pdata['gk_games'][0] <= 0):\n",
" return None\n",
" \n",
" out = pd.concat([pdata[features_abs_gk], pdata[features_rel_gk]], axis = 1)\n",
" \n",
" out[features_rel_gk] = out[features_rel_gk] / max(pdata['minutes'][0], 1)\n",
"\n",
" return out\n",
" "
]
},
{
"cell_type": "markdown",
"id": "21fef3ae",
"metadata": {},
"source": [
"Players stats rework:\n",
"the current season stats are averaged (according to a calculated weight) with the past season data.\n",
"In case a player doesn't have past season data, a config file (affine_players) can be used to load the data from an affine player (past season), e.g. Doig affine to Lazovic.\n",
"In case, after this process, the player doesn't result in having a minimum amount of games, its stats are averaged with the average Serie A (defensive) player stat, depending on the games remaining to reach the minimum amount. This allows to use players who still haven't played a single game.\n",
"\n",
"These modified stats are used only for prediction, not for model traning.\n",
"\n",
"WEIGHT_0 = weight given to the current season in respect to the previous; if the player has a low amount of games this season, the weight is lowered\n",
"min_games = minimum games so that the players stats are not averaged with the avg Serie A player stats"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "6f8707b8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \n",
"Averaging players stats with past seasons:\n",
"Meret 1\n",
"Provedel 1\n",
"Vicario 1\n",
"Szczesny 1\n",
"Falcone 1\n",
"Silvestri 1\n",
"Rui Patricio 1\n",
"Sepe 1\n",
"Milinkovic-Savic V. 1\n",
"Musso 1\n",
"Maignan 1\n",
"Audero 1\n",
"Montipo' 1\n",
"Skorupski 1\n",
"Consigli 1\n",
"Dragowski 1\n",
"Terracciano 1\n",
"Tatarusanu 1\n",
"Handanovic 0.7727839727839729\n",
"Sportiello 1\n",
"Perin 1\n",
"Zoet 1\n",
"Pegolo 1\n",
"Mirante 0.0\n",
"Ujkani 0.0\n",
"Berisha 0.0\n",
"Marchetti 1\n",
"Padelli 0.0\n",
"Bardi 1\n",
"Cordaz 0.0\n",
"Pinsoglio 0.0\n",
"Fiorillo 0.0\n",
"Cragno 0.0676989676989677\n",
"Sirigu 0.06403956403956404\n",
"Rossi F. 0.0\n",
"Berardi A. 0.0\n",
"Gemello 0.0\n",
"Ravaglia 1\n",
"Boer 0.0\n",
"Adamonis 0.0\n",
"Marfella 0.0\n",
"Zovko 1\n",
"Piana 0.0\n",
"Dimarco 1\n",
"Smalling 1\n",
"Di Lorenzo 1\n",
"Danilo 1\n",
"Hernandez T. 1\n",
"Udogie 0.9871395271395272\n",
"Parisi 1\n",
"Mario Rui 0.7358494446729742\n",
"Romagnoli 1\n",
"Bastoni S. 0.6917662982179112\n",
"Mazzocchi 1\n",
"Tomori 1\n",
"Scalvini 1\n",
"Toloi 1\n",
"Demiral 1\n",
"Maehle 1\n",
"Dumfries 1\n",
"Juan Jesus 0.6807858807858809\n",
"Depaoli 1\n",
"Mancini 1\n",
"Ibanez 1\n",
"Rodrigo Becao 0.885021645021645\n",
"Ebuehi 1\n",
"Gosens 1\n",
"Darmian 1\n",
"Reca 1\n",
"Bremer 0.9693261284170375\n",
"Rrahmani 0.9025570389206753\n",
"Vojvoda 1\n",
"Bastoni 0.9223550642905484\n",
"Milenkovic 0.8409707939119705\n",
"Kalulu 1\n",
"Martinez Quarta 1\n",
"Casale 0.7898212898212899\n",
"Perez N. 1\n",
"Izzo 1\n",
"Luperto 1\n",
"Skriniar 0.7148251748251749\n",
"Rodriguez R. 1\n",
"Marusic 1\n",
"Lazzari 0.9223550642905484\n",
"Kyriakopoulos 0.49023390402700745\n",
"Ampadu 1\n",
"Ismajli 1\n",
"Llorente D. affine to Ibanez\n",
"Llorente D. 0.21024269847799262\n",
"Cambiaso 1\n",
"Hysaj 1\n",
"Biraghi 0.9981792981792983\n",
"Medel 0.9025570389206753\n",
"Bonucci 0.6949689199689202\n",
"Calabria 0.9164425318271473\n",
"Acerbi 1\n",
"Spinazzola 1\n",
"Lykogiannis 0.8462370962370962\n",
"Pellegrini Lu. 0.19745532245532246\n",
"Djidji 1\n",
"Augello 1\n",
"Singo 0.9190609390609392\n",
"Mari' 1\n",
"De Vrij 0.8736752136752136\n",
"Patric 0.8438908313908315\n",
"Faraoni 0.6701486013986016\n",
"Ceccherini 0.7008089949266421\n",
"Hateboer 0.9644466644466645\n",
"Rogerio 1\n",
"Aina 0.9077145077145077\n",
"Ferrari G. 0.9266252266252268\n",
"Fazio 1\n",
"Buongiorno 1\n",
"Gunter 0.23694638694638692\n",
"Troost-Ekong affine to Fazio\n",
"Troost-Ekong 0.44676573426573435\n",
"Soumaoro 0.9786297036297038\n",
"Ceccaroni 0.0676989676989677\n",
"Soppy 0.5500541125541125\n",
"Ferrari A. 0.6696310935441369\n",
"Zappacosta 0.5606471959413136\n",
"Gyomber 0.9607865253026544\n",
"Alex Sandro 0.9786297036297038\n",
"Pezzella Giu. 0.7334054834054832\n",
"Bereszynski 0.5077422577422577\n",
"Venuti 0.6215871085436304\n",
"Palomino 0.5256067461949815\n",
"Nuytinck 0.6581844081844082\n",
"Magnani 1\n",
"Colley 0.5956876456876458\n",
"Nikolaou 1\n",
"Terzic 1\n",
"Igor 0.9133877233877236\n",
"Toljan 1\n",
"Zortea 0.28596977734908763\n",
"Dawidowicz 1\n",
"Bellanova 0.5350402285886157\n",
"Erlic 0.9477855477855477\n",
"Ballo-Toure' affine to Calabria\n",
"Ballo-Toure' 0.2749327595481442\n",
"Stojanovic 0.8303524758070213\n",
"Amian 0.9679924242424244\n",
"Zima 0.5361188811188812\n",
"De Winter 1\n",
"Romagnoli S. 0.31177156177156173\n",
"Ghiglione 1\n",
"Rugani 0.5956876456876459\n",
"De Sciglio 1\n",
"Djimsiti 0.7301977592300174\n",
"Caldara 0.7643431836980223\n",
"Karsdorp 0.4302188552188553\n",
"Marchizza 0.5611888111888111\n",
"Kjaer 1\n",
"Ruggeri 1\n",
"Zanoli 1\n",
"Radovanovic 0.8509823509823511\n",
"D'ambrosio 0.7148251748251749\n",
"De Silvestri 0.4227460711331679\n",
"Chiriches 0.49023390402700745\n",
"Murru 0.8664547573638484\n",
"Bonifazi 0.4332273786819242\n",
"Walukiewicz 1\n",
"Ranieri L. 0.30715272381939046\n",
"Gabbia 1\n",
"Kumbulla 0.49056629644864946\n",
"Lovato 1\n",
"Ferrer 0.17650004316670986\n",
"Vasquez 0.8462370962370962\n",
"Ruan 1\n",
"Ostigard 1\n",
"Coppola D. 1\n",
"Cacace 1\n",
"Conti 0.17019647019647022\n",
"Conti 0.6439363984182801\n",
"Marrone 0.11283161283161282\n",
"Tonelli 0.08509823509823511\n",
"Radu 1\n",
"Florenzi 0.24820318570318575\n",
"Sala 0.3971250971250972\n",
"Fares 0.0\n",
"Fares 0.0\n",
"Romagna 0.0\n",
"Romagna 0.0\n",
"Muldur 0.03843146101210618\n",
"Amey 0.0\n",
"Zaccagni 1\n",
"Milinkovic-Savic 0.9981792981792983\n",
"Barella 1\n",
"Zielinski 1\n",
"Luis Alberto 1\n",
"Felipe Anderson 1\n",
"Koopmeiners 1\n",
"Calhanoglu 1\n",
"Frattesi 1\n",
"Diaz B. 1\n",
"Zambo Anguissa 1\n",
"Elmas 1\n",
"Miranchuk 1\n",
"Samardzic 1\n",
"Pereyra 1\n",
"Politano 0.9025570389206753\n",
"Rabiot 1\n",
"Lazovic 0.9110516934046347\n",
"Lobotka 1\n",
"Bonaventura 1\n",
"Pessina 1\n",
"Tonali 0.9597189847189849\n",
"Pellegrini Lo. 1\n",
"El Shaarawy 1\n",
"Orsolini 1\n",
"Ikone' 1\n",
"Candreva 1\n",
"Bennacer 1\n",
"Pasalic 0.8693819693819695\n",
"Mkhitaryan 1\n",
"Chiesa 1\n",
"Bandinelli 1\n",
"Fagioli affine to Henderson L.\n",
"Fagioli 0.7524475524475526\n",
"Messias 0.9622646584185047\n",
"Arslan 1\n",
"Ricci S. 1\n",
"Verdi 1\n",
"Sensi 1\n",
"Barak 1\n",
"Soriano 0.9190609390609392\n",
"Dominguez 1\n",
"Brozovic 0.7829037629037631\n",
"Cristante 1\n",
"Saponara 1\n",
"Vecino 1\n",
"Locatelli 1\n",
"Zaniolo 0.5531385281385282\n",
"Maldini 1\n",
"Marin 1\n",
"Zalewski 1\n",
"Bajrami 0.44004329004328996\n",
"Coulibaly L. 1\n",
"De Roon 1\n",
"Mandragora 1\n",
"Bourabia 1\n",
"Sottil 0.7446095571095572\n",
"Aebischer 1\n",
"Ederson D.s. 1\n",
"Miretti 1\n",
"Cataldi 1\n",
"Djuricic 1\n",
"Linetty 1\n",
"Haas 1\n",
"Walace 1\n",
"Agudelo 1\n",
"Pobega 0.538514515787243\n",
"Rovella 1\n",
"Amrabat 1\n",
"Tameze 1\n",
"Gyasi 0.9928127428127429\n",
"Ilic 0.3332058566433566\n",
"Matheus Henrique 1\n",
"Harroui 1\n",
"Volpato 1\n",
"Duncan 0.7220456311365403\n",
"Cuadrado 0.9747616020343295\n",
"Ekdal 1\n",
"Schouten 1\n",
"Obiang 1\n",
"Kovalenko 0.7331540254617178\n",
"Crnigoj 0.243915398327163\n",
"Basic 0.8627200385821077\n",
"Asllani 0.875671430019256\n",
"Sabiri 1\n",
"Grassi 0.7898212898212897\n",
"Krunic 0.8084332334332336\n",
"Rincon 1\n",
"Miguel Veloso 1\n",
"Henderson L. 0.6270396270396271\n",
"Lopez M. 0.850982350982351\n",
"Cuisance 1\n",
"Saelemaekers 0.8273439523439524\n",
"Maggiore 0.47389277389277384\n",
"Akpa Akpro 0.0\n",
"Akpa Akpro 0.0\n",
"Maleh 0.6346778221778221\n",
"Romero L. 0.8935314685314687\n",
"Ceide 1\n",
"Benassi 1\n",
"Gagliardini 0.9928127428127429\n",
"Vieira 0.08462370962370963\n",
"Bianco 1\n",
"Galdames 0.0\n",
"Kastanos 1\n",
"Vignato 0.19745532245532246\n",
"Askildsen 1\n",
"Bove 1\n",
"Bohinen 1\n",
"Bakayoko 0.2552947052947053\n",
"Zurkowski 0.2030969030969031\n",
"Castrovilli 0.6215871085436304\n",
"Demme 0.31351981351981356\n",
"Darboe 0.0\n",
"Darboe 0.23827505827505832\n",
"Urbanski 0.0\n",
"Yepes 1\n",
"Osimhen 1\n",
"Martinez L. 1\n",
"Dybala 0.9396149827184309\n",
"Rafael Leao 1\n",
"Immobile 0.9992179863147606\n",
"Vlahovic 1\n",
"Arnautovic 0.5776365049092322\n",
"Dzeko 1\n",
"Nzola 1\n",
"Beto 1\n",
"Giroud 1\n",
"Abraham 1\n",
"Deulofeu 0.5606471959413136\n",
"Simeone 0.6769896769896769\n",
"Lozano 1\n",
"Correa 1\n",
"Berardi 0.7581479126933673\n",
"Pedro 1\n",
"Sanabria 1\n",
"Thauvin affine to Deulofeu\n",
"Thauvin 0.42048539695598525\n",
"Cabral 1\n",
"Caprari 1\n",
"Piatek 1\n",
"Rebic 1\n",
"Bonazzoli 0.8935314685314687\n",
"Zapata D. 1\n",
"Gonzalez N. 0.7581479126933673\n",
"Brekalo 0.14809149184149184\n",
"Kean 0.8935314685314687\n",
"Okereke 1\n",
"Muriel 1\n",
"Pinamonti 0.9214581714581714\n",
"Di Francesco F. 1\n",
"Caputo 0.5923659673659674\n",
"Boga 1\n",
"Alvarez A. affine to Raspadori\n",
"Alvarez A. 0.6949689199689201\n",
"Petagna 1\n",
"Barrow 0.9460921431509668\n",
"Djuric 1\n",
"Henry 0.5744154835063926\n",
"Success 1\n",
"Gabbiadini 1\n",
"Kallon 1\n",
"Nestorovski 1\n",
"Raspadori 0.6581844081844082\n",
"Lasagna 1\n",
"Belotti 1\n",
"Pellegri 1\n",
"Verde 0.7942501942501942\n",
"Destro 0.5704264870931537\n",
"Seck 1\n",
"Sansone 0.6618751618751619\n",
"Quagliarella 0.6498410680228862\n",
"Defrel 0.6897435897435897\n",
"Pjaca 0.6910936285936286\n",
"Piccoli 1\n",
"Shomurodov 0.5077422577422578\n",
"Afena-Gyan 1\n",
"Ibrahimovic 0.20719570284787678\n",
"Pussetto 0.21155927405927405\n",
"Cancellieri 1\n",
"Oddei 0.0\n",
"Oddei 0.47655011655011664\n",
"Braaf 1\n",
"Raimondo 1\n",
"Kaio Jorge 0.0\n",
"Players with low quantity of games:\n",
"Aiwu 0.0\n",
"Zeefuik 0.16666666666666663\n",
"Dermaku 0.16666666666666663\n",
"Ostigard 0.8333333333333334\n",
"Gila 0.6666666666666667\n",
"Bayeye 0.16666666666666663\n",
"Moutinho J. 0.6666666666666667\n",
"Paletta 0.0\n",
"Romagna 0.0\n",
"Cassandro 0.16666666666666663\n",
"Amey 0.16666666666666663\n",
"Zanotti 0.33333333333333337\n",
"Buta 0.0\n",
"Abankwah 0.16666666666666663\n",
"Guessand A. 0.0\n",
"Guarino 0.0\n",
"Carboni F. 0.33333333333333337\n",
"Pogba 0.6666666666666667\n",
"Machin 0.0\n",
"Akpa Akpro 0.0\n",
"Bianco 0.8333333333333334\n",
"Galdames 0.0\n",
"D'andrea 0.8333333333333334\n",
"Gaetano 0.8333333333333334\n",
"Darboe 0.6744832944832944\n",
"Urbanski 0.16666666666666663\n",
"Bertini 0.0\n",
"Yepes 0.8333333333333334\n",
"Pyyhtia 0.8333333333333334\n",
"Trimboli 0.0\n",
"Adli 0.8333333333333334\n",
"Vignato S. 0.5\n",
"Samek 0.0\n",
"Ilkhan 0.6666666666666667\n",
"Degli Innocenti 0.0\n",
"Acella 0.16666666666666663\n",
"Carboni V. 0.8333333333333334\n",
"Malagrida 0.8333333333333334\n",
"Faticanti 0.0\n",
"Oddei 0.5950582750582749\n",
"Braaf 0.8333333333333334\n",
"Raimondo 0.33333333333333337\n",
"De Luca 0.33333333333333337\n",
"Krollis 0.5\n",
"Vivaldo 0.0\n"
]
}
],
"source": [
"#for i in range(players.columns.shape[0]):\n",
"# print(str(i) + ' - ' + players.columns[i])\n",
"\n",
"cols_toadapt = players.columns[9:]\n",
"\n",
"players = players_orig.copy()\n",
"\n",
"min_games = 6\n",
"\n",
"current_season_games = max(players_orig['games'])\n",
"\n",
"# weight_0 as function of current_season_games --> 1 as match day reachs 30 ? \n",
"WEIGHT_0_same_team = (1 - (1 - 0.7) * (30 - current_season_games) / (38 - 12)) # 0.7\n",
"WEIGHT_0_different_team = (1 - (1 - 0.75) * (30 - current_season_games) / (38 - 12)) # 0.75\n",
"WEIGHT_mul_gk = 2\n",
"\n",
"rcsv = pd.read_csv('config/affine_players.txt') \n",
"affine_players = pd.DataFrame(rcsv)\n",
"affine_players = affine_players.set_index('player')\n",
"\n",
"\n",
"def calc_weight(games_curr, games_old, same_team = 1, maxgames = current_season_games):\n",
" if(same_team):\n",
" weight_0 = WEIGHT_0_same_team\n",
" else:\n",
" weight_0 = WEIGHT_0_different_team\n",
"\n",
" weight = weight_0 * (games_curr / maxgames) / (max(games_old, 1) / 38)\n",
" weight = min(weight, 1)\n",
"\n",
" return abs(weight)\n",
"\n",
"print(' ')\n",
"print('Averaging players stats with past seasons:')\n",
"\n",
"for i in range(players.shape[0]):\n",
" p = players.index[i]\n",
" \n",
"\n",
" if(p in players_old.index or p in affine_players.index):\n",
" p_ = p\n",
" affine = 0\n",
" \n",
" if(p in affine_players.index):\n",
" affine = 1\n",
" p_ = affine_players.loc[p]['alike']\n",
" \n",
" print(p + ' affine to ' + p_)\n",
" \n",
" if(players.loc[p]['r'] == 'P'):\n",
" weight = calc_weight(players.loc[p]['gk_games'], players_old.loc[p_]['gk_games'], affine == 1 or players.loc[p]['team'] == players_old.loc[p]['team'])\n",
" weight *= WEIGHT_mul_gk\n",
" weight = min(weight, 1)\n",
" else:\n",
" weight = calc_weight(players.loc[p]['games'], players_old.loc[p_]['games'], affine == 1 or players.loc[p]['team'] == players_old.loc[p]['team'])\n",
"\n",
" players.at[p, cols_toadapt] = (players.loc[p][cols_toadapt] * weight + (1-weight) * players_old.loc[p_][cols_toadapt])\n",
" \n",
" print(p + ' ' + str(weight)) \n",
" \n",
" # to handle players like Lukaku, who only played 2 seasons ago; only outfield players\n",
" if(players.loc[p]['r'] != 'P' and players.loc[p]['games'] < min_games and p in players_old_2.index): \n",
" weight = calc_weight(players.loc[p]['games'], players_old_2.loc[p]['games'], players.loc[p]['team'] == players_old_2.loc[p]['team'])\n",
" \n",
" players.at[p, cols_toadapt] = (players.loc[p][cols_toadapt] * weight + (1-weight) * players_old_2.loc[p][cols_toadapt])\n",
" \n",
" print(p + ' ' + str(weight))\n",
" \n",
" \n",
"# handle players with low quantitites of games\n",
"\n",
"print('Players with low quantity of games:')\n",
"\n",
"def calc_weight_low(current_games, min_games = min_games):\n",
" weight = 1 - (min_games - current_games)/min_games\n",
" \n",
" weight = min(weight, 1)\n",
"\n",
" return abs(weight)\n",
"\n",
"#mean_players_stats = players_orig[players_orig['games'] >= min_games][cols_toadapt].mean()\n",
"\n",
"mean_players_stats = players_orig.loc[players_orig.index[0]][cols_toadapt] * 0\n",
"count = 0\n",
"\n",
"for i in range(players_orig.shape[0]):\n",
" if(players_orig['games'][i] >= min_games and (players_orig['r'][i] == 'D')): # counting only defenders, to add a penalty\n",
" mean_players_stats += players_orig.loc[players_orig.index[i]][cols_toadapt]\n",
" count = count + 1\n",
" \n",
"mean_players_stats /= count\n",
"\n",
"for i in range(players.shape[0]):\n",
" p = players.index[i]\n",
" \n",
" if(players.loc[p]['games'] < min_games and players.loc[p]['r'] != 'P'):\n",
" weight = calc_weight_low(players.loc[p]['games'])\n",
" \n",
" players.at[p, cols_toadapt] = players.loc[p][cols_toadapt] * weight + (1-weight) * mean_players_stats\n",
" \n",
" print(p + ' ' + str(weight))\n",
" \n",
" \n",
"players_out = players.copy()\n",
"players_out = players_out.set_index(players_out.columns[0])\n",
"players_out.insert(2, 'name', players_out.index)\n",
"players_out.to_excel('mid_outputs/players_stats_rwk.xlsx')\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "49c28b07",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['games', 'games_starts', 'minutes', 'goals', 'assists', 'pens_made',\n",
" 'pens_att', 'cards_yellow', 'cards_red', 'goals_per90',\n",
" ...\n",
" 'gk_pct_goal_kicks_launched', 'gk_goal_kick_length_avg', 'gk_crosses',\n",
" 'gk_crosses_stopped', 'gk_crosses_stopped_pct',\n",
" 'gk_def_actions_outside_pen_area',\n",
" 'gk_def_actions_outside_pen_area_per90', 'gk_avg_distance_def_actions',\n",
" 'vote_avg', 'vote_std'],\n",
" dtype='object', length=151)"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"players.columns[9:]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "d29102e5",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 - matchday\n",
"1 - player\n",
"2 - team\n",
"3 - oppteam\n",
"4 - home\n",
"5 - vote\n",
"6 - goals\n",
"7 - assists\n",
"8 - cards_malus\n",
"9 - fantavote\n",
"10 - r\n",
"11 - games\n",
"12 - games_starts\n",
"13 - minutes\n",
"14 - shots_on_target_pct\n",
"15 - goals_per_shot\n",
"16 - goals_per_shot_on_target\n",
"17 - passes_pct\n",
"18 - aerials_won_pct\n",
"19 - team_possession\n",
"20 - team_goals_assists_per90\n",
"21 - team_goals_pens_per90\n",
"22 - team_goals_assists_pens_per90\n",
"23 - team_xg_per90\n",
"24 - team_gk_goals_against_per90\n",
"25 - team_gk_save_pct\n",
"26 - team_gk_clean_sheets_pct\n",
"27 - team_passes_pct\n",
"28 - team_passes_pct_medium\n",
"29 - team_passes_pct_long\n",
"30 - team_sca_per90\n",
"31 - team_gca_per90\n",
"32 - team_aerials_won_pct\n",
"33 - vs_team_possession\n",
"34 - vs_team_goals_per90\n",
"35 - vs_team_assists_per90\n",
"36 - vs_team_xg_per90\n",
"37 - vs_team_gk_save_pct\n",
"38 - vs_team_gk_clean_sheets_pct\n",
"39 - vs_team_gk_pct_passes_launched\n",
"40 - vs_team_gk_crosses_stopped_pct\n",
"41 - vs_team_shots_on_target_per90\n",
"42 - vs_team_passes_pct\n",
"43 - vs_team_passes_pct_short\n",
"44 - vs_team_passes_pct_medium\n",
"45 - vs_team_passes_pct_long\n",
"46 - vs_team_sca_per90\n",
"47 - vs_team_gca_per90\n",
"48 - vs_team_aerials_won_pct\n",
"49 - opp_team_possession\n",
"50 - opp_team_goals_assists_per90\n",
"51 - opp_team_goals_pens_per90\n",
"52 - opp_team_goals_assists_pens_per90\n",
"53 - opp_team_xg_per90\n",
"54 - opp_team_gk_goals_against_per90\n",
"55 - opp_team_gk_save_pct\n",
"56 - opp_team_gk_clean_sheets_pct\n",
"57 - opp_team_passes_pct\n",
"58 - opp_team_passes_pct_medium\n",
"59 - opp_team_passes_pct_long\n",
"60 - opp_team_sca_per90\n",
"61 - opp_team_gca_per90\n",
"62 - opp_team_aerials_won_pct\n",
"63 - opp_vs_team_possession\n",
"64 - opp_vs_team_goals_per90\n",
"65 - opp_vs_team_assists_per90\n",
"66 - opp_vs_team_xg_per90\n",
"67 - opp_vs_team_gk_save_pct\n",
"68 - opp_vs_team_gk_clean_sheets_pct\n",
"69 - opp_vs_team_gk_pct_passes_launched\n",
"70 - opp_vs_team_gk_crosses_stopped_pct\n",
"71 - opp_vs_team_shots_on_target_per90\n",
"72 - opp_vs_team_passes_pct\n",
"73 - opp_vs_team_passes_pct_short\n",
"74 - opp_vs_team_passes_pct_medium\n",
"75 - opp_vs_team_passes_pct_long\n",
"76 - opp_vs_team_sca_per90\n",
"77 - opp_vs_team_gca_per90\n",
"78 - opp_vs_team_aerials_won_pct\n",
"79 - vote_avg\n",
"80 - vote_std\n",
"81 - goals.1\n",
"82 - assists.1\n",
"83 - cards_yellow\n",
"84 - cards_red\n",
"85 - xg\n",
"86 - npxg\n",
"87 - shots_on_target\n",
"88 - passes_completed\n",
"89 - passes_into_final_third\n",
"90 - passes_into_penalty_area\n",
"91 - progressive_passes\n",
"92 - passes_live\n",
"93 - passes_dead\n",
"94 - through_balls\n",
"95 - passes_switches\n",
"96 - crosses\n",
"97 - corner_kicks\n",
"98 - blocks\n",
"99 - blocked_shots\n",
"100 - blocked_passes\n",
"101 - interceptions\n",
"102 - clearances\n",
"103 - errors\n",
"104 - touches\n",
"105 - touches_def_pen_area\n",
"106 - touches_def_3rd\n",
"107 - touches_mid_3rd\n",
"108 - touches_att_3rd\n",
"109 - touches_att_pen_area\n",
"110 - touches_live_ball\n",
"111 - passes_received\n",
"112 - miscontrols\n",
"113 - dispossessed\n",
"114 - fouls\n",
"115 - fouled\n",
"116 - aerials_won\n",
"117 - aerials_lost\n",
"118 - carries\n",
"119 - progressive_carries\n",
"120 - carries_into_final_third\n",
"121 - carries_into_penalty_area\n"
]
}
],
"source": [
"for i in range(db.columns.shape[0]):\n",
" print(str(i) + \" - \" + str(db.columns[i]))"
]
},
{
"cell_type": "markdown",
"id": "089690d6",
"metadata": {},
"source": [
"Elaborate databases data to have X and y for training, and split into a train test and a validation test.\n",
"\n",
"For outfield players: X -> y = [vote, fantavote]\n",
"\n",
"For goalkeepers: X -> y = [vote, fantavote, clean sheet probability]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f19304f6",
"metadata": {},
"outputs": [],
"source": [
"npdb = np.array(db)\n",
"\n",
"y = npdb[:, [5,9]] # vote, fantavote\n",
"\n",
"#y[:, 1] = y[:, 1] - y[:, 0] # target = difference between fantavote and vote\n",
"\n",
"f_start = 14\n",
"\n",
"X = npdb[:, f_start:]\n",
"\n",
"if(DEL_G): \n",
" del_g_idx = [\n",
" list(db.columns).index('goals.1') - f_start,\n",
" list(db.columns).index('assists.1') - f_start,\n",
" list(db.columns).index('xg') - f_start,\n",
" list(db.columns).index('npxg') - f_start,\n",
" list(db.columns).index('shots_on_target') - f_start]\n",
" \n",
" X[:, del_g_idx] = 0\n",
"\n",
"\n",
"# add role and home factor\n",
"toadd = np.zeros((X.shape[0], 4))\n",
"toadd[:, 0] = npdb[:, 4] # home\n",
"\n",
"toadd[:, 1] = npdb[:, 10] == 'D'\n",
"toadd[:, 2] = npdb[:, 10] == 'C'\n",
"toadd[:, 3] = npdb[:, 10] == 'A'\n",
"\n",
"X = np.concatenate((X, toadd), axis = 1)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "370d41d2",
"metadata": {},
"outputs": [],
"source": [
"scaler = StandardScaler()\n",
"scaler.fit(X)\n",
"\n",
"X_train_, X_test_, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 12)\n",
"\n",
"X_train = scaler.transform(X_train_)\n",
"X_test = scaler.transform(X_test_)"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "a7b1fb52",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 - matchday\n",
"1 - player\n",
"2 - team\n",
"3 - oppteam\n",
"4 - home\n",
"5 - vote\n",
"6 - goals\n",
"7 - assists\n",
"8 - cards_malus\n",
"9 - fantavote\n",
"10 - gk_games\n",
"11 - gk_games_starts\n",
"12 - gk_minutes\n",
"13 - gk_goals_against_per90\n",
"14 - gk_save_pct\n",
"15 - gk_clean_sheets_pct\n",
"16 - gk_psxg_net_per90\n",
"17 - gk_passes_pct_launched\n",
"18 - gk_pct_passes_launched\n",
"19 - gk_passes_length_avg\n",
"20 - gk_pct_goal_kicks_launched\n",
"21 - gk_goal_kick_length_avg\n",
"22 - gk_crosses_stopped_pct\n",
"23 - gk_def_actions_outside_pen_area_per90\n",
"24 - gk_avg_distance_def_actions\n",
"25 - team_possession\n",
"26 - team_goals_assists_per90\n",
"27 - team_goals_pens_per90\n",
"28 - team_goals_assists_pens_per90\n",
"29 - team_xg_per90\n",
"30 - team_gk_goals_against_per90\n",
"31 - team_gk_save_pct\n",
"32 - team_gk_clean_sheets_pct\n",
"33 - team_passes_pct\n",
"34 - team_passes_pct_medium\n",
"35 - team_passes_pct_long\n",
"36 - team_sca_per90\n",
"37 - team_gca_per90\n",
"38 - team_aerials_won_pct\n",
"39 - vs_team_possession\n",
"40 - vs_team_goals_per90\n",
"41 - vs_team_assists_per90\n",
"42 - vs_team_xg_per90\n",
"43 - vs_team_gk_save_pct\n",
"44 - vs_team_gk_clean_sheets_pct\n",
"45 - vs_team_gk_pct_passes_launched\n",
"46 - vs_team_gk_crosses_stopped_pct\n",
"47 - vs_team_shots_on_target_per90\n",
"48 - vs_team_passes_pct\n",
"49 - vs_team_passes_pct_short\n",
"50 - vs_team_passes_pct_medium\n",
"51 - vs_team_passes_pct_long\n",
"52 - vs_team_sca_per90\n",
"53 - vs_team_gca_per90\n",
"54 - vs_team_aerials_won_pct\n",
"55 - opp_team_possession\n",
"56 - opp_team_goals_assists_per90\n",
"57 - opp_team_goals_pens_per90\n",
"58 - opp_team_goals_assists_pens_per90\n",
"59 - opp_team_xg_per90\n",
"60 - opp_team_gk_goals_against_per90\n",
"61 - opp_team_gk_save_pct\n",
"62 - opp_team_gk_clean_sheets_pct\n",
"63 - opp_team_passes_pct\n",
"64 - opp_team_passes_pct_medium\n",
"65 - opp_team_passes_pct_long\n",
"66 - opp_team_sca_per90\n",
"67 - opp_team_gca_per90\n",
"68 - opp_team_aerials_won_pct\n",
"69 - opp_vs_team_possession\n",
"70 - opp_vs_team_goals_per90\n",
"71 - opp_vs_team_assists_per90\n",
"72 - opp_vs_team_xg_per90\n",
"73 - opp_vs_team_gk_save_pct\n",
"74 - opp_vs_team_gk_clean_sheets_pct\n",
"75 - opp_vs_team_gk_pct_passes_launched\n",
"76 - opp_vs_team_gk_crosses_stopped_pct\n",
"77 - opp_vs_team_shots_on_target_per90\n",
"78 - opp_vs_team_passes_pct\n",
"79 - opp_vs_team_passes_pct_short\n",
"80 - opp_vs_team_passes_pct_medium\n",
"81 - opp_vs_team_passes_pct_long\n",
"82 - opp_vs_team_sca_per90\n",
"83 - opp_vs_team_gca_per90\n",
"84 - opp_vs_team_aerials_won_pct\n",
"85 - vote_avg\n",
"86 - vote_std\n",
"87 - gk_shots_on_target_against\n",
"88 - gk_saves\n",
"89 - gk_free_kick_goals_against\n",
"90 - gk_corner_kick_goals_against\n",
"91 - gk_own_goals_against\n",
"92 - gk_psxg\n",
"93 - gk_psnpxg_per_shot_on_target_against\n",
"94 - gk_psxg_net\n",
"95 - gk_passes_completed_launched\n",
"96 - gk_passes_launched\n",
"97 - gk_passes\n",
"98 - gk_passes_throws\n",
"99 - gk_goal_kicks\n",
"100 - gk_crosses\n",
"101 - gk_crosses_stopped\n"
]
}
],
"source": [
"for i in range(db_gk.columns.shape[0]):\n",
" print(str(i) + \" - \" + str(db_gk.columns[i]))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "5a7cf079",
"metadata": {},
"outputs": [],
"source": [
"npdb_gk= np.array(db_gk)\n",
"\n",
"y_gk = npdb_gk[:, [5,9,6]] # vote, fantavote, goals == 0 (clean sheet)\n",
"y_gk[:, 2] = (y_gk[:, 2] == 0) * 1\n",
"\n",
"f_start_gk = 13\n",
"\n",
"X_gk = npdb_gk[:, f_start_gk:]\n",
"\n",
"# add home factor\n",
"toadd_gk = np.zeros((X_gk.shape[0], 1))\n",
"toadd_gk[:, 0] = npdb_gk[:, 4] # home\n",
"\n",
"X_gk = np.concatenate((X_gk, toadd_gk), axis = 1)\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "0bc0568b",
"metadata": {},
"outputs": [],
"source": [
"scaler_gk = StandardScaler()\n",
"scaler_gk.fit(X_gk)\n",
"\n",
"X_gk_train_, X_gk_test_, y_gk_train, y_gk_test = train_test_split(X_gk, y_gk, test_size = 0.2, random_state = 18)\n",
"\n",
"X_gk_train = scaler_gk.transform(X_gk_train_)\n",
"X_gk_test = scaler_gk.transform(X_gk_test_)"
]
},
{
"cell_type": "markdown",
"id": "ebd27493",
"metadata": {},
"source": [
"MLP Regressor , to see performance of a simple neural network"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "04564bee",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1569906306642661\n",
"0.19152381866355805\n"
]
},
{
"data": {
"image/png": "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as6cOSgpKZF+zpw5c40tttfC3xfvTe6DSf3bY+kjQxAb1qLe74OIiIhqV+/TmsPDw+Hj42PXm5Kfn2/Xi2IVFRXlcHtfX1+0aeO4YqzBYIDBYKifRjtxc5e2uLlLW7ffDxEREamr9x4Wf39/JCUlYf369YrL169fjyFDhji8zeDBg+22T09PR//+/eHn51ffTSQiIqJGxi1DQrNnz8b//u//4v/+7/9w5MgRPP3008jJycHMmTMBiMM59913n7T9zJkzcfr0acyePRtHjhzB//3f/+HTTz/FM888447mERERUSPjlkq3kydPRmFhIf7xj38gNzcXPXv2xOrVqxEfHw8AyM3NVdRkSUhIwOrVq/H000/j448/RkxMDD788EPcdddd7mgeERERNTJuqcPiCe6sw0JERETu4bE6LERERET1jQELEREReT0GLEREROT1GLAQERGR12PAQkRERF6PAQsRERF5PQYsRERE5PUYsBAREZHXY8BCREREXs8tpfk9wVqw12g0erglREREpJX1uF1b4f0mE7BcvnwZABAbG+vhlhAREZGrLl++jNDQUNXrm8xaQmazGefPn0dwcDB0Ol297ddoNCI2NhZnzpzhGkWNAF+vxoOvVePB16pxaWyvlyAIuHz5MmJiYqDXq2eqNJkeFr1ej/bt27tt/yEhIY3ihScRX6/Gg69V48HXqnFpTK+Xs54VKybdEhERkddjwEJERERejwFLLQwGA1555RUYDAZPN4U04OvVePC1ajz4WjUuTfX1ajJJt0RERNR0sYeFiIiIvB4DFiIiIvJ6DFiIiIjI6zFgISIiIq/HgKUWCxYsQEJCAgICApCUlISff/7Z000iG6+++ip0Op3iJyoqytPNIott27Zh/PjxiImJgU6nw7JlyxTXC4KAV199FTExMQgMDMQtt9yCQ4cOeaaxzVxtr9WMGTPsPmuDBg3yTGObuXnz5mHAgAEIDg5GREQEJk6ciMzMTMU2Te2zxYDFiW+//RZPPfUUXnzxRezbtw8333wzUlJSkJOT4+mmkY0ePXogNzdX+jl48KCnm0QWZWVl6N27N+bPn+/w+rfffhv//ve/MX/+fOzatQtRUVEYPXq0tD4YNZzaXisAGDt2rOKztnr16gZsIVlt3boVjz32GHbu3In169ejuroaY8aMQVlZmbRNk/tsCaTqhhtuEGbOnKm4rFu3bsLzzz/voRaRI6+88orQu3dvTzeDNAAgpKWlSf+bzWYhKipKePPNN6XLysvLhdDQUGHRokUeaCFZ2b5WgiAI999/vzBhwgSPtIecy8/PFwAIW7duFQShaX622MOiorKyEnv27MGYMWMUl48ZMwa//vqrh1pFao4dO4aYmBgkJCTgnnvuwcmTJz3dJNIgOzsbeXl5is+ZwWDAsGHD+DnzUlu2bEFERAQSExPx4IMPIj8/39NNIgAlJSUAgLCwMABN87PFgEVFQUEBTCYTIiMjFZdHRkYiLy/PQ60iRwYOHIgvv/wS69atw3//+1/k5eVhyJAhKCws9HTTqBbWzxI/Z41DSkoKFi9ejE2bNuHdd9/Frl27MGLECFRUVHi6ac2aIAiYPXs2brrpJvTs2RNA0/xsNZnVmt1Fp9Mp/hcEwe4y8qyUlBTp7169emHw4MHo1KkTvvjiC8yePduDLSOt+DlrHCZPniz93bNnT/Tv3x/x8fFYtWoV7rzzTg+2rHl7/PHHceDAAWzfvt3uuqb02WIPi4rw8HD4+PjYRaL5+fl2ESt5l6CgIPTq1QvHjh3zdFOoFtbZXPycNU7R0dGIj4/nZ82DZs2ahRUrVmDz5s1o3769dHlT/GwxYFHh7++PpKQkrF+/XnH5+vXrMWTIEA+1irSoqKjAkSNHEB0d7emmUC0SEhIQFRWl+JxVVlZi69at/Jw1AoWFhThz5gw/ax4gCAIef/xx/Pjjj9i0aRMSEhIU1zfFzxaHhJyYPXs2pk+fjv79+2Pw4MH45JNPkJOTg5kzZ3q6aSTzzDPPYPz48YiLi0N+fj7eeOMNGI1G3H///Z5uGgEoLS3F8ePHpf+zs7ORkZGBsLAwxMXF4amnnsLcuXPRpUsXdOnSBXPnzkWLFi0wZcoUD7a6eXL2WoWFheHVV1/FXXfdhejoaJw6dQovvPACwsPDcccdd3iw1c3TY489hq+//hrLly9HcHCw1JMSGhqKwMBA6HS6pvfZ8ugcpUbg448/FuLj4wV/f3+hX79+0pQx8h6TJ08WoqOjBT8/PyEmJka48847hUOHDnm6WWSxefNmAYDdz/333y8Igjj98pVXXhGioqIEg8EgDB06VDh48KBnG91MOXutrly5IowZM0Zo27at4OfnJ8TFxQn333+/kJOT4+lmN0uOXicAwmeffSZt09Q+WzpBEISGD5OIiIiItGMOCxEREXk9BixERETk9RiwEBERkddjwEJERERejwELEREReT0GLEREROT1GLAQERGR12PAQkRERF6PAQsRERF5PQYsRERE5PUYsBAREZHXY8BCREREXu//AXrvaKbgwO1mAAAAAElFTkSuQmCC",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1532751047011487\n",
"0.17630547391900842\n"
]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"regr = MLPRegressor(max_iter = 400000, solver = 'lbfgs', hidden_layer_sizes = (8, 8), alpha = 500, verbose = True)\n",
"\n",
"regr.fit(X_train, y_train)\n",
"\n",
"\n",
"y_train_predict = regr.predict(X_train)\n",
"\n",
"plt.plot([0, 20], [0, 20])\n",
"\n",
"plt.scatter(y_train[:, 0], y_train_predict[:, 0], color = 'orange', edgecolors = 'black', s = 20)\n",
"plt.scatter(y_train[:, 1], y_train_predict[:, 1], color = 'green', edgecolors = 'black', s = 20)\n",
"\n",
"print(r2_score(y_train[:, 0], y_train_predict[:, 0]))\n",
"print(r2_score(y_train[:, 1], y_train_predict[:, 1]))\n",
"\n",
"\n",
"plt.show()\n",
"\n",
"y_test_predict = regr.predict(X_test)\n",
"\n",
"plt.plot([0, 20], [0, 20])\n",
"\n",
"plt.scatter(y_test[:, 0], y_test_predict[:, 0], color = 'orange', edgecolors = 'black', s = 20)\n",
"plt.scatter(y_test[:, 1], y_test_predict[:, 1], color = 'green', edgecolors = 'black', s = 20)\n",
"\n",
"print(r2_score(y_test[:, 0], y_test_predict[:, 0]))\n",
"print(r2_score(y_test[:, 1], y_test_predict[:, 1]))\n",
"\n",
"\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"id": "f9513b25",
"metadata": {},
"source": [
"Train neural network for outfield players.\n",
"\n",
"The outputs of the NN are probability distribution of SinhArcsinh type (a skewed distribution, which is a generalization of Gaussian)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "8aad9652",
"metadata": {},
"outputs": [],
"source": [
"load_model_of = True# load scaler and model weights for outfield player predictor\n",
"refit_model_of = False\n",
"\n",
"if(load_model_of):\n",
" scaler = pickle.load(open('saves/scaler.pkl', 'rb'))\n",
" \n",
" X_train = scaler.transform(X_train_)\n",
" X_test = scaler.transform(X_test_)\n",
"\n",
"\n",
"n_epochs = 1000\n",
"\n",
"n_samples = X_train.shape[0]\n",
"\n",
"batch_size = 256\n",
"\n",
"X_len = X_train.shape[1]\n",
"y_len = y_train.shape[1]\n",
"\n",
"\n",
"#tailweight_param = 1.1\n",
"\n",
"tailweight_min = 0.5\n",
"tailweight_range = 1.2\n",
"\n",
"\n",
"callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience = 10)\n",
"neg_log_likelihood = lambda x, rv_x: -rv_x.log_prob(x)\n",
"\n",
"\n",
"inputs = tfk.layers.Input(shape=(X_len,), name=\"input\")\n",
"x = tfk.layers.Dropout(0.2)(inputs)\n",
"x = tfk.layers.Dense(16, activation=\"relu\") (x)\n",
"x = tfk.layers.Dropout(0.2)(x)\n",
"x = tfk.layers.Dense(16, activation=\"relu\") (x)\n",
"\n",
"\n",
"prob_dist_params = 4\n",
"\n",
"def prob_dist(t): \n",
" return tfp.distributions.SinhArcsinh(loc=t[..., 0], scale=1e-3 + tf.math.softplus(t[..., 1]), skewness = t[..., 2], \n",
" tailweight = tailweight_min + tailweight_range * tf.math.sigmoid(t[..., 3]),\n",
" allow_nan_stats = False)\n",
"\n",
"x1 = tfk.layers.Dense(8, activation=\"sigmoid\")(x)\n",
"x1 = tfk.layers.Dense(prob_dist_params, activation=\"linear\")(x1)\n",
"out_1 = tfp.layers.DistributionLambda(prob_dist)(x1)\n",
"\n",
"x2 = tfk.layers.Dense(8, activation=\"sigmoid\")(x)\n",
"x2 = tfk.layers.Dense(prob_dist_params, activation=\"linear\")(x2)\n",
"out_2 = tfp.layers.DistributionLambda(prob_dist)(x2)\n",
"\n",
"\n",
"modelb = tf.keras.Model(inputs, [out_1, out_2])\n",
"\n",
"modelb.compile(optimizer=tf.keras.optimizers.Nadam(learning_rate = 0.001), \n",
" loss=neg_log_likelihood)\n",
"\n",
"if(load_model_of):\n",
" modelb.load_weights('saves/modelb')\n",
" \n",
"if( (not load_model_of) or refit_model_of):\n",
" modelb.fit(X_train.astype('float32'), [y_train[:, 0].astype('float32'), y_train[:, 1].astype('float32')], \n",
" validation_data = (X_test.astype('float32'), [y_test[:, 0].astype('float32'), y_test[:, 1].astype('float32')]),\n",
" batch_size = batch_size, shuffle = True, epochs=n_epochs, verbose=True, callbacks = [callback])"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "4e2bf9dc",
"metadata": {},
"outputs": [],
"source": [
"def sample_predict(X, iterations = 100):\n",
" y = np.zeros((2, X.shape[0]))\n",
" \n",
" dist = modelb(X)\n",
" \n",
" for i in range(iterations):\n",
" y[0, :] += dist[0].sample()\n",
" y[1, :] += dist[1].sample()\n",
" \n",
" return y.transpose() / iterations\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 38,
"id": "c2674211",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.13385223635677934\n",
"0.1536831746216616\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.127508905428527\n",
"0.147998716039207\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y_train_predict = sample_predict(X_train)\n",
"\n",
"plt.plot([0, 20], [0, 20])\n",
"\n",
"plt.scatter(y_train[:, 0], y_train_predict[:, 0], color = 'orange', edgecolors = 'black', s = 20)\n",
"plt.scatter(y_train[:, 1], y_train_predict[:, 1], color = 'green', edgecolors = 'black', s = 20)\n",
"\n",
"print(r2_score(y_train[:, 0], y_train_predict[:, 0]))\n",
"print(r2_score(y_train[:, 1], y_train_predict[:, 1]))\n",
"\n",
"plt.show()\n",
"\n",
"y_test_predict = sample_predict(X_test)\n",
"\n",
"plt.plot([0, 20], [0, 20])\n",
"\n",
"plt.scatter(y_test[:, 0], y_test_predict[:, 0], color = 'orange', edgecolors = 'black', s = 20)\n",
"plt.scatter(y_test[:, 1], y_test_predict[:, 1], color = 'green', edgecolors = 'black', s = 20)\n",
"\n",
"print(r2_score(y_test[:, 0], y_test_predict[:, 0]))\n",
"print(r2_score(y_test[:, 1], y_test_predict[:, 1]))\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "f574ffdb",
"metadata": {},
"source": [
"Train neural network for goalkeepers.\n",
"\n",
"For clean sheet probability prediction, a Bernoulli distribution is used."
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "41e7e1ee",
"metadata": {},
"outputs": [],
"source": [
"load_model_gk = True# load scaler and model weights for goalkeeper player predictor\n",
"refit_model_gk = False\n",
"\n",
"if(load_model_gk):\n",
" scaler_gk = pickle.load(open('saves/scaler_gk.pkl', 'rb'))\n",
" \n",
" X_gk_train = scaler_gk.transform(X_gk_train_)\n",
" X_gk_test = scaler_gk.transform(X_gk_test_)\n",
" \n",
" \n",
"n_epochs = 2500\n",
"\n",
"n_samples = X_gk_train.shape[0]\n",
"\n",
"batch_size = 128\n",
"\n",
"X_gk_len = X_gk_train.shape[1]\n",
"y_gk_len = y_gk_train.shape[1]\n",
"\n",
"\n",
"#tailweight_param = 1.1\n",
"\n",
"tailweight_min = 0.5\n",
"tailweight_range = 1.1\n",
"\n",
"\n",
"callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience = 50)\n",
"neg_log_likelihood = lambda x, rv_x: -rv_x.log_prob(x)\n",
"\n",
"\n",
"inputs = tfk.layers.Input(shape=(X_gk_len,), name=\"input\")\n",
"x = tfk.layers.Dense(16, activation=\"relu\") (inputs)\n",
"x = tfk.layers.Dropout(0.2)(x)\n",
"x = tfk.layers.Dense(16, activation=\"relu\") (x)\n",
"\n",
"\n",
"prob_dist_params = 4\n",
"\n",
"def prob_dist(t): \n",
" return tfp.distributions.SinhArcsinh(loc=t[..., 0], scale=1e-3 + tf.math.softplus(t[..., 1]), skewness = t[..., 2], \n",
" tailweight = tailweight_min + tailweight_range * tf.math.sigmoid(t[..., 3]),\n",
" allow_nan_stats = False)\n",
"\n",
"x1 = tfk.layers.Dense(8, activation=\"sigmoid\")(x)\n",
"x1 = tfk.layers.Dense(prob_dist_params, activation=\"linear\")(x1)\n",
"out_1 = tfp.layers.DistributionLambda(prob_dist)(x1)\n",
"\n",
"x2 = tfk.layers.Dense(8, activation=\"sigmoid\")(x)\n",
"\n",
"x2 = tfk.layers.Dense(prob_dist_params, activation=\"linear\")(x2)\n",
"out_2 = tfp.layers.DistributionLambda(prob_dist)(x2)\n",
"\n",
"x3 = tfk.layers.Dense(8, activation=\"sigmoid\")(x)\n",
"x3 = tfk.layers.Dropout(0.5)(x3)\n",
"x3 = tfk.layers.Dense(1, activation=\"sigmoid\")(x3)\n",
"out_3 = tfp.layers.DistributionLambda(lambda t: tfp.distributions.Bernoulli(probs = t[..., 0]))(x3)\n",
"\n",
"modelb_gk = tf.keras.Model(inputs, [out_1, out_2, out_3])\n",
"\n",
"modelb_gk.compile(optimizer=tf.keras.optimizers.Nadam(learning_rate = 0.001), \n",
" loss=neg_log_likelihood)\n",
"\n",
"if(load_model_gk):\n",
" modelb_gk.load_weights('saves/modelb_gk')\n",
"\n",
"if( (not load_model_gk) or refit_model_gk): \n",
" modelb_gk.fit(X_gk_train.astype('float32'), [y_gk_train[:, 0].astype('float32'), y_gk_train[:, 1].astype('float32'), y_gk_train[:, 2].astype('int')], \n",
" validation_data = (X_gk_test.astype('float32'), [y_gk_test[:, 0].astype('float32'), y_gk_test[:, 1].astype('float32'), y_gk_test[:, 2].astype('int')]),\n",
" batch_size = batch_size, shuffle = True, epochs=n_epochs, verbose=True, callbacks = [callback])"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "39a9bdc6",
"metadata": {},
"outputs": [],
"source": [
"def sample_predict_gk(X, iterations = 100):\n",
" y = np.zeros((3, X.shape[0]))\n",
" \n",
" dist = modelb_gk(X)\n",
" \n",
" for i in range(iterations):\n",
" y[0, :] += dist[0].sample()\n",
" y[1, :] += dist[1].sample()\n",
" y[2, :] += dist[2].sample()\n",
" \n",
" return y.transpose() / iterations\n"
]
},
{
"cell_type": "code",
"execution_count": 23,
"id": "c41cf448",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.3243084984831396\n",
"0.560534541338418\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.262934291751185\n",
"0.42164057262465204\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"y_gk_train_predict = sample_predict_gk(X_gk_train)\n",
"\n",
"plt.plot([0, 20], [0, 20])\n",
"\n",
"plt.scatter(y_gk_train[:, 0], y_gk_train_predict[:, 0], color = 'orange', edgecolors = 'black', s = 20)\n",
"plt.scatter(y_gk_train[:, 1], y_gk_train_predict[:, 1], color = 'green', edgecolors = 'black', s = 20)\n",
"\n",
"print(r2_score(y_gk_train[:, 0], y_gk_train_predict[:, 0]))\n",
"print(r2_score(y_gk_train[:, 1], y_gk_train_predict[:, 1]))\n",
"\n",
"plt.show()\n",
"\n",
"y_gk_test_predict = sample_predict_gk(X_gk_test)\n",
"\n",
"plt.plot([0, 20], [0, 20])\n",
"\n",
"plt.scatter(y_gk_test[:, 0], y_gk_test_predict[:, 0], color = 'orange', edgecolors = 'black', s = 20)\n",
"plt.scatter(y_gk_test[:, 1], y_gk_test_predict[:, 1], color = 'green', edgecolors = 'black', s = 20)\n",
"\n",
"print(r2_score(y_gk_test[:, 0], y_gk_test_predict[:, 0]))\n",
"print(r2_score(y_gk_test[:, 1], y_gk_test_predict[:, 1]))\n",
"\n",
"\n"
]
},
{
"cell_type": "markdown",
"id": "91869883",
"metadata": {},
"source": [
"Use the following codes to save the scalers and the model weights"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "cecf5392",
"metadata": {},
"outputs": [],
"source": [
"save_model_of = False\n",
"save_model_gk = False\n",
"\n",
"if(save_model_of):\n",
" pickle.dump(scaler, open('saves/scaler.pkl', 'wb'))\n",
" modelb.save_weights('saves/modelb')\n",
" \n",
"if(save_model_gk):\n",
" pickle.dump(scaler_gk, open('saves/scaler_gk.pkl', 'wb'))\n",
" modelb_gk.save_weights('saves/modelb_gk')\n",
" "
]
},
{
"cell_type": "markdown",
"id": "32635a0e",
"metadata": {},
"source": [
"Generalized prediction function for a player (playing for team against opp_team, at home or not)\n",
"\n",
"Estimate prediction mean and sigma (using a custom definitions).\n",
"\n",
"Generate a plot.\n"
]
},
{
"cell_type": "code",
"execution_count": 24,
"id": "ddf433f9",
"metadata": {},
"outputs": [],
"source": [
"def vote_predict_NNb(player, team, opp_team, home = 1, plot = 0, log = 0, oldseason = False):\n",
" if(players['r'][player] == 'P'):\n",
" ptest = player_match_data_ext_gk(player, team, opp_team, oldseason = oldseason)\n",
"\n",
" x_ptest = np.array(ptest)[:, 3:]\n",
" r = np.array(ptest)[0, 0]\n",
"\n",
" # add home and role\n",
" xadd = np.zeros((1, 1))\n",
" xadd[0, 0] = home\n",
"\n",
" x_ptest = np.concatenate((x_ptest, xadd), axis = 1)\n",
"\n",
" x_scaled = scaler_gk.transform(x_ptest)\n",
"\n",
" dist = modelb_gk(x_scaled)\n",
" \n",
" clean_shoot_prob = dist[2].probs.numpy()[0]\n",
" else:\n",
" ptest = player_match_data_ext(player, team, opp_team, oldseason = oldseason)\n",
"\n",
" x_ptest = np.array(ptest)[:, 4:]\n",
" r = np.array(ptest)[0, 0]\n",
"\n",
" # add home and role\n",
" xadd = np.zeros((1, 4))\n",
" xadd[0, 0] = home\n",
" xadd[0, 1] = r == 'D'\n",
" xadd[0, 2] = r == 'C'\n",
" xadd[0, 3] = r == 'A'\n",
"\n",
" x_ptest = np.concatenate((x_ptest, xadd), axis = 1)\n",
"\n",
" x_scaled = scaler.transform(x_ptest)\n",
"\n",
" dist = modelb(x_scaled)\n",
" \n",
" \n",
" x = np.arange(0, 40, 0.002)\n",
"\n",
" px1 = dist[0].prob(x);\n",
" px2 = dist[1].prob(x);\n",
"\n",
" \n",
" #sample1 = dist[0].sample(10000)\n",
" #sample2 = dist[1].sample(10000)\n",
" \n",
" m1 = np.average(x, weights = px1)\n",
" m2 = np.average(x, weights = px2)\n",
" \n",
" #m1 = np.mean(sample1)\n",
" #m2 = np.mean(sample2)\n",
" \n",
" #s1 = np.std(sample1)\n",
" #s2 = np.std(sample2)\n",
" \n",
" # not standard deviation, but expected range extimated by quantile \n",
" \n",
" if(players['r'][player] == 'P'):\n",
" s1 = ( dist[0].quantile(0.9545) - m1 ) / 2\n",
" s2 = -( dist[1].quantile(1 - 0.9) - m2 ) / 2\n",
" else:\n",
" s1 = ( dist[0].quantile(0.9545) - m1 ) / 2\n",
" s2 = ( dist[1].quantile(0.9) - m2 ) / 2\n",
" \n",
"\n",
" \n",
" #y_pred_m = np.array([dist[0].loc, dist[1].loc]).flatten()\n",
" y_pred_m = np.array([m1, m2]).flatten()\n",
" #y_pred_s = np.array([dist[0].scale, dist[1].scale]).flatten()\n",
" y_pred_s = np.array([s1, s2]).flatten()\n",
" \n",
" clean_sheet_text = ''\n",
" if(players['r'][player] == 'P'):\n",
" clean_sheet_text = ' (' + \"{:.1f}\".format(clean_shoot_prob*100) + '% cs)'\n",
" \n",
" if(plot):\n",
" ax = plt.gca()\n",
" \n",
" plt.plot(x, px1, \n",
" label = 'MV ' + \"{:.2f}\".format(y_pred_m[0]) + ' ± ' + \"{:.2f}\".format(2 * y_pred_s[0]),\n",
" color = 'b')\n",
" plt.plot(x, px2, \n",
" label = 'FV ' + \"{:.2f}\".format(y_pred_m[1]) + ' + ' + \"{:.2f}\".format(2 * y_pred_s[1]) + clean_sheet_text,\n",
" color = 'g')\n",
" \n",
" plt.fill_between(x, px1, color = 'lightblue')\n",
" plt.fill_between(x, px2, color = 'lightgreen')\n",
" \n",
" plt.legend()\n",
" \n",
" plt.vlines(x = y_pred_m[0], color = 'b', ymin = 0, ymax = 3, linestyle = 'dashed')\n",
" plt.vlines(x = y_pred_m[1], color = 'g', ymin = 0, ymax = 3, linestyle = 'dashed')\n",
" \n",
" plt.title(player + ' (' + team + ' vs ' + opp_team + ')')\n",
" \n",
" plt.xlim([0, 15])\n",
" \n",
" if(players['r'][player] == 'P'): \n",
" plt.ylim([0, 2.5])\n",
" else:\n",
" plt.ylim([0, 1.5])\n",
" \n",
" plt.show()\n",
" \n",
" if(log):\n",
" print(player + ': ' + \n",
" 'MV ' + \"{:.2f}\".format(y_pred_m[0]) + ' ± ' + \"{:.2f}\".format(2 * y_pred_s[0]) +\n",
" '; FV ' + \"{:.2f}\".format(y_pred_m[1]) + ' + ' + \"{:.2f}\".format(2 * y_pred_s[1]) + clean_sheet_text);\n",
" return [y_pred_m, y_pred_s, dist]\n"
]
},
{
"cell_type": "markdown",
"id": "98817aa0",
"metadata": {},
"source": [
"Load Serie A calendar. "
]
},
{
"cell_type": "code",
"execution_count": 44,
"id": "d31bad38",
"metadata": {},
"outputs": [],
"source": [
"cal = np.array(pd.read_excel('fantacalcio/seriea_calendar.xlsx', header = None))\n",
"\n",
"cal_df = pd.DataFrame(columns = ['matchday', 'team1', 'team2'])\n",
"\n",
"matchday = 0\n",
"\n",
"for i in range(cal.shape[0]):\n",
" if(cal[i, 0][0].isnumeric()):\n",
" matchday = matchday + 1\n",
" continue\n",
" \n",
" teams = cal[i, 0].split('-')\n",
" \n",
" frame = pd.DataFrame([[matchday, teams[0], teams[1]]], columns = cal_df.columns)\n",
"\n",
" cal_df = pd.concat([cal_df, frame], ignore_index = True)\n",
" "
]
},
{
"cell_type": "code",
"execution_count": 45,
"id": "62b9f588",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" matchday team1 team2\n",
"0 1 Fiorentina Cremonese\n",
"1 1 Verona Napoli\n",
"2 1 Juventus Sassuolo\n",
"3 1 Lazio Bologna\n",
"4 1 Lecce Inter\n",
"5 1 Milan Udinese\n",
"6 1 Monza Torino\n",
"7 1 Salernitana Roma\n",
"8 1 Sampdoria Atalanta\n",
"9 1 Spezia Empoli\n",
"10 2 Atalanta Milan\n",
"11 2 Bologna Verona\n",
"12 2 Empoli Fiorentina\n",
"13 2 Inter Spezia\n",
"14 2 Napoli Monza\n",
"15 2 Roma Cremonese\n",
"16 2 Sampdoria Juventus\n",
"17 2 Sassuolo Lecce\n",
"18 2 Torino Lazio\n",
"19 2 Udinese Salernitana\n",
"20 3 Cremonese Torino\n",
"21 3 Fiorentina Napoli\n",
"22 3 Verona Atalanta\n",
"23 3 Juventus Roma\n",
"24 3 Lecce Empoli\n",
"25 3 Lazio Inter\n",
"26 3 Milan Bologna\n",
"27 3 Monza Udinese\n",
"28 3 Salernitana Sampdoria\n",
"29 3 Spezia Sassuolo\n",
"30 4 Atalanta Torino\n",
"31 4 Bologna Salernitana\n",
"32 4 Empoli Verona\n",
"33 4 Inter Cremonese\n",
"34 4 Juventus Spezia\n",
"35 4 Napoli Lecce\n",
"36 4 Roma Monza\n",
"37 4 Sampdoria Lazio\n",
"38 4 Sassuolo Milan\n",
"39 4 Udinese Fiorentina\n",
"40 5 Cremonese Sassuolo\n",
"41 5 Fiorentina Juventus\n",
"42 5 Verona Sampdoria\n",
"43 5 Lazio Napoli\n",
"44 5 Milan Inter\n",
"45 5 Monza Atalanta\n",
"46 5 Salernitana Empoli\n",
"47 5 Spezia Bologna\n",
"48 5 Torino Lecce\n",
"49 5 Udinese Roma\n",
"50 6 Atalanta Cremonese\n",
"51 6 Bologna Fiorentina\n",
"52 6 Empoli Roma\n",
"53 6 Inter Torino\n",
"54 6 Juventus Salernitana\n",
"55 6 Lazio Verona\n",
"56 6 Lecce Monza\n",
"57 6 Napoli Spezia\n",
"58 6 Sampdoria Milan\n",
"59 6 Sassuolo Udinese\n",
"60 7 Bologna Empoli\n",
"61 7 Cremonese Lazio\n",
"62 7 Fiorentina Verona\n",
"63 7 Milan Napoli\n",
"64 7 Monza Juventus\n",
"65 7 Roma Atalanta\n",
"66 7 Salernitana Lecce\n",
"67 7 Spezia Sampdoria\n",
"68 7 Torino Sassuolo\n",
"69 7 Udinese Inter\n",
"70 8 Atalanta Fiorentina\n",
"71 8 Empoli Milan\n",
"72 8 Verona Udinese\n",
"73 8 Inter Roma\n",
"74 8 Lazio Spezia\n",
"75 8 Napoli Torino\n",
"76 8 Juventus Bologna\n",
"77 8 Lecce Cremonese\n",
"78 8 Sampdoria Monza\n",
"79 8 Sassuolo Salernitana\n",
"80 9 Bologna Sampdoria\n",
"81 9 Cremonese Napoli\n",
"82 9 Fiorentina Lazio\n",
"83 9 Monza Spezia\n",
"84 9 Udinese Atalanta\n",
"85 9 Torino Empoli\n",
"86 9 Salernitana Verona\n",
"87 9 Sassuolo Inter\n",
"88 9 Milan Juventus\n",
"89 9 Roma Lecce\n",
"90 10 Atalanta Sassuolo\n",
"91 10 Empoli Monza\n",
"92 10 Verona Milan\n",
"93 10 Inter Salernitana\n",
"94 10 Lazio Udinese\n",
"95 10 Lecce Fiorentina\n",
"96 10 Napoli Bologna\n",
"97 10 Sampdoria Roma\n",
"98 10 Spezia Cremonese\n",
"99 10 Torino Juventus\n",
"100 11 Atalanta Lazio\n",
"101 11 Bologna Lecce\n",
"102 11 Cremonese Sampdoria\n",
"103 11 Fiorentina Inter\n",
"104 11 Juventus Empoli\n",
"105 11 Milan Monza\n",
"106 11 Roma Napoli\n",
"107 11 Salernitana Spezia\n",
"108 11 Sassuolo Verona\n",
"109 11 Udinese Torino\n",
"110 12 Cremonese Udinese\n",
"111 12 Verona Roma\n",
"112 12 Inter Sampdoria\n",
"113 12 Lazio Salernitana\n",
"114 12 Napoli Sassuolo\n",
"115 12 Empoli Atalanta\n",
"116 12 Monza Bologna\n",
"117 12 Spezia Fiorentina\n",
"118 12 Lecce Juventus\n",
"119 12 Torino Milan\n",
"120 13 Atalanta Napoli\n",
"121 13 Bologna Torino\n",
"122 13 Empoli Sassuolo\n",
"123 13 Juventus Inter\n",
"124 13 Milan Spezia\n",
"125 13 Monza Verona\n",
"126 13 Roma Lazio\n",
"127 13 Salernitana Cremonese\n",
"128 13 Sampdoria Fiorentina\n",
"129 13 Udinese Lecce\n",
"130 14 Cremonese Milan\n",
"131 14 Fiorentina Salernitana\n",
"132 14 Verona Juventus\n",
"133 14 Lazio Monza\n",
"134 14 Spezia Udinese\n",
"135 14 Lecce Atalanta\n",
"136 14 Inter Bologna\n",
"137 14 Napoli Empoli\n",
"138 14 Sassuolo Roma\n",
"139 14 Torino Sampdoria\n",
"140 15 Atalanta Inter\n",
"141 15 Bologna Sassuolo\n",
"142 15 Verona Spezia\n",
"143 15 Juventus Lazio\n",
"144 15 Monza Salernitana\n",
"145 15 Napoli Udinese\n",
"146 15 Roma Torino\n",
"147 15 Empoli Cremonese\n",
"148 15 Milan Fiorentina\n",
"149 15 Sampdoria Lecce\n",
"150 16 Cremonese Juventus\n",
"151 16 Fiorentina Monza\n",
"152 16 Inter Napoli\n",
"153 16 Spezia Atalanta\n",
"154 16 Roma Bologna\n",
"155 16 Udinese Empoli\n",
"156 16 Torino Verona\n",
"157 16 Lecce Lazio\n",
"158 16 Salernitana Milan\n",
"159 16 Sassuolo Sampdoria\n",
"160 17 Bologna Atalanta\n",
"161 17 Fiorentina Sassuolo\n",
"162 17 Verona Cremonese\n",
"163 17 Juventus Udinese\n",
"164 17 Lazio Empoli\n",
"165 17 Milan Roma\n",
"166 17 Monza Inter\n",
"167 17 Salernitana Torino\n",
"168 17 Sampdoria Napoli\n",
"169 17 Spezia Lecce\n",
"170 18 Atalanta Salernitana\n",
"171 18 Cremonese Monza\n",
"172 18 Empoli Sampdoria\n",
"173 18 Lecce Milan\n",
"174 18 Udinese Bologna\n",
"175 18 Roma Fiorentina\n",
"176 18 Inter Verona\n",
"177 18 Napoli Juventus\n",
"178 18 Sassuolo Lazio\n",
"179 18 Torino Spezia\n",
"180 19 Bologna Cremonese\n",
"181 19 Fiorentina Torino\n",
"182 19 Verona Lecce\n",
"183 19 Inter Empoli\n",
"184 19 Juventus Atalanta\n",
"185 19 Lazio Milan\n",
"186 19 Monza Sassuolo\n",
"187 19 Salernitana Napoli\n",
"188 19 Sampdoria Udinese\n",
"189 19 Spezia Roma\n",
"190 20 Atalanta Sampdoria\n",
"191 20 Bologna Spezia\n",
"192 20 Cremonese Inter\n",
"193 20 Empoli Torino\n",
"194 20 Juventus Monza\n",
"195 20 Lazio Fiorentina\n",
"196 20 Lecce Salernitana\n",
"197 20 Milan Sassuolo\n",
"198 20 Napoli Roma\n",
"199 20 Udinese Verona\n",
"200 21 Cremonese Lecce\n",
"201 21 Verona Lazio\n",
"202 21 Inter Milan\n",
"203 21 Monza Sampdoria\n",
"204 21 Torino Udinese\n",
"205 21 Sassuolo Atalanta\n",
"206 21 Fiorentina Bologna\n",
"207 21 Roma Empoli\n",
"208 21 Salernitana Juventus\n",
"209 21 Spezia Napoli\n",
"210 22 Bologna Monza\n",
"211 22 Empoli Spezia\n",
"212 22 Verona Salernitana\n",
"213 22 Lecce Roma\n",
"214 22 Milan Torino\n",
"215 22 Lazio Atalanta\n",
"216 22 Napoli Cremonese\n",
"217 22 Juventus Fiorentina\n",
"218 22 Sampdoria Inter\n",
"219 22 Udinese Sassuolo\n",
"220 23 Atalanta Lecce\n",
"221 23 Fiorentina Empoli\n",
"222 23 Inter Udinese\n",
"223 23 Monza Milan\n",
"224 23 Roma Verona\n",
"225 23 Salernitana Lazio\n",
"226 23 Sampdoria Bologna\n",
"227 23 Sassuolo Napoli\n",
"228 23 Spezia Juventus\n",
"229 23 Torino Cremonese\n",
"230 24 Bologna Inter\n",
"231 24 Cremonese Roma\n",
"232 24 Empoli Napoli\n",
"233 24 Juventus Torino\n",
"234 24 Lazio Sampdoria\n",
"235 24 Lecce Sassuolo\n",
"236 24 Milan Atalanta\n",
"237 24 Verona Fiorentina\n",
"238 24 Salernitana Monza\n",
"239 24 Udinese Spezia\n",
"240 25 Atalanta Udinese\n",
"241 25 Fiorentina Milan\n",
"242 25 Inter Lecce\n",
"243 25 Torino Bologna\n",
"244 25 Sassuolo Cremonese\n",
"245 25 Monza Empoli\n",
"246 25 Spezia Verona\n",
"247 25 Roma Juventus\n",
"248 25 Napoli Lazio\n",
"249 25 Sampdoria Salernitana\n",
"250 26 Bologna Lazio\n",
"251 26 Cremonese Fiorentina\n",
"252 26 Empoli Udinese\n",
"253 26 Verona Monza\n",
"254 26 Juventus Sampdoria\n",
"255 26 Lecce Torino\n",
"256 26 Milan Salernitana\n",
"257 26 Napoli Atalanta\n",
"258 26 Roma Sassuolo\n",
"259 26 Spezia Inter\n",
"260 27 Atalanta Empoli\n",
"261 27 Fiorentina Lecce\n",
"262 27 Inter Juventus\n",
"263 27 Lazio Roma\n",
"264 27 Sassuolo Spezia\n",
"265 27 Salernitana Bologna\n",
"266 27 Monza Cremonese\n",
"267 27 Sampdoria Verona\n",
"268 27 Udinese Milan\n",
"269 27 Torino Napoli\n",
"270 28 Bologna Udinese\n",
"271 28 Cremonese Atalanta\n",
"272 28 Empoli Lecce\n",
"273 28 Inter Fiorentina\n",
"274 28 Juventus Verona\n",
"275 28 Monza Lazio\n",
"276 28 Napoli Milan\n",
"277 28 Roma Sampdoria\n",
"278 28 Sassuolo Torino\n",
"279 28 Spezia Salernitana\n",
"280 29 Atalanta Bologna\n",
"281 29 Fiorentina Spezia\n",
"282 29 Verona Sassuolo\n",
"283 29 Lecce Napoli\n",
"284 29 Sampdoria Cremonese\n",
"285 29 Milan Empoli\n",
"286 29 Salernitana Inter\n",
"287 29 Lazio Juventus\n",
"288 29 Udinese Monza\n",
"289 29 Torino Roma\n",
"290 30 Bologna Milan\n",
"291 30 Cremonese Empoli\n",
"292 30 Fiorentina Atalanta\n",
"293 30 Inter Monza\n",
"294 30 Lecce Sampdoria\n",
"295 30 Napoli Verona\n",
"296 30 Roma Udinese\n",
"297 30 Sassuolo Juventus\n",
"298 30 Spezia Lazio\n",
"299 30 Torino Salernitana\n",
"300 31 Atalanta Roma\n",
"301 31 Empoli Inter\n",
"302 31 Verona Bologna\n",
"303 31 Juventus Napoli\n",
"304 31 Lazio Torino\n",
"305 31 Milan Lecce\n",
"306 31 Monza Fiorentina\n",
"307 31 Salernitana Sassuolo\n",
"308 31 Sampdoria Spezia\n",
"309 31 Udinese Cremonese\n",
"310 32 Bologna Juventus\n",
"311 32 Cremonese Verona\n",
"312 32 Fiorentina Sampdoria\n",
"313 32 Inter Lazio\n",
"314 32 Lecce Udinese\n",
"315 32 Napoli Salernitana\n",
"316 32 Torino Atalanta\n",
"317 32 Sassuolo Empoli\n",
"318 32 Roma Milan\n",
"319 32 Spezia Monza\n",
"320 33 Atalanta Spezia\n",
"321 33 Verona Inter\n",
"322 33 Juventus Lecce\n",
"323 33 Lazio Sassuolo\n",
"324 33 Monza Roma\n",
"325 33 Sampdoria Torino\n",
"326 33 Empoli Bologna\n",
"327 33 Milan Cremonese\n",
"328 33 Salernitana Fiorentina\n",
"329 33 Udinese Napoli\n",
"330 34 Atalanta Juventus\n",
"331 34 Cremonese Spezia\n",
"332 34 Empoli Salernitana\n",
"333 34 Lecce Verona\n",
"334 34 Milan Lazio\n",
"335 34 Napoli Fiorentina\n",
"336 34 Roma Inter\n",
"337 34 Sassuolo Bologna\n",
"338 34 Torino Monza\n",
"339 34 Udinese Sampdoria\n",
"340 35 Bologna Roma\n",
"341 35 Fiorentina Udinese\n",
"342 35 Verona Torino\n",
"343 35 Inter Sassuolo\n",
"344 35 Lazio Lecce\n",
"345 35 Monza Napoli\n",
"346 35 Salernitana Atalanta\n",
"347 35 Juventus Cremonese\n",
"348 35 Sampdoria Empoli\n",
"349 35 Spezia Milan\n",
"350 36 Atalanta Verona\n",
"351 36 Empoli Juventus\n",
"352 36 Lecce Spezia\n",
"353 36 Milan Sampdoria\n",
"354 36 Roma Salernitana\n",
"355 36 Cremonese Bologna\n",
"356 36 Torino Fiorentina\n",
"357 36 Napoli Inter\n",
"358 36 Udinese Lazio\n",
"359 36 Sassuolo Monza\n",
"360 37 Bologna Napoli\n",
"361 37 Fiorentina Roma\n",
"362 37 Juventus Milan\n",
"363 37 Salernitana Udinese\n",
"364 37 Sampdoria Sassuolo\n",
"365 37 Spezia Torino\n",
"366 37 Inter Atalanta\n",
"367 37 Lazio Cremonese\n",
"368 37 Verona Empoli\n",
"369 37 Monza Lecce\n",
"370 38 Atalanta Monza\n",
"371 38 Cremonese Salernitana\n",
"372 38 Empoli Lazio\n",
"373 38 Napoli Sampdoria\n",
"374 38 Roma Spezia\n",
"375 38 Lecce Bologna\n",
"376 38 Sassuolo Fiorentina\n",
"377 38 Milan Verona\n",
"378 38 Torino Inter\n",
"379 38 Udinese Juventus\n"
]
}
],
"source": [
"print(cal_df.to_string())"
]
},
{
"cell_type": "markdown",
"id": "62872819",
"metadata": {},
"source": [
"Function for generating a prediction for a player, taking match data from a given matchday, according to Serie A calendar."
]
},
{
"cell_type": "code",
"execution_count": 26,
"id": "c58ba41d",
"metadata": {},
"outputs": [],
"source": [
"def PlayerMatch(player, match = 0):\n",
" team = players.loc[player]['team']\n",
" \n",
" if(match == 0):\n",
" oppteam = 'Avg'\n",
" home = 1\n",
" else:\n",
" for i in range (cal_df.shape[0]):\n",
" if(cal_df['matchday'][i] == match):\n",
" if(cal_df['team1'][i] == team):\n",
" home = 1\n",
" oppteam = cal_df['team2'][i]\n",
" elif(cal_df['team2'][i] == team):\n",
" home = 0\n",
" oppteam = cal_df['team1'][i]\n",
" \n",
" return [player, team, oppteam, home]\n",
"\n",
"def predict_player(player, match = 0, plot = 0, log = 0, oldseason = False):\n",
" [player, team, oppteam, home] = PlayerMatch(player, match)\n",
" return vote_predict_NNb(player, team, oppteam, home = home, plot = plot, log = log, oldseason = oldseason)"
]
},
{
"cell_type": "markdown",
"id": "e8b63a98",
"metadata": {},
"source": [
"Load current matchday playing probabilities for Serie A players."
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "f79792b6",
"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>starter</th>\n",
" <th>percentage</th>\n",
" </tr>\n",
" <tr>\n",
" <th>player</th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Maignan</th>\n",
" <td>1.00</td>\n",
" <td>90</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Calabria</th>\n",
" <td>0.60</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kjaer</th>\n",
" <td>0.55</td>\n",
" <td>55</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Tomori</th>\n",
" <td>1.00</td>\n",
" <td>70</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Hernandez T.</th>\n",
" <td>1.00</td>\n",
" <td>90</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bonifazi</th>\n",
" <td>0.40</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pyyhtia</th>\n",
" <td>0.00</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Aebischer</th>\n",
" <td>0.45</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Arnautovic</th>\n",
" <td>0.00</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zirkzee</th>\n",
" <td>0.45</td>\n",
" <td>55</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>456 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" starter percentage\n",
"player \n",
"Maignan 1.00 90\n",
"Calabria 0.60 60\n",
"Kjaer 0.55 55\n",
"Tomori 1.00 70\n",
"Hernandez T. 1.00 90\n",
"... ... ...\n",
"Bonifazi 0.40 30\n",
"Pyyhtia 0.00 30\n",
"Aebischer 0.45 60\n",
"Arnautovic 0.00 50\n",
"Zirkzee 0.45 55\n",
"\n",
"[456 rows x 2 columns]"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"probables = pd.read_excel('mid_outputs/match_probable_players.xlsx', index_col = 0) \n",
"\n",
"probables"
]
},
{
"cell_type": "markdown",
"id": "e4751014",
"metadata": {},
"source": [
"Generate prediction data for each Serie A player for the current matchday.\n",
"\n",
"Output to excel file, using a template made for data elaboration."
]
},
{
"cell_type": "code",
"execution_count": 46,
"id": "5e63c2b7",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Meret: MV 6.25 ± 0.82; FV 5.94 + 0.90 (73.6% cs)\n",
"Provedel: MV 6.25 ± 0.82; FV 6.05 + 1.08 (71.1% cs)\n",
"Vicario: MV 6.25 ± 0.82; FV 5.79 + 0.85 (45.4% cs)\n",
"Szczesny: MV 6.25 ± 0.82; FV 4.92 + 1.54 (3.6% cs)\n",
"Falcone: MV 6.25 ± 0.82; FV 5.76 + 0.80 (36.1% cs)\n",
"Silvestri: MV 6.25 ± 0.82; FV 5.73 + 1.07 (51.7% cs)\n",
"Rui Patricio: MV 6.25 ± 0.82; FV 5.41 + 1.33 (40.3% cs)\n",
"Onana: MV 6.25 ± 0.82; FV 5.41 + 1.26 (25.4% cs)\n",
"Sepe: MV 6.25 ± 0.82; FV 5.34 + 0.83 (10.1% cs)\n",
"Milinkovic-Savic V.: MV 6.25 ± 0.82; FV 5.88 + 1.06 (43.5% cs)\n",
"Musso: MV 6.25 ± 0.82; FV 5.04 + 0.69 (8.0% cs)\n",
"Maignan: MV 6.25 ± 0.82; FV 5.85 + 0.93 (43.2% cs)\n",
"Carnesecchi: MV 6.25 ± 0.82; FV 5.11 + 1.47 (36.7% cs)\n",
"Di Gregorio: MV 6.25 ± 0.82; FV 5.33 + 0.99 (10.5% cs)\n",
"Audero: MV 6.25 ± 0.82; FV 4.88 + 1.26 (14.6% cs)\n",
"Montipo': MV 6.07 ± 0.70; FV 5.07 + 1.32 (29.0% cs)\n",
"Skorupski: MV 6.06 ± 0.71; FV 5.09 + 1.46 (20.9% cs)\n",
"Consigli: MV 6.25 ± 0.82; FV 5.02 + 1.23 (8.9% cs)\n",
"Dragowski: MV 6.25 ± 0.82; FV 5.76 + 1.10 (40.5% cs)\n",
"Terracciano: MV 6.24 ± 0.83; FV 4.12 + 1.65 (4.4% cs)\n",
"Tatarusanu: MV 6.25 ± 0.82; FV 4.89 + 1.56 (30.9% cs)\n",
"Handanovic: MV 6.25 ± 0.82; FV 3.71 + 2.44 (2.3% cs)\n",
"Sportiello: MV 6.25 ± 0.82; FV 4.21 + 0.65 (1.2% cs)\n",
"Perin: MV 6.25 ± 0.82; FV 5.98 + 0.88 (47.4% cs)\n",
"Zoet: MV 6.25 ± 0.82; FV 5.97 + 0.90 (73.7% cs)\n",
"Ochoa: MV 6.25 ± 0.82; FV 5.70 + 0.83 (31.2% cs)\n",
"Pegolo: MV 6.25 ± 0.82; FV 4.61 + 1.08 (1.6% cs)\n",
"Gollini: MV 6.25 ± 0.82; FV 5.94 + 0.89 (74.1% cs)\n",
"Mirante no data\n",
"Sarr M. no data\n",
"Lamanna no data\n",
"Ujkani no data\n",
"Berisha: MV 6.25 ± 0.82; FV 5.74 + 1.09 (59.5% cs)\n",
"Marchetti: MV 6.09 ± 0.75; FV 4.84 + 1.44 (17.4% cs)\n",
"Perilli: MV 6.25 ± 0.82; FV 5.94 + 0.89 (43.1% cs)\n",
"Padelli: MV 6.25 ± 0.82; FV 5.82 + 1.06 (55.1% cs)\n",
"Perisan: MV 6.25 ± 0.82; FV 5.59 + 1.01 (40.8% cs)\n",
"Bardi: MV 6.25 ± 0.82; FV 5.85 + 0.95 (47.5% cs)\n",
"Cordaz no data\n",
"Pinsoglio: MV 6.23 ± 0.80; FV 3.55 + 1.51 (0.9% cs)\n",
"Fiorillo: MV 6.24 ± 0.81; FV 2.54 + 1.67 (0.5% cs)\n",
"Cragno: MV 6.25 ± 0.82; FV 5.34 + 1.54 (38.8% cs)\n",
"Sirigu: MV 6.25 ± 0.82; FV 4.00 + 2.06 (2.0% cs)\n",
"Cerofolini: MV 6.25 ± 0.82; FV 5.85 + 1.18 (59.8% cs)\n",
"Rossi F.: MV 6.23 ± 0.81; FV 4.29 + 0.84 (2.0% cs)\n",
"Ravaglia F.: MV 6.25 ± 0.82; FV 4.22 + 1.33 (0.7% cs)\n",
"Brancolini no data\n",
"Bleve no data\n",
"Berardi A.: MV 6.25 ± 0.82; FV 5.43 + 0.69 (8.2% cs)\n",
"Russo A. no data\n",
"Gemello: MV 6.25 ± 0.82; FV 5.95 + 0.89 (73.9% cs)\n",
"Ravaglia: MV 6.25 ± 0.82; FV 5.21 + 1.23 (10.7% cs)\n",
"Boer no data\n",
"Adamonis no data\n",
"Marfella: MV 6.25 ± 0.82; FV 5.94 + 0.89 (73.7% cs)\n",
"Zovko: MV 6.25 ± 0.82; FV 5.47 + 1.22 (22.0% cs)\n",
"Piana no data\n",
"Bagnolini no data\n",
"Luis Maximiano: MV 5.70 ± 0.87; FV 5.19 + 1.36 (66.0% cs)\n",
"Svilar no data\n",
"Sorrentino A. no data\n",
"Ciezkowski no data\n",
"Saro no data\n",
"Vasquez D. no data\n",
"Turk: MV 6.25 ± 0.82; FV 4.73 + 1.47 (11.2% cs)\n",
"Dimarco: MV 6.06 ± 0.87; FV 6.35 + 1.35\n",
"Smalling: MV 6.20 ± 0.97; FV 6.56 + 1.59\n",
"Doig: MV 6.00 ± 1.02; FV 6.35 + 1.72\n",
"Carlos Augusto: MV 6.03 ± 1.01; FV 6.42 + 1.81\n",
"Kim: MV 6.25 ± 0.95; FV 6.60 + 1.58\n",
"Posch: MV 6.10 ± 1.12; FV 6.59 + 2.11\n",
"Di Lorenzo: MV 6.21 ± 0.89; FV 6.55 + 1.49\n",
"Danilo: MV 6.15 ± 0.96; FV 6.44 + 1.44\n",
"Hernandez T.: MV 5.97 ± 1.03; FV 6.18 + 1.46\n",
"Udogie: MV 6.23 ± 1.04; FV 6.82 + 2.04\n",
"Parisi: MV 6.15 ± 0.95; FV 6.52 + 1.55\n",
"Mario Rui: MV 6.13 ± 0.91; FV 6.27 + 1.16\n",
"Romagnoli: MV 6.10 ± 0.92; FV 6.27 + 1.20\n",
"Bastoni S.: MV 6.12 ± 0.95; FV 6.53 + 1.67\n",
"Mazzocchi: MV 6.16 ± 0.85; FV 6.55 + 1.46\n",
"Valeri: MV 6.12 ± 0.70; FV 6.42 + 1.19\n",
"Tomori: MV 6.01 ± 0.85; FV 6.06 + 0.92\n",
"Scalvini: MV 5.99 ± 0.99; FV 6.16 + 1.31\n",
"Toloi: MV 5.98 ± 0.91; FV 6.07 + 1.06\n",
"Demiral: MV 5.98 ± 0.85; FV 6.07 + 1.00\n",
"Maehle: MV 5.94 ± 0.93; FV 6.04 + 1.28\n",
"Dumfries: MV 5.86 ± 0.85; FV 5.99 + 1.22\n",
"Baschirotto: MV 6.21 ± 0.91; FV 6.59 + 1.55\n",
"Bijol: MV 6.18 ± 0.98; FV 6.56 + 1.63\n",
"Schuurs: MV 6.12 ± 0.78; FV 6.15 + 0.90\n",
"Juan Jesus: MV 6.15 ± 0.69; FV 6.42 + 1.17\n",
"Depaoli: MV 5.95 ± 0.85; FV 6.17 + 1.20\n",
"Mancini: MV 6.08 ± 0.81; FV 6.20 + 1.01\n",
"Ibanez: MV 5.79 ± 1.12; FV 5.89 + 1.45\n",
"Rodrigo Becao: MV 6.20 ± 0.90; FV 6.61 + 1.58\n",
"Ebuehi: MV 6.10 ± 0.78; FV 6.37 + 1.20\n",
"Gosens: MV 5.87 ± 0.77; FV 6.01 + 1.04\n",
"Darmian: MV 5.95 ± 0.74; FV 6.07 + 0.94\n",
"Reca: MV 6.05 ± 0.85; FV 6.27 + 1.22\n",
"Bremer: MV 5.93 ± 1.10; FV 6.16 + 1.65\n",
"Sernicola: MV 6.04 ± 0.93; FV 6.37 + 1.57\n",
"Rrahmani: MV 6.22 ± 0.93; FV 6.55 + 1.51\n",
"Vojvoda: MV 5.95 ± 0.82; FV 6.03 + 1.01\n",
"Holm: MV 6.03 ± 0.86; FV 6.28 + 1.26\n",
"Bastoni: MV 6.03 ± 0.86; FV 6.13 + 1.01\n",
"Milenkovic: MV 5.75 ± 1.07; FV 5.82 + 1.39\n",
"Kalulu: MV 5.74 ± 1.05; FV 5.71 + 1.11\n",
"Martinez Quarta: MV 5.75 ± 1.12; FV 5.84 + 1.44\n",
"Casale: MV 6.00 ± 0.89; FV 6.13 + 1.15\n",
"Perez N.: MV 6.18 ± 0.83; FV 6.44 + 1.29\n",
"Olivera: MV 6.14 ± 0.71; FV 6.48 + 1.27\n",
"Izzo: MV 5.98 ± 0.87; FV 6.12 + 1.11\n",
"Luperto: MV 5.99 ± 0.85; FV 6.00 + 0.87\n",
"Skriniar: MV 5.83 ± 0.89; FV 5.86 + 0.98\n",
"Rodriguez R.: MV 6.05 ± 0.70; FV 6.01 + 0.68\n",
"Marusic: MV 5.97 ± 0.85; FV 6.03 + 0.93\n",
"Lazzari: MV 5.98 ± 0.81; FV 6.04 + 0.93\n",
"Kyriakopoulos: MV 5.92 ± 0.86; FV 5.95 + 0.95\n",
"Ampadu: MV 5.91 ± 0.80; FV 5.91 + 0.80\n",
"Ismajli: MV 6.00 ± 0.78; FV 5.96 + 0.74\n",
"Llorente D.: MV 5.87 ± 1.03; FV 5.97 + 1.39\n",
"Cambiaso: MV 5.92 ± 0.75; FV 5.91 + 0.73\n",
"Hysaj: MV 5.92 ± 0.66; FV 5.92 + 0.58\n",
"Biraghi: MV 5.94 ± 0.90; FV 6.08 + 1.20\n",
"Medel: MV 5.98 ± 0.69; FV 5.91 + 0.61\n",
"Bonucci: MV 6.05 ± 1.06; FV 6.35 + 1.65\n",
"Calabria: MV 5.87 ± 1.00; FV 5.95 + 1.31\n",
"Acerbi: MV 5.98 ± 0.81; FV 6.02 + 0.84\n",
"Spinazzola: MV 6.09 ± 0.83; FV 6.34 + 1.23\n",
"Lykogiannis: MV 5.98 ± 0.77; FV 6.08 + 0.91\n",
"Pellegrini Lu.: MV 6.00 ± 0.80; FV 6.08 + 0.92\n",
"Djidji: MV 5.94 ± 0.79; FV 6.00 + 0.91\n",
"Lazaro: MV 6.04 ± 0.84; FV 6.16 + 1.02\n",
"Augello: MV 5.82 ± 0.88; FV 5.89 + 1.16\n",
"Gallo: MV 5.94 ± 0.72; FV 5.92 + 0.65\n",
"Singo: MV 6.01 ± 0.86; FV 6.25 + 1.30\n",
"Mari': MV 5.84 ± 0.99; FV 5.92 + 1.17\n",
"Caldirola: MV 5.90 ± 1.00; FV 6.07 + 1.49\n",
"Dodo': MV 5.71 ± 1.15; FV 5.76 + 1.42\n",
"De Vrij: MV 5.87 ± 0.84; FV 5.93 + 0.92\n",
"Patric: MV 5.98 ± 0.91; FV 6.02 + 0.96\n",
"Faraoni: MV 5.97 ± 0.89; FV 6.19 + 1.31\n",
"Ceccherini: MV 5.84 ± 1.11; FV 6.03 + 1.52\n",
"Hateboer: MV 5.83 ± 0.90; FV 5.87 + 1.19\n",
"Rogerio: MV 5.81 ± 0.77; FV 5.79 + 0.70\n",
"Umtiti: MV 6.00 ± 0.82; FV 6.00 + 0.82\n",
"Aina: MV 6.06 ± 0.91; FV 6.34 + 1.45\n",
"Birindelli: MV 5.81 ± 0.71; FV 5.77 + 0.75\n",
"Lucumi': MV 5.86 ± 0.83; FV 5.83 + 0.81\n",
"Ehizibue: MV 6.03 ± 0.82; FV 6.29 + 1.28\n",
"Bianchetti: MV 5.91 ± 0.82; FV 5.93 + 0.99\n",
"Ferrari G.: MV 5.83 ± 1.04; FV 5.90 + 1.22\n",
"Fazio: MV 5.69 ± 1.13; FV 5.67 + 1.16\n",
"Gravillon: MV 6.00 ± 0.74; FV 5.94 + 0.70\n",
"Buongiorno: MV 6.13 ± 0.89; FV 6.40 + 1.34\n",
"Gunter: MV 5.73 ± 1.02; FV 5.66 + 1.07\n",
"Troost-Ekong: MV 5.86 ± 0.81; FV 5.83 + 0.75\n",
"Soumaoro: MV 5.85 ± 0.92; FV 5.84 + 0.87\n",
"Ceccaroni: MV 6.04 ± 0.84; FV 6.15 + 0.98\n",
"Pongracic: MV 6.03 ± 0.70; FV 5.96 + 0.62\n",
"Soppy: MV 5.85 ± 0.72; FV 5.85 + 0.70\n",
"Gendrey: MV 6.00 ± 0.64; FV 5.95 + 0.54\n",
"Hien: MV 5.89 ± 0.82; FV 5.87 + 0.80\n",
"Ferrari A.: MV 5.95 ± 0.80; FV 5.98 + 0.84\n",
"Masina: MV 6.12 ± 0.71; FV 6.60 + 1.49\n",
"Zappacosta: MV 6.06 ± 0.93; FV 6.30 + 1.40\n",
"Gyomber: MV 5.93 ± 0.77; FV 5.87 + 0.70\n",
"Alex Sandro: MV 5.75 ± 0.99; FV 5.67 + 1.00\n",
"Pezzella Giu.: MV 5.97 ± 0.64; FV 5.94 + 0.54\n",
"Bereszynski: MV 5.89 ± 0.69; FV 5.88 + 0.64\n",
"Venuti: MV 5.61 ± 0.84; FV 5.61 + 0.89\n",
"Palomino: MV 5.97 ± 0.82; FV 6.01 + 0.87\n",
"Nuytinck: MV 5.79 ± 0.98; FV 5.77 + 1.11\n",
"Marlon: MV 5.77 ± 0.74; FV 5.74 + 0.70\n",
"Magnani: MV 5.88 ± 0.90; FV 5.88 + 0.91\n",
"Colley: MV 5.73 ± 1.07; FV 5.75 + 1.27\n",
"Nikolaou: MV 5.85 ± 0.69; FV 5.82 + 0.62\n",
"Terzic: MV 5.91 ± 0.68; FV 5.96 + 0.75\n",
"Igor: MV 5.61 ± 1.15; FV 5.52 + 1.11\n",
"Toljan: MV 5.75 ± 0.82; FV 5.71 + 0.76\n",
"Zortea: MV 5.84 ± 0.81; FV 5.85 + 0.88\n",
"Dawidowicz: MV 5.91 ± 0.86; FV 5.97 + 1.02\n",
"Celik: MV 5.79 ± 0.91; FV 5.75 + 1.01\n",
"Bellanova: MV 5.87 ± 0.80; FV 5.95 + 1.04\n",
"Erlic: MV 5.78 ± 0.92; FV 5.74 + 0.83\n",
"Ballo-Toure': MV 6.00 ± 0.70; FV 6.12 + 0.77\n",
"Dest: MV 5.70 ± 0.78; FV 5.70 + 0.73\n",
"Stojanovic: MV 5.83 ± 0.74; FV 5.79 + 0.73\n",
"Amian: MV 5.88 ± 0.72; FV 5.88 + 0.71\n",
"Bradaric: MV 5.83 ± 0.83; FV 5.81 + 0.85\n",
"Daniliuc: MV 5.81 ± 0.87; FV 5.78 + 0.90\n",
"Zima: MV 5.98 ± 0.75; FV 5.97 + 0.75\n",
"De Winter: MV 5.88 ± 0.77; FV 5.81 + 0.71\n",
"Quagliata: MV 5.97 ± 0.75; FV 5.97 + 0.72\n",
"Ebosse: MV 5.95 ± 0.62; FV 5.90 + 0.50\n",
"Aiwu: MV 6.01 ± 0.80; FV 6.15 + 0.99\n",
"Lochoshvili: MV 5.99 ± 0.82; FV 6.15 + 1.11\n",
"Bronn: MV 5.81 ± 0.69; FV 5.78 + 0.60\n",
"Thiaw: MV 5.81 ± 1.02; FV 5.79 + 0.97\n",
"Zeefuik: MV 5.92 ± 0.83; FV 5.98 + 0.88\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Romagnoli S.: MV 6.12 ± 0.99; FV 6.47 + 1.57\n",
"Ghiglione: MV 5.99 ± 0.83; FV 6.20 + 1.28\n",
"Rugani: MV 5.98 ± 0.62; FV 5.95 + 0.51\n",
"De Sciglio: MV 5.84 ± 0.64; FV 5.84 + 0.53\n",
"Djimsiti: MV 5.96 ± 0.73; FV 5.94 + 0.66\n",
"Caldara: MV 5.83 ± 0.85; FV 5.81 + 0.87\n",
"Karsdorp: MV 5.89 ± 0.80; FV 5.90 + 0.85\n",
"Marchizza: MV 5.81 ± 0.81; FV 5.77 + 0.76\n",
"Kjaer: MV 5.93 ± 0.74; FV 5.86 + 0.66\n",
"Okoli: MV 5.76 ± 0.88; FV 5.69 + 0.81\n",
"Amione: MV 5.72 ± 0.98; FV 5.66 + 1.15\n",
"Ruggeri: MV 5.91 ± 0.66; FV 5.89 + 0.56\n",
"Zanoli: MV 5.93 ± 0.90; FV 6.07 + 1.28\n",
"Wisniewski: MV 5.84 ± 0.64; FV 5.81 + 0.55\n",
"Radovanovic: MV 5.75 ± 0.70; FV 5.71 + 0.62\n",
"Dermaku: MV 6.02 ± 0.77; FV 6.08 + 0.83\n",
"D'ambrosio: MV 6.02 ± 0.79; FV 6.08 + 0.89\n",
"De Silvestri: MV 5.88 ± 1.01; FV 6.00 + 1.34\n",
"Chiriches: MV 5.94 ± 0.76; FV 5.91 + 0.70\n",
"Murru: MV 5.66 ± 0.75; FV 5.59 + 0.78\n",
"Bonifazi: MV 5.69 ± 0.85; FV 5.63 + 0.82\n",
"Donati: MV 5.72 ± 1.15; FV 5.80 + 1.55\n",
"Walukiewicz: MV 6.06 ± 0.65; FV 5.97 + 0.57\n",
"Ranieri L.: MV 5.70 ± 0.81; FV 5.69 + 0.94\n",
"Gabbia: MV 5.68 ± 0.90; FV 5.57 + 0.84\n",
"Kumbulla: MV 5.69 ± 1.00; FV 5.61 + 1.04\n",
"Adopo: MV 5.81 ± 0.69; FV 5.77 + 0.63\n",
"Pirola: MV 5.96 ± 1.05; FV 6.21 + 1.60\n",
"Lovato: MV 5.74 ± 0.87; FV 5.69 + 0.79\n",
"Tuia: MV 6.07 ± 0.56; FV 5.97 + 0.47\n",
"Ferrer: MV 5.95 ± 0.82; FV 6.01 + 0.88\n",
"Antov: MV 5.62 ± 1.06; FV 5.57 + 1.05\n",
"Vasquez: MV 5.93 ± 0.70; FV 5.90 + 0.62\n",
"Ruan: MV 5.79 ± 0.96; FV 5.72 + 0.88\n",
"Ostigard: MV 6.06 ± 0.62; FV 6.02 + 0.57\n",
"Coppola D.: MV 5.85 ± 0.68; FV 5.84 + 0.59\n",
"Cacace: MV 5.81 ± 0.72; FV 5.74 + 0.64\n",
"Gatti: MV 6.04 ± 0.86; FV 6.09 + 0.93\n",
"Gila: MV 5.94 ± 0.93; FV 6.01 + 1.05\n",
"Bayeye: MV 6.01 ± 0.85; FV 6.10 + 1.01\n",
"Sambia: MV 5.90 ± 0.74; FV 5.88 + 0.67\n",
"Moutinho J.: MV 5.91 ± 0.73; FV 5.92 + 0.73\n",
"Conti: MV 5.81 ± 0.82; FV 5.85 + 1.05\n",
"Marrone: MV 5.60 ± 0.90; FV 5.54 + 0.94\n",
"Tonelli: MV 5.85 ± 0.79; FV 5.80 + 0.73\n",
"Murillo: MV 5.64 ± 0.85; FV 5.52 + 0.86\n",
"Radu: MV 5.69 ± 1.08; FV 5.68 + 0.95\n",
"Paletta: MV 5.87 ± 0.92; FV 5.93 + 1.14\n",
"Florenzi: MV 5.99 ± 0.67; FV 6.03 + 0.63\n",
"Sala: MV 5.93 ± 0.71; FV 6.01 + 0.82\n",
"Fares: MV 5.78 ± 0.82; FV 5.82 + 1.04\n",
"Romagna: MV 5.89 ± 0.88; FV 5.90 + 0.90\n",
"Cassandro: MV 6.02 ± 0.77; FV 6.07 + 0.82\n",
"Muldur: MV 5.77 ± 0.77; FV 5.73 + 0.72\n",
"Amey: MV 5.99 ± 0.85; FV 6.04 + 0.94\n",
"Zanotti: MV 5.84 ± 0.96; FV 5.88 + 1.20\n",
"Ebosele: MV 6.05 ± 0.59; FV 6.05 + 0.59\n",
"Buta: MV 6.08 ± 0.75; FV 6.18 + 0.91\n",
"Abankwah: MV 6.07 ± 0.74; FV 6.14 + 0.85\n",
"Guessand A.: MV 6.08 ± 0.75; FV 6.18 + 0.91\n",
"Cabal: MV 5.94 ± 0.67; FV 5.91 + 0.57\n",
"Sosa: MV 5.50 ± 0.91; FV 5.43 + 0.90\n",
"Guarino: MV 5.97 ± 0.84; FV 6.04 + 0.95\n",
"Carboni F.: MV 5.96 ± 0.85; FV 6.05 + 0.96\n",
"Zaccagni: MV 6.36 ± 1.17; FV 7.12 + 2.57\n",
"Kvaratskhelia: MV 6.49 ± 1.31; FV 7.41 + 3.07\n",
"Milinkovic-Savic: MV 6.12 ± 1.15; FV 6.66 + 2.23\n",
"Barella: MV 6.11 ± 0.98; FV 6.55 + 1.72\n",
"Zielinski: MV 6.22 ± 0.92; FV 6.72 + 1.76\n",
"Luis Alberto: MV 6.21 ± 1.05; FV 6.77 + 2.05\n",
"Strefezza: MV 6.33 ± 1.04; FV 7.07 + 2.32\n",
"Felipe Anderson: MV 6.16 ± 1.14; FV 6.85 + 2.42\n",
"Koopmeiners: MV 6.18 ± 1.07; FV 6.70 + 2.02\n",
"Calhanoglu: MV 6.18 ± 0.88; FV 6.54 + 1.47\n",
"Frattesi: MV 6.13 ± 1.07; FV 6.70 + 2.15\n",
"Diaz B.: MV 6.05 ± 1.11; FV 6.52 + 2.03\n",
"Vlasic: MV 6.17 ± 0.99; FV 6.72 + 1.93\n",
"Zambo Anguissa: MV 6.20 ± 0.89; FV 6.60 + 1.56\n",
"Elmas: MV 6.20 ± 0.93; FV 6.78 + 1.91\n",
"Miranchuk: MV 6.23 ± 1.02; FV 6.87 + 2.11\n",
"Samardzic: MV 6.24 ± 1.01; FV 6.85 + 2.01\n",
"Pereyra: MV 6.27 ± 1.14; FV 6.97 + 2.39\n",
"Politano: MV 6.19 ± 0.78; FV 6.71 + 1.64\n",
"Rabiot: MV 6.19 ± 1.20; FV 6.84 + 2.44\n",
"Ciurria: MV 6.01 ± 1.05; FV 6.44 + 1.93\n",
"Lazovic: MV 6.10 ± 0.99; FV 6.61 + 1.78\n",
"Lobotka: MV 6.17 ± 0.75; FV 6.44 + 1.22\n",
"Radonjic: MV 6.19 ± 0.95; FV 6.71 + 1.85\n",
"Ferguson: MV 6.12 ± 0.88; FV 6.51 + 1.55\n",
"Bonaventura: MV 6.02 ± 0.88; FV 6.29 + 1.32\n",
"Pessina: MV 6.01 ± 0.95; FV 6.28 + 1.51\n",
"Tonali: MV 6.04 ± 1.02; FV 6.32 + 1.58\n",
"Kostic: MV 6.08 ± 1.01; FV 6.44 + 1.68\n",
"Baldanzi: MV 6.17 ± 0.95; FV 6.64 + 1.73\n",
"Lovric: MV 6.21 ± 0.85; FV 6.79 + 1.79\n",
"Pellegrini Lo.: MV 6.04 ± 1.12; FV 6.46 + 2.01\n",
"El Shaarawy: MV 6.17 ± 0.86; FV 6.67 + 1.68\n",
"Orsolini: MV 6.24 ± 1.30; FV 7.16 + 3.16\n",
"Ikone': MV 5.93 ± 1.01; FV 6.21 + 1.60\n",
"Candreva: MV 6.11 ± 1.00; FV 6.51 + 1.68\n",
"Bennacer: MV 6.06 ± 0.77; FV 6.18 + 0.93\n",
"Pasalic: MV 5.92 ± 0.94; FV 6.19 + 1.47\n",
"Mkhitaryan: MV 5.96 ± 0.87; FV 6.19 + 1.32\n",
"Colpani: MV 5.99 ± 0.84; FV 6.34 + 1.49\n",
"Pogba: MV 5.96 ± 0.68; FV 5.99 + 0.66\n",
"Chiesa: MV 6.01 ± 0.87; FV 6.22 + 1.27\n",
"Bandinelli: MV 5.93 ± 0.82; FV 6.01 + 1.09\n",
"Matic: MV 6.09 ± 0.78; FV 6.27 + 1.07\n",
"Fagioli: MV 6.00 ± 1.01; FV 6.25 + 1.56\n",
"Messias: MV 5.99 ± 1.02; FV 6.42 + 1.81\n",
"Arslan: MV 6.04 ± 0.63; FV 6.11 + 0.73\n",
"Ricci S.: MV 6.11 ± 0.80; FV 6.34 + 1.17\n",
"Ranocchia F.: MV 6.02 ± 0.83; FV 6.29 + 1.31\n",
"Verdi: MV 6.11 ± 1.14; FV 6.82 + 2.48\n",
"Sensi: MV 5.98 ± 0.98; FV 6.27 + 1.64\n",
"Barak: MV 5.81 ± 0.88; FV 5.96 + 1.22\n",
"Soriano: MV 6.03 ± 0.80; FV 6.27 + 1.24\n",
"Dominguez: MV 6.10 ± 0.89; FV 6.42 + 1.45\n",
"Vilhena: MV 5.93 ± 0.92; FV 6.11 + 1.37\n",
"Brozovic: MV 6.05 ± 0.96; FV 6.30 + 1.44\n",
"Cristante: MV 5.95 ± 0.82; FV 6.02 + 1.07\n",
"Thorstvedt: MV 5.98 ± 0.88; FV 6.20 + 1.28\n",
"De Ketelaere: MV 5.80 ± 0.66; FV 5.80 + 0.66\n",
"Saponara: MV 5.92 ± 0.97; FV 6.22 + 1.54\n",
"Vecino: MV 5.92 ± 0.97; FV 6.08 + 1.42\n",
"Locatelli: MV 6.07 ± 0.86; FV 6.23 + 1.13\n",
"Zaniolo: MV 5.89 ± 0.98; FV 6.04 + 1.46\n",
"Duda: MV 5.85 ± 0.64; FV 5.86 + 0.62\n",
"Maldini: MV 5.99 ± 0.91; FV 6.38 + 1.61\n",
"Marin: MV 5.97 ± 0.94; FV 6.13 + 1.36\n",
"Zalewski: MV 6.02 ± 0.77; FV 6.18 + 1.08\n",
"Bajrami: MV 6.09 ± 1.02; FV 6.61 + 1.97\n",
"Coulibaly L.: MV 5.98 ± 1.08; FV 6.28 + 1.70\n",
"Gonzalez J.: MV 6.03 ± 0.80; FV 6.22 + 1.11\n",
"De Roon: MV 6.05 ± 0.87; FV 6.23 + 1.20\n",
"Mandragora: MV 5.92 ± 0.90; FV 6.03 + 1.26\n",
"Wijnaldum: MV 6.11 ± 1.05; FV 6.66 + 2.02\n",
"Bourabia: MV 5.96 ± 0.80; FV 6.13 + 1.04\n",
"Sottil: MV 5.92 ± 0.94; FV 6.17 + 1.43\n",
"Aebischer: MV 5.89 ± 0.80; FV 6.00 + 1.12\n",
"Ederson D.s.: MV 5.92 ± 0.82; FV 5.96 + 0.94\n",
"Miretti: MV 5.93 ± 0.79; FV 6.08 + 1.07\n",
"Blin: MV 6.02 ± 0.70; FV 6.09 + 0.78\n",
"Hjulmand: MV 6.05 ± 0.80; FV 6.09 + 0.87\n",
"Cataldi: MV 5.95 ± 0.76; FV 5.99 + 0.81\n",
"Djuricic: MV 5.77 ± 0.90; FV 5.87 + 1.20\n",
"Linetty: MV 5.98 ± 0.84; FV 6.14 + 1.22\n",
"Haas: MV 5.93 ± 0.76; FV 6.02 + 0.96\n",
"Walace: MV 6.05 ± 0.67; FV 6.05 + 0.68\n",
"Agudelo: MV 5.93 ± 0.72; FV 6.01 + 0.86\n",
"Pobega: MV 5.97 ± 0.84; FV 6.14 + 1.22\n",
"Camara Ma.: MV 6.06 ± 0.82; FV 6.14 + 0.96\n",
"Paredes: MV 5.82 ± 0.88; FV 5.85 + 1.03\n",
"Ndombele': MV 6.00 ± 0.76; FV 6.16 + 0.97\n",
"Nicolussi Caviglia: MV 5.88 ± 1.03; FV 6.00 + 1.43\n",
"Rovella: MV 5.89 ± 0.97; FV 5.95 + 1.17\n",
"Amrabat: MV 5.78 ± 1.07; FV 5.80 + 1.29\n",
"Tameze: MV 5.88 ± 0.76; FV 5.92 + 0.74\n",
"Gyasi: MV 5.90 ± 0.96; FV 6.09 + 1.46\n",
"Ilic: MV 6.08 ± 0.87; FV 6.34 + 1.33\n",
"Matheus Henrique: MV 5.94 ± 0.96; FV 6.08 + 1.38\n",
"Harroui: MV 5.98 ± 0.87; FV 6.28 + 1.41\n",
"Volpato: MV 6.05 ± 1.02; FV 6.53 + 1.90\n",
"Pickel: MV 5.86 ± 0.74; FV 5.83 + 0.81\n",
"Moro N.: MV 6.06 ± 0.83; FV 6.27 + 1.18\n",
"Duncan: MV 5.80 ± 0.83; FV 5.89 + 1.09\n",
"Machin: MV 5.86 ± 0.93; FV 5.93 + 1.21\n",
"Cuadrado: MV 5.87 ± 0.97; FV 5.96 + 1.31\n",
"Ekdal: MV 5.88 ± 0.72; FV 5.89 + 0.72\n",
"Meite': MV 5.91 ± 0.76; FV 5.93 + 0.81\n",
"Schouten: MV 5.92 ± 0.83; FV 5.92 + 0.84\n",
"Obiang: MV 5.89 ± 0.62; FV 5.88 + 0.52\n",
"Kovalenko: MV 5.90 ± 0.80; FV 6.03 + 0.98\n",
"Crnigoj: MV 5.95 ± 0.73; FV 6.02 + 0.78\n",
"Basic: MV 5.96 ± 0.77; FV 6.14 + 1.09\n",
"Asllani: MV 5.94 ± 0.65; FV 5.97 + 0.62\n",
"Sabiri: MV 5.85 ± 0.87; FV 5.99 + 1.25\n",
"Terracciano F.: MV 5.97 ± 0.62; FV 6.00 + 0.54\n",
"Castagnetti: MV 6.00 ± 0.65; FV 6.01 + 0.61\n",
"Oudin: MV 5.99 ± 0.59; FV 5.98 + 0.51\n",
"Grassi: MV 6.00 ± 0.65; FV 5.95 + 0.58\n",
"Krunic: MV 5.87 ± 0.68; FV 5.86 + 0.66\n",
"Rincon: MV 5.78 ± 0.71; FV 5.73 + 0.79\n",
"Miguel Veloso: MV 5.92 ± 0.66; FV 5.95 + 0.59\n",
"Leris: MV 5.85 ± 0.80; FV 5.89 + 1.04\n",
"Esposito Sa.: MV 5.86 ± 0.72; FV 5.82 + 0.67\n",
"Henderson L.: MV 5.92 ± 0.75; FV 5.97 + 0.90\n",
"Lopez M.: MV 5.87 ± 0.77; FV 5.85 + 0.73\n",
"Cuisance: MV 5.79 ± 0.62; FV 5.75 + 0.66\n",
"Saelemaekers: MV 5.87 ± 0.75; FV 5.97 + 0.94\n",
"Maggiore: MV 5.92 ± 0.72; FV 5.95 + 0.74\n",
"Akpa Akpro: MV 5.97 ± 0.84; FV 6.05 + 1.01\n",
"Maleh: MV 5.98 ± 0.64; FV 6.03 + 0.69\n",
"Romero L.: MV 5.98 ± 0.94; FV 6.44 + 1.77\n",
"Ceide: MV 5.84 ± 0.67; FV 5.85 + 0.61\n",
"D'alessandro: MV 6.01 ± 0.65; FV 6.08 + 0.71\n",
"Benassi: MV 5.92 ± 0.69; FV 5.97 + 0.73\n",
"Gagliardini: MV 5.77 ± 0.59; FV 5.71 + 0.55\n",
"Vieira: MV 5.90 ± 0.67; FV 5.88 + 0.80\n",
"Bianco: MV 5.88 ± 0.94; FV 5.95 + 1.21\n",
"Vranckx: MV 5.85 ± 0.61; FV 5.84 + 0.52\n",
"Galdames: MV 6.00 ± 0.81; FV 6.13 + 1.02\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Marcos Antonio: MV 6.04 ± 0.89; FV 6.32 + 1.43\n",
"Fazzini: MV 5.86 ± 0.63; FV 5.81 + 0.57\n",
"Sulemana I.: MV 5.88 ± 0.60; FV 5.90 + 0.51\n",
"Tahirovic: MV 5.84 ± 0.77; FV 5.78 + 0.85\n",
"Abildgaard: MV 5.77 ± 0.63; FV 5.82 + 0.58\n",
"Barberis: MV 5.75 ± 0.81; FV 5.72 + 0.87\n",
"Kastanos: MV 5.98 ± 0.81; FV 6.10 + 0.98\n",
"Vignato: MV 6.01 ± 0.73; FV 6.10 + 0.84\n",
"Valoti: MV 5.74 ± 0.65; FV 5.70 + 0.61\n",
"Winks: MV 5.83 ± 0.86; FV 5.81 + 0.98\n",
"Askildsen: MV 5.85 ± 0.61; FV 5.84 + 0.50\n",
"Bove: MV 5.99 ± 0.82; FV 6.20 + 1.20\n",
"Bohinen: MV 5.89 ± 0.58; FV 5.86 + 0.45\n",
"D'andrea: MV 6.04 ± 0.77; FV 6.18 + 0.95\n",
"Iling-Junior: MV 6.03 ± 0.74; FV 6.18 + 1.01\n",
"Cipot: MV 6.08 ± 0.63; FV 6.26 + 0.92\n",
"Bakayoko: MV 5.80 ± 0.74; FV 5.79 + 0.65\n",
"Gaetano: MV 5.93 ± 0.75; FV 5.98 + 0.82\n",
"Zurkowski: MV 6.05 ± 0.97; FV 6.47 + 1.76\n",
"Castrovilli: MV 5.90 ± 0.85; FV 6.07 + 1.25\n",
"Demme: MV 6.02 ± 0.73; FV 6.22 + 1.03\n",
"Darboe: MV 5.91 ± 0.94; FV 5.97 + 1.11\n",
"Urbanski: MV 5.93 ± 0.86; FV 5.98 + 0.98\n",
"Bertini: MV 5.88 ± 0.96; FV 5.98 + 1.31\n",
"Yepes: MV 5.70 ± 0.75; FV 5.64 + 0.80\n",
"Pyyhtia: MV 5.95 ± 0.65; FV 5.93 + 0.58\n",
"Trimboli: MV 5.86 ± 0.91; FV 5.89 + 1.18\n",
"Pafundi: MV 6.20 ± 0.75; FV 6.48 + 1.29\n",
"Helgason: MV 5.96 ± 0.60; FV 5.93 + 0.49\n",
"Adli: MV 5.90 ± 0.69; FV 5.93 + 0.74\n",
"Vignato S.: MV 5.80 ± 0.81; FV 5.78 + 0.91\n",
"Hrustic: MV 5.72 ± 0.55; FV 5.77 + 0.42\n",
"Samek: MV 6.03 ± 0.78; FV 6.11 + 0.89\n",
"Zerbin: MV 5.86 ± 0.67; FV 5.86 + 0.76\n",
"Ilkhan: MV 5.86 ± 0.74; FV 5.84 + 0.82\n",
"Degli Innocenti: MV 5.97 ± 0.84; FV 6.05 + 1.01\n",
"Acella: MV 6.03 ± 0.79; FV 6.16 + 0.97\n",
"Carboni V.: MV 5.82 ± 1.03; FV 5.88 + 1.18\n",
"Paoletti: MV 5.90 ± 0.57; FV 5.87 + 0.45\n",
"Malagrida: MV 5.83 ± 0.73; FV 5.84 + 0.89\n",
"Faticanti: MV 5.92 ± 0.92; FV 6.04 + 1.29\n",
"Osimhen: MV 6.48 ± 1.45; FV 7.80 + 4.24\n",
"Martinez L.: MV 6.14 ± 1.37; FV 7.42 + 3.73\n",
"Dybala: MV 6.41 ± 1.30; FV 7.37 + 3.19\n",
"Rafael Leao: MV 6.21 ± 1.30; FV 7.09 + 3.03\n",
"Lookman: MV 6.27 ± 1.31; FV 7.26 + 3.23\n",
"Immobile: MV 6.08 ± 1.30; FV 7.11 + 3.20\n",
"Vlahovic: MV 6.04 ± 1.30; FV 6.86 + 2.84\n",
"Arnautovic: MV 6.19 ± 1.27; FV 7.20 + 3.21\n",
"Dia: MV 6.16 ± 1.34; FV 7.30 + 3.52\n",
"Dzeko: MV 6.03 ± 1.20; FV 6.77 + 2.55\n",
"Milik: MV 6.04 ± 1.15; FV 6.65 + 2.29\n",
"Nzola: MV 6.15 ± 1.37; FV 7.40 + 3.72\n",
"Beto: MV 6.18 ± 1.21; FV 7.14 + 3.04\n",
"Giroud: MV 6.00 ± 1.09; FV 6.54 + 2.07\n",
"Abraham: MV 6.07 ± 1.13; FV 6.75 + 2.37\n",
"Deulofeu: MV 6.43 ± 1.24; FV 7.30 + 2.82\n",
"Lauriente': MV 6.22 ± 1.29; FV 7.11 + 3.08\n",
"Simeone: MV 6.21 ± 1.25; FV 7.09 + 2.95\n",
"Lozano: MV 6.13 ± 1.01; FV 6.70 + 2.04\n",
"Correa: MV 5.87 ± 0.90; FV 6.19 + 1.48\n",
"Berardi: MV 6.31 ± 1.36; FV 7.49 + 3.74\n",
"Pedro: MV 6.02 ± 0.97; FV 6.36 + 1.64\n",
"Lukaku: MV 5.97 ± 1.16; FV 6.56 + 2.25\n",
"Sanabria: MV 6.18 ± 1.20; FV 7.04 + 2.83\n",
"Thauvin: MV 6.32 ± 1.11; FV 7.10 + 2.51\n",
"Cabral: MV 5.95 ± 1.02; FV 6.38 + 1.82\n",
"Hojlund: MV 5.97 ± 1.14; FV 6.49 + 2.13\n",
"Caprari: MV 5.89 ± 0.92; FV 6.15 + 1.47\n",
"Di Maria: MV 6.15 ± 1.22; FV 6.77 + 2.45\n",
"Piatek: MV 5.85 ± 0.96; FV 6.13 + 1.47\n",
"Rebic: MV 5.88 ± 1.04; FV 6.32 + 1.83\n",
"Bonazzoli: MV 5.98 ± 0.94; FV 6.25 + 1.49\n",
"Zapata D.: MV 5.93 ± 0.92; FV 6.20 + 1.38\n",
"Kouame': MV 5.95 ± 1.04; FV 6.35 + 1.79\n",
"Gonzalez N.: MV 5.96 ± 1.00; FV 6.33 + 1.70\n",
"Brekalo: MV 5.92 ± 1.07; FV 6.34 + 1.85\n",
"Mota: MV 5.95 ± 1.07; FV 6.41 + 1.95\n",
"Kean: MV 5.97 ± 1.23; FV 6.52 + 2.31\n",
"Okereke: MV 6.06 ± 1.15; FV 6.77 + 2.49\n",
"Ceesay: MV 6.07 ± 1.08; FV 6.69 + 2.22\n",
"Colombo: MV 6.01 ± 1.11; FV 6.47 + 1.97\n",
"Dessers: MV 6.09 ± 1.18; FV 6.90 + 2.73\n",
"Muriel: MV 5.96 ± 0.96; FV 6.07 + 1.26\n",
"Pinamonti: MV 5.81 ± 0.95; FV 6.16 + 1.57\n",
"Di Francesco F.: MV 6.06 ± 1.02; FV 6.46 + 1.78\n",
"Jovic: MV 5.82 ± 1.12; FV 6.33 + 1.99\n",
"Origi: MV 5.84 ± 0.89; FV 6.09 + 1.37\n",
"Caputo: MV 6.00 ± 1.15; FV 6.66 + 2.35\n",
"Boga: MV 6.19 ± 1.07; FV 6.74 + 2.02\n",
"Cambiaghi: MV 6.23 ± 1.09; FV 6.96 + 2.42\n",
"Alvarez A.: MV 5.97 ± 0.99; FV 6.33 + 1.70\n",
"Banda: MV 6.02 ± 0.76; FV 6.19 + 1.01\n",
"Ciofani D.: MV 6.08 ± 1.15; FV 6.87 + 2.63\n",
"Petagna: MV 5.90 ± 0.99; FV 6.20 + 1.60\n",
"Barrow: MV 6.01 ± 1.13; FV 6.46 + 2.06\n",
"Djuric: MV 5.88 ± 0.68; FV 5.98 + 0.70\n",
"Henry: MV 5.95 ± 1.08; FV 6.38 + 1.91\n",
"Success: MV 6.08 ± 0.92; FV 6.52 + 1.71\n",
"Gabbiadini: MV 5.89 ± 1.11; FV 6.34 + 1.94\n",
"Zirkzee: MV 5.98 ± 0.98; FV 6.36 + 1.68\n",
"Lammers: MV 5.81 ± 0.81; FV 5.97 + 1.17\n",
"Satriano: MV 5.86 ± 0.88; FV 6.03 + 1.24\n",
"Kallon: MV 5.82 ± 0.80; FV 5.97 + 1.07\n",
"Nestorovski: MV 6.13 ± 0.87; FV 6.69 + 1.76\n",
"Raspadori: MV 6.06 ± 1.02; FV 6.58 + 2.02\n",
"Botheim: MV 5.96 ± 0.96; FV 6.29 + 1.59\n",
"Gytkjaer: MV 5.80 ± 0.87; FV 6.01 + 1.27\n",
"Solbakken: MV 5.89 ± 0.95; FV 6.17 + 1.50\n",
"Lasagna: MV 5.78 ± 0.77; FV 5.87 + 0.97\n",
"Belotti: MV 5.86 ± 0.81; FV 6.02 + 1.19\n",
"Pellegri: MV 5.99 ± 0.99; FV 6.47 + 1.83\n",
"Buonaiuto: MV 5.99 ± 0.69; FV 6.11 + 0.83\n",
"Verde: MV 6.10 ± 1.16; FV 6.77 + 2.45\n",
"Destro: MV 6.03 ± 1.22; FV 6.64 + 2.40\n",
"Seck: MV 6.04 ± 0.66; FV 6.14 + 0.79\n",
"Sansone: MV 6.08 ± 1.07; FV 6.58 + 2.05\n",
"Quagliarella: MV 5.85 ± 0.74; FV 5.94 + 1.00\n",
"Defrel: MV 5.82 ± 0.89; FV 6.02 + 1.30\n",
"Pjaca: MV 5.89 ± 0.77; FV 5.99 + 0.90\n",
"Gaich: MV 5.83 ± 0.92; FV 6.07 + 1.32\n",
"Soule': MV 6.01 ± 1.04; FV 6.43 + 1.77\n",
"Tsadjout: MV 5.94 ± 0.94; FV 6.29 + 1.60\n",
"Piccoli: MV 5.80 ± 0.69; FV 5.82 + 0.69\n",
"Shomurodov: MV 5.95 ± 1.08; FV 6.49 + 2.07\n",
"Afena-Gyan: MV 5.75 ± 0.67; FV 5.70 + 0.65\n",
"Ngonge: MV 6.01 ± 1.12; FV 6.61 + 2.25\n",
"Karamoh: MV 6.08 ± 1.00; FV 6.71 + 2.13\n",
"Ibrahimovic: MV 6.10 ± 1.06; FV 6.83 + 2.36\n",
"Pussetto: MV 5.92 ± 1.05; FV 6.34 + 1.86\n",
"Cancellieri: MV 5.76 ± 0.64; FV 5.75 + 0.62\n",
"Valencia D.: MV 5.72 ± 0.59; FV 5.67 + 0.54\n",
"Oddei: MV 6.07 ± 0.81; FV 6.24 + 1.04\n",
"Braaf: MV 5.83 ± 0.78; FV 5.89 + 0.92\n",
"Raimondo: MV 5.88 ± 0.93; FV 5.93 + 1.07\n",
"Kaio Jorge: MV 5.81 ± 0.63; FV 5.83 + 0.65\n",
"De Luca: MV 5.87 ± 0.98; FV 5.96 + 1.36\n",
"Voelkerling Persson: MV 6.00 ± 0.65; FV 6.07 + 0.64\n",
"Montevago: MV 5.83 ± 0.81; FV 5.97 + 1.12\n",
"Krollis: MV 6.02 ± 0.98; FV 6.25 + 1.38\n",
"Vivaldo: MV 6.08 ± 0.78; FV 6.24 + 1.01\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>role</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>starter</th>\n",
" <th>vote%</th>\n",
" <th>MV</th>\n",
" <th>MV std</th>\n",
" <th>FV</th>\n",
" <th>FV std</th>\n",
" <th>MV loc</th>\n",
" <th>MV scale</th>\n",
" <th>MV skewness</th>\n",
" <th>MV tailweight</th>\n",
" <th>FV loc</th>\n",
" <th>FV scale</th>\n",
" <th>FV skewness</th>\n",
" <th>FV tailweight</th>\n",
" <th>Clean Sheet %</th>\n",
" </tr>\n",
" <tr>\n",
" <th>player</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Musso</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>0.55</td>\n",
" <td>55</td>\n",
" <td>6.254405</td>\n",
" <td>0.411209</td>\n",
" <td>5.035751</td>\n",
" <td>0.342500</td>\n",
" <td>5.984879</td>\n",
" <td>0.167509</td>\n",
" <td>0.880999</td>\n",
" <td>1.599276</td>\n",
" <td>5.014495</td>\n",
" <td>0.525508</td>\n",
" <td>0.029776</td>\n",
" <td>0.913046</td>\n",
" <td>8.038829</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rossi F.</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>0.00</td>\n",
" <td>1</td>\n",
" <td>6.231914</td>\n",
" <td>0.405208</td>\n",
" <td>4.289062</td>\n",
" <td>0.420042</td>\n",
" <td>5.969362</td>\n",
" <td>0.175638</td>\n",
" <td>0.840497</td>\n",
" <td>1.599256</td>\n",
" <td>4.279346</td>\n",
" <td>0.646178</td>\n",
" <td>0.011079</td>\n",
" <td>0.935691</td>\n",
" <td>1.963351</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sportiello</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>0.45</td>\n",
" <td>5</td>\n",
" <td>6.254370</td>\n",
" <td>0.411102</td>\n",
" <td>4.214338</td>\n",
" <td>0.326933</td>\n",
" <td>5.984973</td>\n",
" <td>0.167680</td>\n",
" <td>0.880164</td>\n",
" <td>1.599276</td>\n",
" <td>4.193475</td>\n",
" <td>0.500380</td>\n",
" <td>0.030683</td>\n",
" <td>0.902728</td>\n",
" <td>1.160084</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zappacosta</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>80</td>\n",
" <td>6.056584</td>\n",
" <td>0.466738</td>\n",
" <td>6.304006</td>\n",
" <td>0.701212</td>\n",
" <td>5.997294</td>\n",
" <td>0.535322</td>\n",
" <td>0.081726</td>\n",
" <td>1.021092</td>\n",
" <td>5.791334</td>\n",
" <td>0.955869</td>\n",
" <td>0.377559</td>\n",
" <td>1.599911</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Scalvini</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>1.00</td>\n",
" <td>90</td>\n",
" <td>5.989745</td>\n",
" <td>0.493339</td>\n",
" <td>6.162027</td>\n",
" <td>0.656128</td>\n",
" <td>6.000084</td>\n",
" <td>0.586076</td>\n",
" <td>-0.013022</td>\n",
" <td>0.993997</td>\n",
" <td>5.786531</td>\n",
" <td>1.002288</td>\n",
" <td>0.271447</td>\n",
" <td>1.599920</td>\n",
" <td>0.000000</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",
" </tr>\n",
" <tr>\n",
" <th>Gaich</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>60</td>\n",
" <td>5.825243</td>\n",
" <td>0.460409</td>\n",
" <td>6.066322</td>\n",
" <td>0.662139</td>\n",
" <td>5.738146</td>\n",
" <td>0.518114</td>\n",
" <td>0.123950</td>\n",
" <td>1.051589</td>\n",
" <td>5.519838</td>\n",
" <td>0.823035</td>\n",
" <td>0.455078</td>\n",
" <td>1.599903</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Djuric</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>1.00</td>\n",
" <td>80</td>\n",
" <td>5.880368</td>\n",
" <td>0.341485</td>\n",
" <td>5.978157</td>\n",
" <td>0.351269</td>\n",
" <td>5.841517</td>\n",
" <td>0.396984</td>\n",
" <td>0.072532</td>\n",
" <td>1.175740</td>\n",
" <td>5.826691</td>\n",
" <td>0.577211</td>\n",
" <td>0.193079</td>\n",
" <td>1.599953</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kallon</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>40</td>\n",
" <td>5.824849</td>\n",
" <td>0.398117</td>\n",
" <td>5.971637</td>\n",
" <td>0.533920</td>\n",
" <td>5.761679</td>\n",
" <td>0.453794</td>\n",
" <td>0.102902</td>\n",
" <td>1.116911</td>\n",
" <td>5.576400</td>\n",
" <td>0.722054</td>\n",
" <td>0.384482</td>\n",
" <td>1.599924</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Braaf</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>35</td>\n",
" <td>5.834104</td>\n",
" <td>0.389789</td>\n",
" <td>5.887941</td>\n",
" <td>0.461835</td>\n",
" <td>5.792829</td>\n",
" <td>0.452717</td>\n",
" <td>0.067486</td>\n",
" <td>1.119556</td>\n",
" <td>5.624584</td>\n",
" <td>0.706353</td>\n",
" <td>0.270221</td>\n",
" <td>1.599937</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lasagna</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Lecce</td>\n",
" <td>0</td>\n",
" <td>0.00</td>\n",
" <td>0</td>\n",
" <td>5.781860</td>\n",
" <td>0.386175</td>\n",
" <td>5.867917</td>\n",
" <td>0.485962</td>\n",
" <td>5.726385</td>\n",
" <td>0.442926</td>\n",
" <td>0.092660</td>\n",
" <td>1.132638</td>\n",
" <td>5.528002</td>\n",
" <td>0.680042</td>\n",
" <td>0.354367</td>\n",
" <td>1.599930</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>526 rows × 19 columns</p>\n",
"</div>"
],
"text/plain": [
" role team oppteam home starter vote% MV MV std \\\n",
"player \n",
"Musso P Atalanta Juventus 1 0.55 55 6.254405 0.411209 \n",
"Rossi F. P Atalanta Juventus 1 0.00 1 6.231914 0.405208 \n",
"Sportiello P Atalanta Juventus 1 0.45 5 6.254370 0.411102 \n",
"Zappacosta D Atalanta Juventus 1 1.00 80 6.056584 0.466738 \n",
"Scalvini D Atalanta Juventus 1 1.00 90 5.989745 0.493339 \n",
"... ... ... ... ... ... ... ... ... \n",
"Gaich A Verona Lecce 0 0.00 60 5.825243 0.460409 \n",
"Djuric A Verona Lecce 0 1.00 80 5.880368 0.341485 \n",
"Kallon A Verona Lecce 0 0.00 40 5.824849 0.398117 \n",
"Braaf A Verona Lecce 0 0.00 35 5.834104 0.389789 \n",
"Lasagna A Verona Lecce 0 0.00 0 5.781860 0.386175 \n",
"\n",
" FV FV std MV loc MV scale MV skewness \\\n",
"player \n",
"Musso 5.035751 0.342500 5.984879 0.167509 0.880999 \n",
"Rossi F. 4.289062 0.420042 5.969362 0.175638 0.840497 \n",
"Sportiello 4.214338 0.326933 5.984973 0.167680 0.880164 \n",
"Zappacosta 6.304006 0.701212 5.997294 0.535322 0.081726 \n",
"Scalvini 6.162027 0.656128 6.000084 0.586076 -0.013022 \n",
"... ... ... ... ... ... \n",
"Gaich 6.066322 0.662139 5.738146 0.518114 0.123950 \n",
"Djuric 5.978157 0.351269 5.841517 0.396984 0.072532 \n",
"Kallon 5.971637 0.533920 5.761679 0.453794 0.102902 \n",
"Braaf 5.887941 0.461835 5.792829 0.452717 0.067486 \n",
"Lasagna 5.867917 0.485962 5.726385 0.442926 0.092660 \n",
"\n",
" MV tailweight FV loc FV scale FV skewness FV tailweight \\\n",
"player \n",
"Musso 1.599276 5.014495 0.525508 0.029776 0.913046 \n",
"Rossi F. 1.599256 4.279346 0.646178 0.011079 0.935691 \n",
"Sportiello 1.599276 4.193475 0.500380 0.030683 0.902728 \n",
"Zappacosta 1.021092 5.791334 0.955869 0.377559 1.599911 \n",
"Scalvini 0.993997 5.786531 1.002288 0.271447 1.599920 \n",
"... ... ... ... ... ... \n",
"Gaich 1.051589 5.519838 0.823035 0.455078 1.599903 \n",
"Djuric 1.175740 5.826691 0.577211 0.193079 1.599953 \n",
"Kallon 1.116911 5.576400 0.722054 0.384482 1.599924 \n",
"Braaf 1.119556 5.624584 0.706353 0.270221 1.599937 \n",
"Lasagna 1.132638 5.528002 0.680042 0.354367 1.599930 \n",
"\n",
" Clean Sheet % \n",
"player \n",
"Musso 8.038829 \n",
"Rossi F. 1.963351 \n",
"Sportiello 1.160084 \n",
"Zappacosta 0.000000 \n",
"Scalvini 0.000000 \n",
"... ... \n",
"Gaich 0.000000 \n",
"Djuric 0.000000 \n",
"Kallon 0.000000 \n",
"Braaf 0.000000 \n",
"Lasagna 0.000000 \n",
"\n",
"[526 rows x 19 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"matchday_out = 34\n",
"\n",
"output = pd.DataFrame(columns = ['player', 'role', 'team', 'oppteam', 'home', 'starter', 'vote%', 'MV', 'MV std', 'FV', 'FV std', 'MV loc', 'MV scale', 'MV skewness', 'MV tailweight', 'FV loc', 'FV scale', 'FV skewness', 'FV tailweight', 'Clean Sheet %'])\n",
"\n",
"for i in range(players.shape[0]):\n",
" try:\n",
" [player, team, oppteam, home] = PlayerMatch(players.index[i], matchday_out)\n",
" \n",
" [mean, std, dist] = vote_predict_NNb(player, team, oppteam, home = home, log = 1)\n",
" \n",
" role = players['r'][player] \n",
" \n",
" starter = 0\n",
" voteperc = 0\n",
" \n",
" cs = 0\n",
" if(role == 'P'):\n",
" cs = dist[2].probs.numpy()[0] * 100\n",
" \n",
" if(player in probables.index):\n",
" starter = probables['starter'][player]\n",
" voteperc = probables['percentage'][player]\n",
" \n",
" row = [player, role, team, oppteam, home, \n",
" starter, voteperc, \n",
" mean[0], std[0], \n",
" mean[1], std[1], \n",
" dist[0].loc.numpy()[0], dist[0].scale.numpy()[0], \n",
" dist[0].skewness.numpy()[0], dist[0].tailweight.numpy()[0], \n",
" dist[1].loc.numpy()[0], dist[1].scale.numpy()[0], \n",
" dist[1].skewness.numpy()[0], dist[1].tailweight.numpy()[0],\n",
" cs]\n",
" \n",
" row_df = pd.DataFrame(data = [row], columns = output.columns)\n",
" \n",
" output = pd.concat([output, row_df])\n",
" \n",
" except:\n",
" print(players.index[i] + ' no data')\n",
"\n",
"output = output.set_index('player')\n",
"\n",
"output = output.sort_values(['team', 'role', 'FV'], ascending = [True, False, False])\n",
"#output.to_excel('outputs/pred_matchday_' + str(matchday_out) + '.xlsx')\n",
"\n",
"output"
]
},
{
"cell_type": "code",
"execution_count": 47,
"id": "6befd611",
"metadata": {},
"outputs": [],
"source": [
"import shutil\n",
"\n",
"template_file = 'outputs/pred_matchday_base.xlsx'\n",
"dest_file = 'outputs/pred_matchday_' + str(matchday_out) + '.xlsx'\n",
"\n",
"shutil.copyfile(template_file, dest_file)\n",
"\n",
"with pd.ExcelWriter(dest_file, mode = 'a', engine=\"openpyxl\", if_sheet_exists = 'replace') as writer: \n",
" output.to_excel(writer, sheet_name='data')"
]
},
{
"cell_type": "markdown",
"id": "eed7a7ac",
"metadata": {},
"source": [
"Predict average Serie A performance for each player"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "2b637a15",
"metadata": {},
"outputs": [],
"source": [
"gk_starters = ['Maignan', 'Ochoa', 'Silvestri', 'Consigli', 'Provedel', 'Di Gregorio', 'Meret', 'Milinkovic-Savic V.',\n",
" 'Terracciano', 'Onana', 'Szczesny', 'Skorupski', 'Vicario', 'Musso', 'Carnesecchi', 'Rui Patricio',\n",
" 'Montipo\\'', 'Falcone', 'Dragowski', 'Audero']"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "60d73507",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Meret (6.25, 0.41); (5.72, 0.53)\n",
"Provedel (6.19, 0.38); (5.54, 0.56)\n",
"Vicario (6.25, 0.41); (5.39, 0.57)\n",
"Szczesny (6.25, 0.41); (6.02, 0.47)\n",
"Falcone (6.17, 0.38); (4.61, 0.47)\n",
"Silvestri (6.25, 0.41); (5.65, 0.60)\n",
"Rui Patricio (6.19, 0.40); (5.37, 0.64)\n",
"Onana (6.17, 0.38); (5.20, 0.58)\n",
"Sepe (6.21, 0.40); (4.99, 0.54)\n",
"Milinkovic-Savic V. (5.98, 0.36); (4.91, 0.74)\n",
"Musso (6.25, 0.41); (5.55, 0.52)\n",
"Maignan (6.25, 0.41); (4.89, 0.50)\n",
"Carnesecchi (6.25, 0.41); (5.31, 0.59)\n",
"Di Gregorio (6.18, 0.39); (5.11, 0.72)\n",
"Audero (6.25, 0.41); (4.96, 0.53)\n",
"Montipo' (6.19, 0.38); (4.69, 0.39)\n",
"Skorupski (6.25, 0.41); (5.51, 0.55)\n",
"Consigli (6.24, 0.40); (5.42, 0.63)\n",
"Dragowski (6.25, 0.41); (5.46, 0.63)\n",
"Terracciano (6.06, 0.39); (4.65, 0.75)\n",
"Tatarusanu (6.25, 0.41); (4.93, 0.79)\n",
"Handanovic (6.25, 0.41); (5.99, 0.51)\n",
"Sportiello (6.22, 0.39); (4.55, 0.40)\n",
"Perin (6.25, 0.41); (5.97, 0.45)\n",
"Zoet (6.25, 0.41); (6.03, 0.51)\n",
"Ochoa (6.25, 0.41); (5.71, 0.56)\n",
"Pegolo (6.25, 0.41); (4.75, 0.58)\n",
"Gollini (6.25, 0.41); (5.89, 0.47)\n",
"Mirante no data\n",
"Sarr M. no data\n",
"Lamanna no data\n",
"Ujkani no data\n",
"Berisha (6.25, 0.41); (5.85, 0.49)\n",
"Marchetti (6.12, 0.42); (3.84, 0.71)\n",
"Perilli (6.25, 0.41); (5.93, 0.47)\n",
"Padelli (6.15, 0.39); (4.19, 0.64)\n",
"Perisan (6.25, 0.41); (5.26, 0.64)\n",
"Bardi (6.25, 0.41); (5.91, 0.46)\n",
"Cordaz no data\n",
"Pinsoglio (6.09, 0.40); (4.30, 0.68)\n",
"Fiorillo (6.22, 0.39); (3.50, 0.57)\n",
"Cragno (6.25, 0.41); (5.37, 0.80)\n",
"Sirigu (6.25, 0.41); (5.69, 0.59)\n",
"Cerofolini (6.25, 0.41); (5.84, 0.48)\n",
"Rossi F. (5.91, 0.38); (4.05, 0.56)\n",
"Ravaglia F. (6.25, 0.41); (5.74, 0.46)\n",
"Brancolini no data\n",
"Bleve no data\n",
"Berardi A. (6.25, 0.41); (4.88, 0.53)\n",
"Russo A. no data\n",
"Gemello (6.25, 0.41); (5.95, 0.45)\n",
"Ravaglia (6.25, 0.41); (4.65, 0.53)\n",
"Boer no data\n",
"Adamonis no data\n",
"Marfella (6.25, 0.41); (5.79, 0.47)\n",
"Zovko (6.19, 0.41); (4.05, 0.74)\n",
"Piana no data\n",
"Bagnolini no data\n",
"Luis Maximiano (5.59, 0.47); (5.18, 0.65)\n",
"Svilar no data\n",
"Sorrentino A. no data\n",
"Ciezkowski no data\n",
"Saro no data\n",
"Vasquez D. no data\n",
"Turk (6.25, 0.41); (4.68, 0.60)\n",
"Dimarco (6.16, 0.45); (6.56, 0.78)\n",
"Smalling (6.21, 0.48); (6.56, 0.78)\n",
"Doig (5.99, 0.53); (6.29, 0.87)\n",
"Carlos Augusto (6.08, 0.52); (6.53, 0.96)\n",
"Kim (6.26, 0.49); (6.58, 0.79)\n",
"Posch (6.11, 0.55); (6.60, 1.04)\n",
"Di Lorenzo (6.21, 0.47); (6.48, 0.71)\n",
"Danilo (6.22, 0.48); (6.58, 0.78)\n",
"Hernandez T. (6.10, 0.54); (6.48, 0.91)\n",
"Udogie (6.04, 0.53); (6.41, 0.91)\n",
"Parisi (6.09, 0.48); (6.41, 0.76)\n",
"Mario Rui (6.13, 0.48); (6.23, 0.59)\n",
"Romagnoli (6.18, 0.45); (6.42, 0.66)\n",
"Bastoni S. (6.06, 0.46); (6.36, 0.76)\n",
"Mazzocchi (6.14, 0.44); (6.51, 0.73)\n",
"Valeri (6.07, 0.37); (6.32, 0.57)\n",
"Tomori (6.09, 0.44); (6.25, 0.56)\n",
"Scalvini (6.04, 0.51); (6.29, 0.74)\n",
"Toloi (6.03, 0.49); (6.24, 0.65)\n",
"Demiral (6.02, 0.44); (6.21, 0.60)\n",
"Maehle (5.94, 0.49); (6.14, 0.72)\n",
"Dumfries (5.91, 0.45); (6.07, 0.64)\n",
"Baschirotto (6.15, 0.49); (6.47, 0.77)\n",
"Bijol (5.94, 0.53); (6.16, 0.78)\n",
"Schuurs (6.11, 0.40); (6.16, 0.46)\n",
"Juan Jesus (6.16, 0.36); (6.39, 0.57)\n",
"Depaoli (5.95, 0.45); (6.09, 0.63)\n",
"Mancini (6.12, 0.40); (6.30, 0.54)\n",
"Ibanez (5.84, 0.54); (5.95, 0.68)\n",
"Rodrigo Becao (6.04, 0.49); (6.28, 0.72)\n",
"Ebuehi (6.08, 0.41); (6.38, 0.64)\n",
"Gosens (5.99, 0.39); (6.26, 0.61)\n",
"Darmian (6.05, 0.37); (6.24, 0.52)\n",
"Reca (5.98, 0.46); (6.12, 0.62)\n",
"Bremer (6.08, 0.52); (6.40, 0.81)\n",
"Sernicola (5.93, 0.50); (6.14, 0.76)\n",
"Rrahmani (6.23, 0.49); (6.52, 0.75)\n",
"Vojvoda (5.90, 0.42); (5.95, 0.50)\n",
"Holm (5.98, 0.43); (6.13, 0.60)\n",
"Bastoni (6.07, 0.41); (6.15, 0.47)\n",
"Milenkovic (5.99, 0.46); (6.15, 0.65)\n",
"Kalulu (5.81, 0.52); (5.84, 0.60)\n",
"Martinez Quarta (5.95, 0.46); (6.04, 0.56)\n",
"Casale (6.07, 0.41); (6.22, 0.52)\n",
"Perez N. (6.07, 0.47); (6.30, 0.67)\n",
"Olivera (6.15, 0.37); (6.46, 0.63)\n",
"Izzo (6.03, 0.43); (6.18, 0.56)\n",
"Luperto (5.88, 0.48); (5.89, 0.48)\n",
"Skriniar (5.92, 0.41); (5.94, 0.41)\n",
"Rodriguez R. (6.02, 0.36); (5.99, 0.34)\n",
"Marusic (6.03, 0.39); (6.04, 0.40)\n",
"Lazzari (6.04, 0.37); (6.10, 0.41)\n",
"Kyriakopoulos (5.99, 0.43); (6.07, 0.51)\n",
"Ampadu (5.84, 0.45); (5.82, 0.47)\n",
"Ismajli (5.92, 0.42); (5.89, 0.40)\n",
"Llorente D. (5.96, 0.48); (6.11, 0.65)\n",
"Cambiaso (5.98, 0.37); (6.00, 0.38)\n",
"Hysaj (6.00, 0.31); (5.97, 0.27)\n",
"Biraghi (6.12, 0.43); (6.41, 0.65)\n",
"Medel (6.02, 0.34); (5.96, 0.31)\n",
"Bonucci (6.17, 0.51); (6.56, 0.85)\n",
"Calabria (5.96, 0.50); (6.18, 0.74)\n",
"Acerbi (6.02, 0.39); (6.02, 0.39)\n",
"Spinazzola (6.12, 0.42); (6.42, 0.65)\n",
"Lykogiannis (6.00, 0.38); (6.12, 0.46)\n",
"Pellegrini Lu. (6.07, 0.37); (6.16, 0.43)\n",
"Djidji (5.90, 0.40); (5.95, 0.47)\n",
"Lazaro (6.00, 0.43); (6.10, 0.51)\n",
"Augello (5.91, 0.44); (6.09, 0.66)\n",
"Gallo (5.86, 0.40); (5.84, 0.40)\n",
"Singo (5.93, 0.44); (6.08, 0.61)\n",
"Mari' (5.89, 0.50); (5.98, 0.58)\n",
"Caldirola (5.95, 0.51); (6.14, 0.74)\n",
"Dodo' (5.89, 0.51); (6.01, 0.67)\n",
"De Vrij (5.97, 0.41); (6.02, 0.43)\n",
"Patric (6.07, 0.39); (6.05, 0.39)\n",
"Faraoni (5.96, 0.46); (6.10, 0.66)\n",
"Ceccherini (5.82, 0.55); (5.95, 0.75)\n",
"Hateboer (5.88, 0.47); (5.98, 0.67)\n",
"Rogerio (5.82, 0.39); (5.79, 0.39)\n",
"Umtiti (5.89, 0.46); (5.91, 0.49)\n",
"Aina (6.00, 0.47); (6.20, 0.69)\n",
"Birindelli (5.85, 0.35); (5.83, 0.36)\n",
"Lucumi' (5.95, 0.39); (5.94, 0.39)\n",
"Ehizibue (5.88, 0.45); (6.00, 0.66)\n",
"Bianchetti (5.76, 0.47); (5.75, 0.58)\n",
"Ferrari G. (5.84, 0.53); (5.91, 0.66)\n",
"Fazio (5.66, 0.61); (5.71, 0.68)\n",
"Gravillon (5.95, 0.38); (5.91, 0.37)\n",
"Buongiorno (6.08, 0.45); (6.29, 0.62)\n",
"Gunter (5.78, 0.49); (5.73, 0.49)\n",
"Troost-Ekong (5.83, 0.46); (5.82, 0.46)\n",
"Soumaoro (5.95, 0.44); (5.96, 0.44)\n",
"Ceccaroni (5.86, 0.52); (5.94, 0.62)\n",
"Pongracic (5.94, 0.39); (5.91, 0.36)\n",
"Soppy (5.86, 0.38); (5.88, 0.39)\n",
"Gendrey (5.90, 0.34); (5.88, 0.29)\n",
"Hien (5.84, 0.44); (5.80, 0.44)\n",
"Ferrari A. (5.78, 0.48); (5.74, 0.53)\n",
"Masina (6.01, 0.37); (6.37, 0.68)\n",
"Zappacosta (6.09, 0.48); (6.42, 0.78)\n",
"Gyomber (5.92, 0.40); (5.89, 0.38)\n",
"Alex Sandro (5.83, 0.47); (5.78, 0.45)\n",
"Pezzella Giu. (5.88, 0.34); (5.87, 0.30)\n",
"Bereszynski (5.87, 0.35); (5.85, 0.33)\n",
"Venuti (5.83, 0.37); (5.83, 0.36)\n",
"Palomino (6.01, 0.44); (6.11, 0.51)\n",
"Nuytinck (5.84, 0.46); (5.83, 0.48)\n",
"Marlon (5.81, 0.36); (5.77, 0.34)\n",
"Magnani (5.83, 0.49); (5.81, 0.51)\n",
"Colley (5.79, 0.52); (5.81, 0.58)\n",
"Nikolaou (5.75, 0.38); (5.67, 0.37)\n",
"Terzic (6.04, 0.33); (6.17, 0.42)\n",
"Igor (5.82, 0.47); (5.76, 0.48)\n",
"Toljan (5.76, 0.42); (5.70, 0.42)\n",
"Zortea (5.86, 0.42); (5.89, 0.51)\n",
"Dawidowicz (5.84, 0.46); (5.87, 0.57)\n",
"Celik (5.85, 0.42); (5.85, 0.44)\n",
"Bellanova (5.93, 0.41); (6.01, 0.49)\n",
"Erlic (5.81, 0.46); (5.77, 0.44)\n",
"Ballo-Toure' (6.09, 0.38); (6.36, 0.57)\n",
"Dest (5.77, 0.41); (5.77, 0.42)\n",
"Stojanovic (5.78, 0.39); (5.74, 0.41)\n",
"Amian (5.81, 0.37); (5.77, 0.38)\n",
"Bradaric (5.83, 0.45); (5.82, 0.50)\n",
"Daniliuc (5.79, 0.48); (5.78, 0.54)\n",
"Zima (5.92, 0.38); (5.93, 0.37)\n",
"De Winter (5.79, 0.42); (5.73, 0.39)\n",
"Quagliata (5.86, 0.41); (5.83, 0.41)\n",
"Ebosse (5.79, 0.33); (5.74, 0.30)\n",
"Aiwu (5.90, 0.46); (5.95, 0.56)\n",
"Lochoshvili (5.89, 0.45); (5.93, 0.59)\n",
"Bronn (5.76, 0.38); (5.72, 0.35)\n",
"Thiaw (5.87, 0.49); (5.90, 0.50)\n",
"Zeefuik (5.90, 0.43); (5.92, 0.48)\n",
"Romagnoli S. (5.89, 0.55); (6.09, 0.79)\n",
"Ghiglione (5.90, 0.43); (6.02, 0.63)\n",
"Rugani (6.01, 0.30); (5.94, 0.24)\n",
"De Sciglio (5.88, 0.31); (5.89, 0.24)\n",
"Djimsiti (5.98, 0.38); (5.98, 0.36)\n",
"Caldara (5.74, 0.49); (5.67, 0.51)\n",
"Karsdorp (5.92, 0.38); (5.94, 0.37)\n",
"Marchizza (5.81, 0.41); (5.78, 0.42)\n",
"Kjaer (5.99, 0.37); (5.94, 0.33)\n",
"Okoli (5.77, 0.44); (5.75, 0.42)\n",
"Amione (5.77, 0.48); (5.73, 0.57)\n",
"Ruggeri (5.91, 0.34); (5.91, 0.31)\n",
"Zanoli (5.99, 0.45); (6.19, 0.66)\n",
"Wisniewski (5.75, 0.34); (5.69, 0.31)\n",
"Radovanovic (5.70, 0.38); (5.65, 0.37)\n",
"Dermaku (5.93, 0.44); (5.99, 0.51)\n",
"D'ambrosio (6.05, 0.38); (6.08, 0.41)\n",
"De Silvestri (5.93, 0.47); (6.07, 0.67)\n",
"Chiriches (5.79, 0.47); (5.75, 0.46)\n",
"Murru (5.72, 0.38); (5.65, 0.38)\n",
"Bonifazi (5.82, 0.40); (5.75, 0.39)\n",
"Donati (5.76, 0.59); (5.93, 0.84)\n",
"Walukiewicz (6.00, 0.32); (5.95, 0.28)\n",
"Ranieri L. (5.90, 0.37); (5.92, 0.43)\n",
"Gabbia (5.72, 0.44); (5.65, 0.44)\n",
"Kumbulla (5.78, 0.48); (5.73, 0.50)\n",
"Adopo (5.76, 0.35); (5.71, 0.34)\n",
"Pirola (5.82, 0.56); (5.94, 0.75)\n",
"Lovato (5.71, 0.48); (5.66, 0.45)\n",
"Tuia (6.03, 0.29); (5.97, 0.24)\n",
"Ferrer (5.88, 0.45); (5.90, 0.48)\n",
"Antov (5.66, 0.52); (5.58, 0.51)\n",
"Vasquez (5.81, 0.38); (5.75, 0.36)\n",
"Ruan (5.81, 0.48); (5.74, 0.46)\n",
"Ostigard (6.07, 0.32); (6.01, 0.29)\n",
"Coppola D. (5.85, 0.35); (5.80, 0.32)\n",
"Cacace (5.73, 0.38); (5.67, 0.35)\n",
"Gatti (6.06, 0.39); (6.03, 0.39)\n",
"Gila (6.03, 0.41); (6.06, 0.43)\n",
"Bayeye (5.96, 0.45); (6.04, 0.53)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sambia (5.87, 0.37); (5.89, 0.35)\n",
"Moutinho J. (5.82, 0.39); (5.78, 0.40)\n",
"Conti (5.88, 0.42); (5.96, 0.56)\n",
"Marrone (5.63, 0.43); (5.56, 0.45)\n",
"Tonelli (5.80, 0.43); (5.75, 0.41)\n",
"Murillo (5.69, 0.41); (5.57, 0.40)\n",
"Radu (5.80, 0.47); (5.75, 0.42)\n",
"Paletta (5.91, 0.45); (6.00, 0.56)\n",
"Florenzi (6.08, 0.37); (6.22, 0.46)\n",
"Sala (5.85, 0.35); (5.86, 0.37)\n",
"Fares (5.84, 0.37); (5.84, 0.40)\n",
"Romagna (5.90, 0.45); (5.93, 0.52)\n",
"Cassandro (5.93, 0.44); (5.98, 0.50)\n",
"Muldur (5.78, 0.39); (5.73, 0.40)\n",
"Amey (6.04, 0.42); (6.15, 0.51)\n",
"Zanotti (5.93, 0.44); (6.00, 0.52)\n",
"Ebosele (5.93, 0.32); (5.93, 0.28)\n",
"Buta (5.93, 0.44); (6.00, 0.51)\n",
"Abankwah (5.91, 0.43); (5.95, 0.49)\n",
"Guessand A. (5.93, 0.44); (6.00, 0.51)\n",
"Cabal (5.95, 0.33); (5.91, 0.28)\n",
"Sosa (5.61, 0.44); (5.54, 0.46)\n",
"Guarino (5.91, 0.45); (5.96, 0.52)\n",
"Carboni F. (6.02, 0.42); (6.11, 0.49)\n",
"Zaccagni (6.39, 0.58); (7.21, 1.33)\n",
"Kvaratskhelia (6.49, 0.66); (7.39, 1.52)\n",
"Milinkovic-Savic (6.15, 0.57); (6.84, 1.23)\n",
"Barella (6.19, 0.52); (6.76, 1.03)\n",
"Zielinski (6.23, 0.49); (6.71, 0.89)\n",
"Luis Alberto (6.27, 0.51); (6.89, 1.04)\n",
"Strefezza (6.26, 0.52); (6.95, 1.12)\n",
"Felipe Anderson (6.24, 0.57); (6.99, 1.27)\n",
"Koopmeiners (6.20, 0.55); (6.82, 1.12)\n",
"Calhanoglu (6.22, 0.45); (6.69, 0.83)\n",
"Frattesi (6.15, 0.56); (6.72, 1.09)\n",
"Diaz B. (6.11, 0.61); (6.72, 1.20)\n",
"Vlasic (6.12, 0.52); (6.63, 0.95)\n",
"Zambo Anguissa (6.22, 0.47); (6.58, 0.78)\n",
"Elmas (6.19, 0.48); (6.74, 0.94)\n",
"Miranchuk (6.18, 0.52); (6.74, 0.98)\n",
"Samardzic (6.09, 0.53); (6.60, 1.01)\n",
"Pereyra (6.08, 0.57); (6.61, 1.10)\n",
"Politano (6.20, 0.40); (6.69, 0.81)\n",
"Rabiot (6.25, 0.59); (6.99, 1.31)\n",
"Ciurria (6.05, 0.54); (6.54, 1.02)\n",
"Lazovic (6.15, 0.50); (6.65, 0.92)\n",
"Lobotka (6.18, 0.39); (6.43, 0.61)\n",
"Radonjic (6.14, 0.49); (6.62, 0.89)\n",
"Ferguson (6.12, 0.43); (6.48, 0.73)\n",
"Bonaventura (6.14, 0.46); (6.56, 0.80)\n",
"Pessina (6.07, 0.48); (6.39, 0.78)\n",
"Tonali (6.10, 0.53); (6.50, 0.91)\n",
"Kostic (6.14, 0.50); (6.62, 0.91)\n",
"Baldanzi (6.13, 0.47); (6.58, 0.86)\n",
"Lovric (6.13, 0.47); (6.61, 0.87)\n",
"Pellegrini Lo. (6.06, 0.57); (6.58, 1.10)\n",
"El Shaarawy (6.19, 0.44); (6.75, 0.90)\n",
"Orsolini (6.23, 0.64); (7.11, 1.52)\n",
"Ikone' (6.00, 0.54); (6.42, 0.95)\n",
"Candreva (6.07, 0.50); (6.43, 0.84)\n",
"Bennacer (6.11, 0.41); (6.36, 0.59)\n",
"Pasalic (6.00, 0.54); (6.43, 0.97)\n",
"Mkhitaryan (6.05, 0.46); (6.41, 0.77)\n",
"Colpani (6.01, 0.41); (6.38, 0.74)\n",
"Pogba (6.00, 0.32); (5.99, 0.29)\n",
"Chiesa (6.03, 0.41); (6.24, 0.59)\n",
"Bandinelli (5.93, 0.41); (6.04, 0.58)\n",
"Matic (6.12, 0.39); (6.39, 0.60)\n",
"Fagioli (6.07, 0.49); (6.41, 0.83)\n",
"Messias (6.01, 0.55); (6.52, 1.02)\n",
"Arslan (5.91, 0.35); (5.96, 0.37)\n",
"Ricci S. (6.09, 0.42); (6.30, 0.58)\n",
"Ranocchia F. (6.05, 0.40); (6.35, 0.65)\n",
"Verdi (6.15, 0.57); (6.82, 1.21)\n",
"Sensi (6.03, 0.52); (6.39, 0.91)\n",
"Barak (5.90, 0.45); (6.10, 0.69)\n",
"Soriano (6.03, 0.40); (6.28, 0.61)\n",
"Dominguez (6.15, 0.48); (6.54, 0.84)\n",
"Vilhena (5.91, 0.48); (6.09, 0.71)\n",
"Brozovic (6.13, 0.48); (6.46, 0.76)\n",
"Cristante (5.98, 0.41); (6.10, 0.52)\n",
"Thorstvedt (5.97, 0.45); (6.23, 0.71)\n",
"De Ketelaere (5.79, 0.37); (5.80, 0.40)\n",
"Saponara (6.04, 0.51); (6.47, 0.90)\n",
"Vecino (6.00, 0.45); (6.18, 0.63)\n",
"Locatelli (6.08, 0.40); (6.19, 0.48)\n",
"Zaniolo (5.92, 0.50); (6.11, 0.78)\n",
"Duda (5.87, 0.33); (5.85, 0.33)\n",
"Maldini (5.97, 0.44); (6.30, 0.74)\n",
"Marin (5.91, 0.51); (6.07, 0.71)\n",
"Zalewski (6.02, 0.37); (6.14, 0.46)\n",
"Bajrami (6.08, 0.52); (6.58, 0.99)\n",
"Coulibaly L. (5.88, 0.55); (6.10, 0.79)\n",
"Gonzalez J. (5.98, 0.44); (6.15, 0.65)\n",
"De Roon (6.07, 0.45); (6.32, 0.67)\n",
"Mandragora (5.96, 0.46); (6.12, 0.67)\n",
"Wijnaldum (6.13, 0.54); (6.72, 1.06)\n",
"Bourabia (5.94, 0.41); (6.03, 0.52)\n",
"Sottil (6.03, 0.47); (6.32, 0.74)\n",
"Aebischer (5.92, 0.39); (6.05, 0.54)\n",
"Ederson D.s. (5.93, 0.43); (6.04, 0.56)\n",
"Miretti (5.95, 0.36); (6.05, 0.42)\n",
"Blin (5.95, 0.38); (6.01, 0.45)\n",
"Hjulmand (5.96, 0.43); (6.00, 0.47)\n",
"Cataldi (6.01, 0.35); (6.02, 0.35)\n",
"Djuricic (5.83, 0.46); (5.97, 0.65)\n",
"Linetty (5.95, 0.43); (6.06, 0.61)\n",
"Haas (5.91, 0.38); (6.02, 0.52)\n",
"Walace (5.94, 0.38); (5.95, 0.38)\n",
"Agudelo (5.91, 0.35); (5.96, 0.41)\n",
"Pobega (6.04, 0.46); (6.36, 0.76)\n",
"Camara Ma. (6.07, 0.40); (6.15, 0.46)\n",
"Paredes (5.90, 0.41); (5.94, 0.42)\n",
"Ndombele' (5.99, 0.37); (6.12, 0.47)\n",
"Nicolussi Caviglia (5.85, 0.51); (5.99, 0.73)\n",
"Rovella (5.97, 0.49); (6.10, 0.62)\n",
"Amrabat (5.94, 0.45); (6.01, 0.54)\n",
"Tameze (5.88, 0.40); (5.87, 0.43)\n",
"Gyasi (5.90, 0.48); (6.06, 0.72)\n",
"Ilic (6.04, 0.45); (6.24, 0.63)\n",
"Matheus Henrique (5.94, 0.48); (6.14, 0.73)\n",
"Harroui (5.96, 0.44); (6.25, 0.71)\n",
"Volpato (6.03, 0.50); (6.58, 1.02)\n",
"Pickel (5.82, 0.39); (5.77, 0.44)\n",
"Moro N. (6.08, 0.41); (6.32, 0.62)\n",
"Duncan (5.90, 0.42); (6.04, 0.62)\n",
"Machin (5.92, 0.45); (6.01, 0.59)\n",
"Cuadrado (5.92, 0.45); (5.99, 0.53)\n",
"Ekdal (5.88, 0.37); (5.88, 0.38)\n",
"Meite' (5.86, 0.40); (5.84, 0.45)\n",
"Schouten (5.98, 0.41); (6.02, 0.44)\n",
"Obiang (5.91, 0.31); (5.89, 0.29)\n",
"Kovalenko (5.92, 0.41); (6.00, 0.51)\n",
"Crnigoj (5.92, 0.38); (6.02, 0.46)\n",
"Basic (6.03, 0.35); (6.23, 0.49)\n",
"Asllani (5.98, 0.32); (5.99, 0.29)\n",
"Sabiri (5.87, 0.45); (6.04, 0.65)\n",
"Terracciano F. (6.00, 0.32); (6.03, 0.30)\n",
"Castagnetti (5.91, 0.34); (5.91, 0.31)\n",
"Oudin (5.91, 0.31); (5.95, 0.27)\n",
"Grassi (5.94, 0.33); (5.92, 0.29)\n",
"Krunic (5.92, 0.36); (5.94, 0.40)\n",
"Rincon (5.81, 0.36); (5.75, 0.38)\n",
"Miguel Veloso (5.95, 0.34); (5.94, 0.32)\n",
"Leris (5.88, 0.42); (5.96, 0.57)\n",
"Esposito Sa. (5.78, 0.39); (5.71, 0.38)\n",
"Henderson L. (5.91, 0.38); (5.98, 0.49)\n",
"Lopez M. (5.93, 0.39); (5.92, 0.41)\n",
"Cuisance (5.81, 0.31); (5.76, 0.30)\n",
"Saelemaekers (5.93, 0.43); (6.18, 0.68)\n",
"Maggiore (5.93, 0.37); (6.00, 0.45)\n",
"Akpa Akpro (5.91, 0.46); (5.98, 0.56)\n",
"Maleh (5.90, 0.34); (5.95, 0.39)\n",
"Romero L. (6.07, 0.48); (6.63, 1.00)\n",
"Ceide (5.88, 0.34); (5.90, 0.35)\n",
"D'alessandro (6.04, 0.32); (6.13, 0.38)\n",
"Benassi (5.85, 0.35); (5.86, 0.38)\n",
"Gagliardini (5.82, 0.30); (5.81, 0.26)\n",
"Vieira (5.86, 0.34); (5.83, 0.40)\n",
"Bianco (5.98, 0.42); (6.05, 0.48)\n",
"Vranckx (5.88, 0.32); (5.88, 0.30)\n",
"Galdames (5.92, 0.45); (5.97, 0.57)\n",
"Marcos Antonio (6.13, 0.44); (6.51, 0.76)\n",
"Fazzini (5.84, 0.31); (5.79, 0.29)\n",
"Sulemana I. (5.91, 0.30); (5.90, 0.27)\n",
"Tahirovic (5.88, 0.38); (5.87, 0.40)\n",
"Abildgaard (5.78, 0.31); (5.77, 0.30)\n",
"Barberis (5.78, 0.39); (5.76, 0.42)\n",
"Kastanos (5.97, 0.43); (6.13, 0.59)\n",
"Vignato (5.98, 0.37); (6.06, 0.43)\n",
"Valoti (5.78, 0.32); (5.75, 0.30)\n",
"Winks (5.87, 0.40); (5.85, 0.39)\n",
"Askildsen (5.79, 0.31); (5.75, 0.28)\n",
"Bove (6.02, 0.42); (6.28, 0.65)\n",
"Bohinen (5.86, 0.29); (5.85, 0.23)\n",
"D'andrea (6.06, 0.40); (6.24, 0.54)\n",
"Iling-Junior (6.04, 0.35); (6.14, 0.43)\n",
"Cipot (6.03, 0.31); (6.10, 0.35)\n",
"Bakayoko (5.83, 0.38); (5.80, 0.35)\n",
"Gaetano (5.92, 0.38); (5.94, 0.42)\n",
"Zurkowski (6.04, 0.49); (6.42, 0.86)\n",
"Castrovilli (5.97, 0.44); (6.21, 0.69)\n",
"Demme (6.00, 0.37); (6.15, 0.49)\n",
"Darboe (5.93, 0.44); (5.98, 0.47)\n",
"Urbanski (5.99, 0.43); (6.10, 0.53)\n",
"Bertini (5.98, 0.43); (6.07, 0.52)\n",
"Yepes (5.75, 0.38); (5.68, 0.39)\n",
"Pyyhtia (5.99, 0.32); (5.98, 0.30)\n",
"Trimboli (5.91, 0.45); (5.95, 0.55)\n",
"Pafundi (6.14, 0.39); (6.28, 0.51)\n",
"Helgason (5.88, 0.31); (5.88, 0.26)\n",
"Adli (5.95, 0.37); (6.01, 0.44)\n",
"Vignato S. (5.85, 0.39); (5.84, 0.43)\n",
"Hrustic (5.73, 0.28); (5.72, 0.22)\n",
"Samek (5.96, 0.44); (6.05, 0.55)\n",
"Zerbin (5.82, 0.33); (5.81, 0.36)\n",
"Ilkhan (5.87, 0.36); (5.85, 0.37)\n",
"Degli Innocenti (5.91, 0.46); (5.98, 0.56)\n",
"Acella (5.95, 0.44); (6.02, 0.54)\n",
"Carboni V. (5.91, 0.47); (5.97, 0.51)\n",
"Paoletti (5.92, 0.28); (5.89, 0.21)\n",
"Malagrida (5.85, 0.36); (5.85, 0.41)\n",
"Faticanti (5.95, 0.44); (6.05, 0.54)\n",
"Osimhen (6.46, 0.72); (7.76, 2.08)\n",
"Martinez L. (6.24, 0.70); (7.56, 1.97)\n",
"Dybala (6.42, 0.66); (7.42, 1.67)\n",
"Rafael Leao (6.28, 0.67); (7.27, 1.66)\n",
"Lookman (6.28, 0.67); (7.39, 1.75)\n",
"Immobile (6.20, 0.64); (7.21, 1.61)\n",
"Vlahovic (6.12, 0.64); (7.08, 1.55)\n",
"Arnautovic (6.18, 0.63); (7.15, 1.55)\n",
"Dia (6.17, 0.67); (7.29, 1.74)\n",
"Dzeko (6.12, 0.62); (7.02, 1.46)\n",
"Milik (6.14, 0.57); (6.87, 1.27)\n",
"Nzola (6.10, 0.66); (7.14, 1.63)\n",
"Beto (6.02, 0.58); (6.79, 1.29)\n",
"Giroud (6.08, 0.59); (6.77, 1.24)\n",
"Abraham (6.09, 0.58); (6.87, 1.32)\n",
"Deulofeu (6.29, 0.61); (7.11, 1.40)\n",
"Lauriente' (6.22, 0.66); (7.10, 1.55)\n",
"Simeone (6.14, 0.63); (7.02, 1.45)\n",
"Lozano (6.09, 0.51); (6.62, 0.99)\n",
"Correa (5.93, 0.46); (6.31, 0.81)\n",
"Berardi (6.31, 0.69); (7.46, 1.85)\n",
"Pedro (6.11, 0.49); (6.59, 0.94)\n",
"Lukaku (6.08, 0.61); (6.84, 1.32)\n",
"Sanabria (6.08, 0.60); (6.88, 1.34)\n",
"Thauvin (6.16, 0.54); (6.84, 1.18)\n",
"Cabral (6.05, 0.57); (6.69, 1.17)\n",
"Hojlund (6.05, 0.62); (6.78, 1.31)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Caprari (5.95, 0.47); (6.27, 0.79)\n",
"Di Maria (6.21, 0.61); (6.96, 1.36)\n",
"Piatek (5.83, 0.48); (6.21, 0.81)\n",
"Rebic (6.00, 0.57); (6.52, 1.07)\n",
"Bonazzoli (5.97, 0.48); (6.30, 0.79)\n",
"Zapata D. (5.93, 0.48); (6.24, 0.77)\n",
"Kouame' (6.02, 0.58); (6.60, 1.12)\n",
"Gonzalez N. (6.13, 0.57); (6.80, 1.19)\n",
"Brekalo (6.05, 0.54); (6.57, 1.03)\n",
"Mota (5.98, 0.56); (6.50, 1.06)\n",
"Kean (6.05, 0.61); (6.71, 1.26)\n",
"Okereke (5.96, 0.54); (6.44, 0.99)\n",
"Ceesay (5.96, 0.51); (6.42, 0.93)\n",
"Colombo (5.93, 0.54); (6.44, 1.01)\n",
"Dessers (5.99, 0.56); (6.60, 1.13)\n",
"Muriel (6.02, 0.53); (6.35, 0.90)\n",
"Pinamonti (5.85, 0.50); (6.19, 0.82)\n",
"Di Francesco F. (5.96, 0.49); (6.24, 0.78)\n",
"Jovic (5.96, 0.56); (6.40, 0.98)\n",
"Origi (5.83, 0.47); (6.11, 0.74)\n",
"Caputo (5.94, 0.53); (6.40, 0.96)\n",
"Boga (6.21, 0.56); (6.86, 1.14)\n",
"Cambiaghi (6.16, 0.52); (6.81, 1.13)\n",
"Alvarez A. (5.98, 0.52); (6.34, 0.88)\n",
"Banda (5.93, 0.39); (6.05, 0.49)\n",
"Ciofani D. (6.02, 0.53); (6.55, 1.04)\n",
"Petagna (5.93, 0.51); (6.30, 0.86)\n",
"Barrow (6.01, 0.56); (6.46, 1.01)\n",
"Djuric (5.94, 0.36); (6.09, 0.45)\n",
"Henry (5.92, 0.53); (6.33, 0.92)\n",
"Success (5.92, 0.46); (6.19, 0.71)\n",
"Gabbiadini (5.91, 0.54); (6.34, 0.94)\n",
"Zirkzee (5.98, 0.48); (6.34, 0.81)\n",
"Lammers (5.81, 0.41); (5.95, 0.56)\n",
"Satriano (5.88, 0.45); (6.08, 0.66)\n",
"Kallon (5.87, 0.40); (6.04, 0.57)\n",
"Nestorovski (5.97, 0.42); (6.34, 0.74)\n",
"Raspadori (6.03, 0.52); (6.51, 0.96)\n",
"Botheim (5.94, 0.47); (6.29, 0.79)\n",
"Gytkjaer (5.83, 0.42); (6.00, 0.60)\n",
"Solbakken (5.90, 0.49); (6.21, 0.80)\n",
"Lasagna (5.80, 0.39); (5.88, 0.48)\n",
"Belotti (5.81, 0.39); (5.93, 0.51)\n",
"Pellegri (5.95, 0.49); (6.32, 0.83)\n",
"Buonaiuto (5.93, 0.36); (6.02, 0.43)\n",
"Verde (6.03, 0.53); (6.49, 0.98)\n",
"Destro (5.95, 0.56); (6.41, 1.01)\n",
"Seck (5.99, 0.34); (6.07, 0.38)\n",
"Sansone (6.07, 0.53); (6.55, 0.98)\n",
"Quagliarella (5.85, 0.37); (5.95, 0.49)\n",
"Defrel (5.83, 0.44); (6.02, 0.65)\n",
"Pjaca (5.88, 0.40); (6.00, 0.50)\n",
"Gaich (5.86, 0.46); (6.13, 0.72)\n",
"Soule' (6.08, 0.51); (6.53, 0.91)\n",
"Tsadjout (5.90, 0.48); (6.23, 0.78)\n",
"Piccoli (5.80, 0.35); (5.83, 0.37)\n",
"Shomurodov (5.94, 0.50); (6.35, 0.88)\n",
"Afena-Gyan (5.76, 0.33); (5.73, 0.34)\n",
"Ngonge (6.07, 0.57); (6.63, 1.11)\n",
"Karamoh (6.01, 0.51); (6.52, 0.98)\n",
"Ibrahimovic (6.17, 0.58); (7.01, 1.35)\n",
"Pussetto (5.94, 0.54); (6.39, 0.97)\n",
"Cancellieri (5.81, 0.31); (5.81, 0.27)\n",
"Valencia D. (5.75, 0.29); (5.70, 0.30)\n",
"Oddei (6.08, 0.43); (6.27, 0.58)\n",
"Braaf (5.85, 0.40); (5.88, 0.49)\n",
"Raimondo (5.96, 0.46); (6.07, 0.58)\n",
"Kaio Jorge (5.86, 0.29); (5.90, 0.25)\n",
"De Luca (5.91, 0.48); (6.02, 0.63)\n",
"Voelkerling Persson (5.93, 0.34); (6.02, 0.34)\n",
"Montevago (5.83, 0.41); (5.96, 0.53)\n",
"Krollis (5.83, 0.55); (5.96, 0.69)\n",
"Vivaldo (5.92, 0.46); (6.01, 0.58)\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>role</th>\n",
" <th>team</th>\n",
" <th>oppteam</th>\n",
" <th>home</th>\n",
" <th>starter</th>\n",
" <th>vote%</th>\n",
" <th>MV</th>\n",
" <th>MV std</th>\n",
" <th>FV</th>\n",
" <th>FV std</th>\n",
" <th>MV loc</th>\n",
" <th>MV scale</th>\n",
" <th>MV skewness</th>\n",
" <th>MV tailweight</th>\n",
" <th>FV loc</th>\n",
" <th>FV scale</th>\n",
" <th>FV skewness</th>\n",
" <th>FV tailweight</th>\n",
" <th>Clean Sheet %</th>\n",
" </tr>\n",
" <tr>\n",
" <th>player</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>Musso</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>100</td>\n",
" <td>6.246662</td>\n",
" <td>0.405504</td>\n",
" <td>5.551811</td>\n",
" <td>0.520479</td>\n",
" <td>5.984098</td>\n",
" <td>0.176351</td>\n",
" <td>0.838341</td>\n",
" <td>1.599265</td>\n",
" <td>5.810978</td>\n",
" <td>0.729997</td>\n",
" <td>-0.262806</td>\n",
" <td>0.860719</td>\n",
" <td>29.652037</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sportiello</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>6.215503</td>\n",
" <td>0.386785</td>\n",
" <td>4.551934</td>\n",
" <td>0.398519</td>\n",
" <td>5.983678</td>\n",
" <td>0.214951</td>\n",
" <td>0.682581</td>\n",
" <td>1.599226</td>\n",
" <td>4.483588</td>\n",
" <td>0.606908</td>\n",
" <td>0.068208</td>\n",
" <td>0.879032</td>\n",
" <td>5.408993</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rossi F.</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5.910575</td>\n",
" <td>0.379112</td>\n",
" <td>4.049485</td>\n",
" <td>0.564528</td>\n",
" <td>5.747025</td>\n",
" <td>0.329788</td>\n",
" <td>0.357371</td>\n",
" <td>1.598827</td>\n",
" <td>4.163519</td>\n",
" <td>0.842991</td>\n",
" <td>-0.101138</td>\n",
" <td>0.911087</td>\n",
" <td>2.865818</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Zappacosta</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>48</td>\n",
" <td>6.092779</td>\n",
" <td>0.476883</td>\n",
" <td>6.421109</td>\n",
" <td>0.777429</td>\n",
" <td>6.043412</td>\n",
" <td>0.550127</td>\n",
" <td>0.066196</td>\n",
" <td>1.004575</td>\n",
" <td>5.813773</td>\n",
" <td>1.011895</td>\n",
" <td>0.416726</td>\n",
" <td>1.599906</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Scalvini</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>81</td>\n",
" <td>6.036415</td>\n",
" <td>0.509005</td>\n",
" <td>6.294344</td>\n",
" <td>0.742164</td>\n",
" <td>6.010108</td>\n",
" <td>0.594076</td>\n",
" <td>0.032801</td>\n",
" <td>0.982219</td>\n",
" <td>5.784675</td>\n",
" <td>1.048351</td>\n",
" <td>0.344749</td>\n",
" <td>1.599907</td>\n",
" <td>0.000000</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",
" </tr>\n",
" <tr>\n",
" <th>Gaich</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>39</td>\n",
" <td>5.857898</td>\n",
" <td>0.462508</td>\n",
" <td>6.131500</td>\n",
" <td>0.717901</td>\n",
" <td>5.771540</td>\n",
" <td>0.520882</td>\n",
" <td>0.122180</td>\n",
" <td>1.046589</td>\n",
" <td>5.525054</td>\n",
" <td>0.872228</td>\n",
" <td>0.472862</td>\n",
" <td>1.599893</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Djuric</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>69</td>\n",
" <td>5.936011</td>\n",
" <td>0.356034</td>\n",
" <td>6.088906</td>\n",
" <td>0.446404</td>\n",
" <td>5.884834</td>\n",
" <td>0.408801</td>\n",
" <td>0.092681</td>\n",
" <td>1.156591</td>\n",
" <td>5.813459</td>\n",
" <td>0.662987</td>\n",
" <td>0.298895</td>\n",
" <td>1.599941</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kallon</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>66</td>\n",
" <td>5.871454</td>\n",
" <td>0.403444</td>\n",
" <td>6.038425</td>\n",
" <td>0.566514</td>\n",
" <td>5.802306</td>\n",
" <td>0.457565</td>\n",
" <td>0.111612</td>\n",
" <td>1.108458</td>\n",
" <td>5.607873</td>\n",
" <td>0.752284</td>\n",
" <td>0.399625</td>\n",
" <td>1.599921</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lasagna</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>78</td>\n",
" <td>5.803599</td>\n",
" <td>0.387059</td>\n",
" <td>5.879193</td>\n",
" <td>0.482069</td>\n",
" <td>5.746776</td>\n",
" <td>0.443377</td>\n",
" <td>0.094744</td>\n",
" <td>1.130199</td>\n",
" <td>5.550426</td>\n",
" <td>0.683393</td>\n",
" <td>0.341598</td>\n",
" <td>1.599931</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Braaf</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>15</td>\n",
" <td>5.854173</td>\n",
" <td>0.403747</td>\n",
" <td>5.876657</td>\n",
" <td>0.486147</td>\n",
" <td>5.821750</td>\n",
" <td>0.472046</td>\n",
" <td>0.050828</td>\n",
" <td>1.099133</td>\n",
" <td>5.625181</td>\n",
" <td>0.764287</td>\n",
" <td>0.239246</td>\n",
" <td>1.599936</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>526 rows × 19 columns</p>\n",
"</div>"
],
"text/plain": [
" role team oppteam home starter vote% MV MV std \\\n",
"player \n",
"Musso P Atalanta Avg 1 1 100 6.246662 0.405504 \n",
"Sportiello P Atalanta Avg 1 0 0 6.215503 0.386785 \n",
"Rossi F. P Atalanta Avg 1 0 0 5.910575 0.379112 \n",
"Zappacosta D Atalanta Avg 1 0 48 6.092779 0.476883 \n",
"Scalvini D Atalanta Avg 1 1 81 6.036415 0.509005 \n",
"... ... ... ... ... ... ... ... ... \n",
"Gaich A Verona Avg 1 0 39 5.857898 0.462508 \n",
"Djuric A Verona Avg 1 0 69 5.936011 0.356034 \n",
"Kallon A Verona Avg 1 0 66 5.871454 0.403444 \n",
"Lasagna A Verona Avg 1 1 78 5.803599 0.387059 \n",
"Braaf A Verona Avg 1 0 15 5.854173 0.403747 \n",
"\n",
" FV FV std MV loc MV scale MV skewness \\\n",
"player \n",
"Musso 5.551811 0.520479 5.984098 0.176351 0.838341 \n",
"Sportiello 4.551934 0.398519 5.983678 0.214951 0.682581 \n",
"Rossi F. 4.049485 0.564528 5.747025 0.329788 0.357371 \n",
"Zappacosta 6.421109 0.777429 6.043412 0.550127 0.066196 \n",
"Scalvini 6.294344 0.742164 6.010108 0.594076 0.032801 \n",
"... ... ... ... ... ... \n",
"Gaich 6.131500 0.717901 5.771540 0.520882 0.122180 \n",
"Djuric 6.088906 0.446404 5.884834 0.408801 0.092681 \n",
"Kallon 6.038425 0.566514 5.802306 0.457565 0.111612 \n",
"Lasagna 5.879193 0.482069 5.746776 0.443377 0.094744 \n",
"Braaf 5.876657 0.486147 5.821750 0.472046 0.050828 \n",
"\n",
" MV tailweight FV loc FV scale FV skewness FV tailweight \\\n",
"player \n",
"Musso 1.599265 5.810978 0.729997 -0.262806 0.860719 \n",
"Sportiello 1.599226 4.483588 0.606908 0.068208 0.879032 \n",
"Rossi F. 1.598827 4.163519 0.842991 -0.101138 0.911087 \n",
"Zappacosta 1.004575 5.813773 1.011895 0.416726 1.599906 \n",
"Scalvini 0.982219 5.784675 1.048351 0.344749 1.599907 \n",
"... ... ... ... ... ... \n",
"Gaich 1.046589 5.525054 0.872228 0.472862 1.599893 \n",
"Djuric 1.156591 5.813459 0.662987 0.298895 1.599941 \n",
"Kallon 1.108458 5.607873 0.752284 0.399625 1.599921 \n",
"Lasagna 1.130199 5.550426 0.683393 0.341598 1.599931 \n",
"Braaf 1.099133 5.625181 0.764287 0.239246 1.599936 \n",
"\n",
" Clean Sheet % \n",
"player \n",
"Musso 29.652037 \n",
"Sportiello 5.408993 \n",
"Rossi F. 2.865818 \n",
"Zappacosta 0.000000 \n",
"Scalvini 0.000000 \n",
"... ... \n",
"Gaich 0.000000 \n",
"Djuric 0.000000 \n",
"Kallon 0.000000 \n",
"Lasagna 0.000000 \n",
"Braaf 0.000000 \n",
"\n",
"[526 rows x 19 columns]"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"output = pd.DataFrame(columns = ['player', 'role', 'team', 'oppteam', 'home', 'starter', 'vote%', 'MV', 'MV std', 'FV', 'FV std', 'MV loc', 'MV scale', 'MV skewness', 'MV tailweight', 'FV loc', 'FV scale', 'FV skewness', 'FV tailweight', 'Clean Sheet %'])\n",
"\n",
"tot_matches = 2 # home and not home\n",
"\n",
"current_season_games = max(players_orig['games'])\n",
"\n",
"for i in range(players.shape[0]):\n",
" try:\n",
" home = 0\n",
"\n",
" for k in range(tot_matches):\n",
" #matchday_out = k + 1\n",
" #[player, team, oppteam, home] = PlayerMatch(players.index[i], matchday_out)\n",
"\n",
" player = players.index[i]\n",
" team = players['team'][i]\n",
" oppteam = 'Avg'\n",
" home = not home\n",
"\n",
" [mean, std, dist] = vote_predict_NNb(player, team, oppteam, home = home)\n",
"\n",
" role = players['r'][player] \n",
"\n",
" starter = 0\n",
" voteperc = 0\n",
"\n",
" games = max( players_orig['games'][i], players_orig['gk_games'][i] )\n",
" mins = max( players_orig['minutes'][i], players_orig['gk_minutes'][i] )\n",
"\n",
" cs = 0\n",
" if(role == 'P'):\n",
" cs = dist[2].probs.numpy()[0] * 100\n",
"\n",
" starter = int( player in gk_starters )\n",
" if(starter):\n",
" voteperc = 100\n",
" else:\n",
" voteperc = 0\n",
" else:\n",
" starter = int ( 1 * (games >= current_season_games * 2/3 and mins / games >= 45 ) )\n",
" voteperc = int( min( 1, games / current_season_games ) * 100) \n",
"\n",
" if(k == 0):\n",
" row = [player, role, team, 'Avg', 1, starter, voteperc]\n",
"\n",
" numrow_ = [mean[0], std[0], \n",
" mean[1], std[1], \n",
" dist[0].loc.numpy()[0], dist[0].scale.numpy()[0], \n",
" dist[0].skewness.numpy()[0], dist[0].tailweight.numpy()[0], \n",
" dist[1].loc.numpy()[0], dist[1].scale.numpy()[0], \n",
" dist[1].skewness.numpy()[0], dist[1].tailweight.numpy()[0],\n",
" cs] \n",
"\n",
" if(k == 0):\n",
" numrow = numrow_\n",
" else:\n",
" for j in range(len(numrow)):\n",
" numrow[j] += numrow_[j]\n",
"\n",
" for j in range(len(numrow)):\n",
" numrow[j] /= tot_matches\n",
"\n",
" print(players.index[i] + ' (' + \"{:.2f}\".format(numrow[0]) + ', ' + \"{:.2f}\".format(numrow[1]) + \n",
" '); (' + \"{:.2f}\".format(numrow[2]) + ', ' + \"{:.2f}\".format(numrow[3]) + ')' )\n",
"\n",
" row += numrow # list concat\n",
"\n",
" row_df = pd.DataFrame(data = [row], columns = output.columns)\n",
"\n",
" output = pd.concat([output, row_df])\n",
" except:\n",
" print(players.index[i] + ' no data')\n",
" \n",
" \n",
"\n",
"output = output.set_index('player')\n",
"\n",
"output = output.sort_values(['team', 'role', 'FV'], ascending = [True, False, False])\n",
"#output.to_excel('outputs/pred_matchday_' + str(matchday_out) + '.xlsx')\n",
"\n",
"output"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "b47cbd63",
"metadata": {},
"outputs": [],
"source": [
"import shutil\n",
"\n",
"output = output.sort_values(['role', 'FV'], ascending = [False, False])\n",
"\n",
"template_file = 'outputs/pred_matchday_base.xlsx'\n",
"dest_file = 'outputs/pred_avg_seriea.xlsx'\n",
"\n",
"shutil.copyfile(template_file, dest_file)\n",
"\n",
"with pd.ExcelWriter(dest_file, mode = 'a', engine=\"openpyxl\", if_sheet_exists = 'replace') as writer: \n",
" output.to_excel(writer, sheet_name='data')"
]
},
{
"cell_type": "markdown",
"id": "cf9df3bb",
"metadata": {},
"source": [
"Various predictions."
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "7300f3c2",
"metadata": {
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Meret: MV 6.25 ± 0.82; FV 5.94 + 0.91 (72.7% cs)\n",
"Szczesny: MV 6.25 ± 0.82; FV 5.99 + 0.94 (72.5% cs)\n",
"Provedel: MV 6.12 ± 0.71; FV 5.15 + 1.31 (49.0% cs)\n",
"Maignan: MV 6.25 ± 0.82; FV 5.23 + 0.95 (18.0% cs)\n",
"Rui Patricio: MV 6.25 ± 0.82; FV 5.98 + 0.92 (69.0% cs)\n",
"Onana: MV 6.25 ± 0.82; FV 5.94 + 0.96 (67.5% cs)\n",
"Milinkovic-Savic V.: MV 6.07 ± 0.70; FV 5.14 + 1.36 (40.4% cs)\n",
"Musso: MV 6.25 ± 0.81; FV 5.66 + 1.06 (33.3% cs)\n",
"Vicario: MV 6.25 ± 0.82; FV 5.44 + 1.31 (41.5% cs)\n",
"Silvestri: MV 6.25 ± 0.82; FV 5.67 + 1.21 (45.3% cs)\n",
"Terracciano: MV 6.12 ± 0.73; FV 5.00 + 1.47 (21.3% cs)\n",
"Skorupski: MV 6.25 ± 0.82; FV 5.39 + 1.23 (30.1% cs)\n",
"Falcone: MV 6.25 ± 0.82; FV 4.75 + 0.86 (4.2% cs)\n",
"Di Gregorio: MV 6.25 ± 0.82; FV 5.22 + 1.38 (19.6% cs)\n",
"Consigli: MV 6.25 ± 0.82; FV 5.48 + 1.35 (41.0% cs)\n",
"Carnesecchi: MV 6.25 ± 0.82; FV 5.58 + 1.23 (40.8% cs)\n",
"Montipo': MV 6.25 ± 0.82; FV 4.99 + 0.64 (1.3% cs)\n",
"Audero: MV 6.25 ± 0.82; FV 4.76 + 1.14 (3.5% cs)\n",
"Dragowski: MV 6.25 ± 0.82; FV 5.30 + 1.33 (18.8% cs)\n",
"Ochoa: MV 6.25 ± 0.82; FV 6.02 + 1.06 (42.9% cs)\n",
"Tatarusanu: MV 6.25 ± 0.82; FV 5.66 + 1.17 (44.0% cs)\n",
"Handanovic: MV 6.25 ± 0.82; FV 5.98 + 0.99 (69.2% cs)\n",
"Sportiello: MV 6.25 ± 0.81; FV 4.80 + 0.69 (8.2% cs)\n",
"Sepe: MV 6.17 ± 0.77; FV 5.04 + 1.09 (4.0% cs)\n"
]
},
{
"data": {
"text/plain": [
"[array([6.17110676, 5.03714256]),\n",
" array([0.3830576 , 0.54427254], dtype=float32),\n",
" [<tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>,\n",
" <tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>,\n",
" <tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=int32>]]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict_player('Meret', log = 1, plot = 0)\n",
"predict_player('Szczesny', log = 1, plot = 0)\n",
"predict_player('Provedel', log = 1, plot = 0)\n",
"predict_player('Maignan', log = 1, plot = 0)\n",
"predict_player('Rui Patricio', log = 1, plot = 0)\n",
"predict_player('Onana', log = 1, plot = 0)\n",
"predict_player('Milinkovic-Savic V.', log = 1, plot = 0)\n",
"predict_player('Musso', log = 1, plot = 0)\n",
"predict_player('Vicario', log = 1, plot = 0)\n",
"predict_player('Silvestri', log = 1, plot = 0)\n",
"predict_player('Terracciano', log = 1, plot = 0)\n",
"predict_player('Skorupski', log = 1, plot = 0)\n",
"predict_player('Falcone', log = 1, plot = 0)\n",
"predict_player('Di Gregorio', log = 1, plot = 0)\n",
"predict_player('Consigli', log = 1, plot = 0)\n",
"predict_player('Carnesecchi', log = 1, plot = 0)\n",
"predict_player('Montipo\\'', log = 1, plot = 0)\n",
"predict_player('Audero', log = 1, plot = 0)\n",
"predict_player('Dragowski', log = 1, plot = 0)\n",
"predict_player('Ochoa', log = 1, plot = 0)\n",
"predict_player('Tatarusanu', log = 1, plot = 0)\n",
"predict_player('Handanovic', log = 1, plot = 0)\n",
"predict_player('Sportiello', log = 1, plot = 0)\n",
"predict_player('Sepe', log = 1, plot = 0)"
]
},
{
"cell_type": "code",
"execution_count": 36,
"id": "bd126870",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Muriel: MV 6.20 ± 1.32; FV 7.29 + 3.53\n",
"Tonali: MV 6.23 ± 0.95; FV 6.69 + 1.86\n",
"Lobotka: MV 6.17 ± 0.72; FV 6.42 + 1.16\n",
"Politano: MV 6.19 ± 0.77; FV 6.62 + 1.48\n",
"Zapata D.: MV 6.09 ± 1.19; FV 7.18 + 3.36\n",
"Frattesi: MV 6.23 ± 1.19; FV 7.37 + 3.58\n",
"Gonzalez N.: MV 6.05 ± 1.07; FV 6.65 + 2.25\n",
"Abraham: MV 6.20 ± 1.30; FV 7.66 + 4.26\n",
"Pobega: MV 6.02 ± 0.68; FV 6.13 + 0.92\n",
"Mario Rui: MV 6.10 ± 0.77; FV 6.25 + 0.98\n",
"Cuadrado: MV 5.82 ± 0.95; FV 5.80 + 0.92\n",
"Skriniar: MV 5.75 ± 0.68; FV 5.70 + 0.58\n",
"Lukaku: MV 6.41 ± 1.42; FV 8.29 + 5.46\n"
]
},
{
"data": {
"text/plain": [
"[array([6.41176047, 8.29456946]),\n",
" array([0.70926785, 2.7289915 ], dtype=float32),\n",
" [<tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>,\n",
" <tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>]]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict_player('Muriel', plot = 0, log = 1)\n",
"predict_player('Tonali', plot = 0, log = 1)\n",
"predict_player('Lobotka', plot = 0, log = 1)\n",
"predict_player('Politano', plot = 0, log = 1)\n",
"predict_player('Zapata D.', plot = 0, log = 1)\n",
"predict_player('Frattesi', plot = 0, log = 1)\n",
"predict_player('Gonzalez N.', plot = 0, log = 1)\n",
"predict_player('Abraham', plot = 0, log = 1)\n",
"predict_player('Pobega', plot = 0, log = 1)\n",
"predict_player('Mario Rui', plot = 0, log = 1)\n",
"predict_player('Cuadrado', plot = 0, log = 1)\n",
"predict_player('Skriniar', plot = 0, log = 1)\n",
"predict_player('Lukaku', plot = 0, log = 1)"
]
},
{
"cell_type": "code",
"execution_count": 37,
"id": "4b9f5a7d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Skriniar: MV 6.14 ± 0.82; FV 6.38 + 1.13\n",
"Cuadrado: MV 6.29 ± 0.96; FV 6.83 + 1.94\n",
"Bastoni: MV 6.13 ± 0.73; FV 6.32 + 0.98\n",
"Barak: MV 6.31 ± 1.41; FV 7.50 + 3.97\n",
"Politano: MV 6.18 ± 0.82; FV 6.57 + 1.55\n",
"Smalling: MV 6.17 ± 0.86; FV 6.56 + 1.43\n",
"Gosens: MV 6.05 ± 0.54; FV 6.11 + 0.66\n"
]
},
{
"data": {
"text/plain": [
"[array([6.04807256, 6.10812885]),\n",
" array([0.27137518, 0.32888246], dtype=float32),\n",
" [<tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>,\n",
" <tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>]]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict_player('Skriniar', log = 1, oldseason= True)\n",
"predict_player('Cuadrado', log = 1, oldseason= True)\n",
"predict_player('Bastoni', log = 1, oldseason= True)\n",
"predict_player('Barak', log = 1, oldseason= True)\n",
"predict_player('Politano', log = 1, oldseason= True)\n",
"predict_player('Smalling', log = 1, oldseason= True)\n",
"predict_player('Gosens', log = 1, oldseason= True)\n",
"\n",
"predict_player('Skriniar', log = 1, oldseason= False)\n",
"predict_player('Cuadrado', log = 1, oldseason= False)\n",
"predict_player('Bastoni', log = 1, oldseason= False)\n",
"predict_player('Barak', log = 1, oldseason= False)\n",
"predict_player('Politano', log = 1, oldseason= False)\n",
"predict_player('Smalling', log = 1, oldseason= False)\n",
"predict_player('Gosens', log = 1, oldseason= False)"
]
},
{
"cell_type": "code",
"execution_count": 34,
"id": "10c7ad3e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGxCAYAAACwbLZkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABw70lEQVR4nO3dd3wT9f8H8NclaZLuSaddzLJXEQGBInspSxBQpn5FXFAnooJ8/VEF5etiyCigCDJEUEGgspcChYLSyiyU0VI66G7m/f4IDYQO2pL2aPp6+riHl7vP3b0vpM27n3WCKIoiiIiIiCQikzoAIiIiqt2YjBAREZGkmIwQERGRpJiMEBERkaSYjBAREZGkmIwQERGRpJiMEBERkaSYjBAREZGkmIwQERGRpJiMULVZsWIFBEEwLwqFAn5+fnjmmWdw7ty5Sp83IyMDzzzzDLy9vSEIAgYNGmS9oO8yc+ZMCIJQ7nJpaWlVEkdV6t69OyZNmmR+vWfPHvO/14oVK0o85oknnoAgCAgJCbHYHhISgnHjxplfX7p0qczz1GRF/+YlLd988435fdyzZ4/UoZbp+vXrmDlzJuLi4ortK+/n/0FkZmbCzc0NmzZtqtLr0MNHIXUAVPssX74cYWFhKCwsxMGDB/F///d/2L17N/7991+4u7tX+Hz//e9/8fPPPyM6Ohr16tWDh4dHFURt+zZv3oyDBw/iu+++K7bP2dkZy5Yts0guACAxMRF79uyBi4tLsWN+/vnnErfbsm3btsHV1dViW2hoKOzt7XH48GE0adJEosjK5/r16/joo48QEhKCVq1aWex7/vnn0adPnyq9vru7O6ZOnYq33noL/fr1g1KprNLr0cODyQhVu2bNmiE8PBwAEBERAYPBgBkzZmDTpk0YP358hc/3zz//oF69ehg9erS1Q61VZs+ejcGDByMgIKDYvhEjRmDp0qU4d+4cGjRoYN4eHR2NgIAANG/eHPHx8RbHtG7duspjfti0bdsWXl5eJe577LHHrHad/Px8ODg4WO185fHII4/gkUceqfLrTJo0CR9//DE2bNiAUaNGVfn16OHAZhqSXFFicuPGDfO2wsJCvPHGG2jVqhVcXV3h4eGBDh06YPPmzeYyRdX+f/zxBxISEszV4kVV4R999BHat28PDw8PuLi4oE2bNli2bBlKejbk2rVr0aFDBzg6OsLJyQm9e/fGiRMnqvS+jx07hieffBIeHh5Qq9Vo3bo11q1bZ1Hm5s2bmDx5Mpo0aQInJyd4e3vjiSeewP79+4udLyMjA5MnT0ZAQACUSiXq1q2L6dOnQ6PR3DeWEydO4MiRI3juuedK3N+zZ08EBgYiOjravM1oNGLlypUYO3YsZLLiv0rubaYpyfnz5zF+/Hg0aNAADg4OCAgIwMCBA/H3339blCtq5lizZg2mT58Of39/uLi4oEePHjhz5kyZ19i0aRMEQcDOnTuL7Vu4cCEEQcCpU6cAABcvXsQzzzwDf39/qFQq+Pj4oHv37iU2W1REac00v/zyCzp06AAHBwc4OzujZ8+eOHz4sEWZouaR48ePY9iwYXB3d0e9evUAAKIoYsGCBWjVqhXs7e3h7u6OYcOG4eLFixbniIiIQLNmzXD06FF07twZDg4OqFu3Lj755BMYjUZzjO3atQMAjB8/3vzzNHPmTIs47hYSEoIBAwZg27ZtaNOmDezt7REWFmbxOQEq9jn28fFBz549sWjRooq9yVSjMRkhySUmJgIAGjZsaN6m0WiQkZGBN998E5s2bcKaNWvw+OOPY8iQIeZmBD8/Pxw+fBitW7dG3bp1cfjwYRw+fBht2rQBYEpWXnzxRaxbtw4bN27EkCFD8Oqrr+K///2vxfVnz56NkSNHokmTJli3bh2+//575OTkoHPnzsX+2reW3bt3o1OnTrh16xYWLVqEzZs3o1WrVhgxYoRFn4qMjAwAwIwZM7BlyxYsX74cdevWRUREhMUXW2FhIbp164bvvvsOkZGR2LJlC5599lnMmTMHQ4YMuW88v/32G+RyObp06VLifplMhnHjxuG7776DwWAAAOzYsQNXr16tVG1WkevXr8PT0xOffPIJtm3bhvnz50OhUKB9+/YlJhnvvfceLl++jKVLl2Lx4sU4d+4cBg4caI6pJAMGDIC3tzeWL19ebN+KFSvQpk0btGjRAgDQr18/xMbGYs6cOYiJicHChQvRunVr3Lp1q1z3YzAYoNfrzUtZca1evRpPPfUUXFxcsGbNGixbtgyZmZmIiIjAgQMHipUfMmQI6tevj/Xr15u/qF988UVMmTIFPXr0wKZNm7BgwQKcPn0aHTt2tEjuASAlJQWjR4/Gs88+i19++QV9+/bFtGnTsGrVKgBAmzZtzO/R+++/b/55ev7558u855MnT+KNN97A1KlTsXnzZrRo0QITJ07Evn37zGXK+zkuEhERgYMHD5b7fScbIBJVk+XLl4sAxD///FPU6XRiTk6OuG3bNtHX11fs0qWLqNPpSj1Wr9eLOp1OnDhxoti6dWuLfV27dhWbNm1a5rUNBoOo0+nEWbNmiZ6enqLRaBRFURSTkpJEhUIhvvrqqxblc3JyRF9fX3H48OHmbTNmzBDL8yNTVO7mzZullgkLCxNbt25d7J4HDBgg+vn5iQaDocTjit6H7t27i4MHDzZvX7RokQhAXLdunUX5Tz/9VAQg7tixo8yY+/btK4aFhRXbvnv3bhGAuH79evHixYuiIAjib7/9JoqiKD799NNiRESEKIqi2L9/fzE4ONji2ODgYHHs2LHm14mJiSIAcfny5aXGodfrRa1WKzZo0ECcOnVqsTj69etnUX7dunUiAPHw4cNl3l9kZKRob28v3rp1y7wtPj5eBCB+/fXXoiiKYlpamghA/OKLL8o8V0mK/s3vXQICAizi3717tyiKps+jv7+/2Lx5c4t/65ycHNHb21vs2LFjsXN/+OGHFtc8fPiwCED8/PPPLbZfuXJFtLe3F99++23ztq5du4oAxL/++suibJMmTcTevXubXx89erTUf6OSPv/BwcGiWq0WL1++bN5WUFAgenh4iC+++GKp71dpn+MiMTExIgDx999/L/UcZFtYM0LV7rHHHoOdnR2cnZ3Rp08fuLu7Y/PmzVAoLLswrV+/Hp06dYKTkxMUCgXs7OywbNkyJCQklOs6u3btQo8ePeDq6gq5XA47Ozt8+OGHSE9PR2pqKgBg+/bt0Ov1GDNmjMVftGq1Gl27dq2S0Q/nz5/Hv//+a+7jcvd1+/Xrh+TkZItagUWLFqFNmzZQq9Xm92Hnzp0W78OuXbvg6OiIYcOGWVyrqJmkpCaKu12/fh3e3t5llgkNDUVERASio6ORnp6OzZs3Y8KECRW59WL0ej1mz56NJk2aQKlUQqFQQKlU4ty5cyX+Oz/55JMWr4tqNC5fvlzmdSZMmICCggKsXbvWvG358uVQqVTmfgkeHh6oV68e5s6di3nz5uHEiRPmJozy+uOPP3D06FHzsnXr1hLLnTlzBtevX8dzzz1n0cTl5OSEoUOH4s8//0R+fr7FMUOHDrV4/dtvv0EQBDz77LMWnyFfX1+0bNmy2GfX19cXjz76qMW2Fi1a3Pe9u59WrVohKCjI/FqtVqNhw4bFzluez3GRos/itWvXHig2qjmYjFC1++6773D06FHs2rULL774IhISEjBy5EiLMhs3bsTw4cMREBCAVatW4fDhwzh69CgmTJiAwsLC+17jyJEj6NWrFwBgyZIlOHjwII4ePYrp06cDAAoKCgDc6afSrl072NnZWSxr166tkuG5Rdd88803i11z8uTJAGC+7rx58/DSSy+hffv2+Omnn/Dnn3/i6NGj6NOnj/keACA9PR2+vr7F2vS9vb2hUCiQnp5eZkwFBQVQq9X3jX3ixIn49ddfMW/ePNjb2xdLfioqMjISH3zwAQYNGoRff/0Vf/31F44ePYqWLVta3F8RT09Pi9cqlcocf1maNm2Kdu3amZshDAYDVq1ahaeeeso8+qqoX0nv3r0xZ84ctGnTBnXq1MFrr72GnJycct1Py5YtER4ebl6KkqV7Ff17+Pn5Fdvn7+8Po9GIzMxMi+33lr1x4wZEUYSPj0+xz9Gff/5Z7LN773sHmN6/+71391Oe85b3c1yk6LP4oLFRzcHRNFTtGjdubO602q1bNxgMBixduhQbNmwwf7mtWrUKoaGhWLt2rcUXbHk6YwLAjz/+CDs7O/z2228WX7L3zl9QNPJhw4YNCA4OfpDbKreia06bNq3U/hyNGjUCYHofIiIisHDhQov99345enp64q+//oIoihbvV2pqKvR6fakjPO6OqahdvyxDhgzByy+/jE8++QQvvPAC7O3t73tMWVatWoUxY8Zg9uzZFtvT0tLg5ub2QOe+1/jx4zF58mQkJCTg4sWLSE5OLtbfJTg4GMuWLQMAnD17FuvWrcPMmTOh1Wqt2qGy6As8OTm52L7r169DJpMVG+Z+b6Lp5eUFQRCwf/9+c1J2t5K2SaW8n+MiRZ/F+31uyXawZoQkN2fOHLi7u+PDDz80V4sLggClUmnxCzglJcViNE1ZiiZVk8vl5m0FBQX4/vvvLcr17t0bCoUCFy5csPiL9u7F2ho1aoQGDRrg5MmTpV7T2dnZfB/3fqmcOnWq2IiL7t27Izc3t1iyVdTZt3v37mXGFBYWVmwERkns7e3x4YcfYuDAgXjppZfuW/5+Srq/LVu2VEn1/MiRI6FWq7FixQqsWLECAQEB5tqzkjRs2BDvv/8+mjdvjuPHj1s1lkaNGiEgIACrV6+2GN2Vl5eHn376yTzCpiwDBgyAKIq4du1aiZ+h5s2bVziu8tY0VVR5P8dFij6LD/u8LGQ9rBkhybm7u2PatGl4++23sXr1ajz77LMYMGAANm7ciMmTJ2PYsGG4cuUK/vvf/8LPz69cs7X2798f8+bNw6hRo/Cf//wH6enp+Oyzz4r9QgwJCcGsWbMwffp0XLx40dyH5caNGzhy5AgcHR3x0UcfVeq+fv31V3NScbdhw4bh22+/Rd++fdG7d2+MGzcOAQEByMjIQEJCAo4fP47169cDMH3h/Pe//8WMGTPQtWtXnDlzBrNmzUJoaCj0er35nGPGjMH8+fMxduxYXLp0Cc2bN8eBAwcwe/Zs9OvXDz169Cgz1qK+IGfPnrUY1VSSyMhIREZGVuIdKW7AgAFYsWIFwsLC0KJFC8TGxmLu3LlVMp+Fm5sbBg8ejBUrVuDWrVt48803LfprnDp1Cq+88gqefvppNGjQAEqlErt27cKpU6fw7rvvWjUWmUyGOXPmYPTo0RgwYABefPFFaDQazJ07F7du3cInn3xy33N06tQJ//nPfzB+/HgcO3YMXbp0gaOjI5KTk3HgwAE0b968wgljvXr1YG9vjx9++AGNGzeGk5MT/P394e/vX9lbBVD+z3GRP//8E56enpVKqKiGkrb/LNUmRaNpjh49WmxfQUGBGBQUJDZo0EDU6/WiKIriJ598IoaEhIgqlUps3LixuGTJkhJ79Jc2miY6Olps1KiRqFKpxLp164pRUVHismXLRABiYmKiRdlNmzaJ3bp1E11cXESVSiUGBweLw4YNE//44w9zmYqOpiltKXLy5Elx+PDhore3t2hnZyf6+vqKTzzxhLho0SJzGY1GI7755ptiQECAqFarxTZt2oibNm0Sx44dW2z0Snp6ujhp0iTRz89PVCgUYnBwsDht2jSxsLDwvjFnZWWJTk5O4pw5cyy23z2apiyVHU2TmZkpTpw4UfT29hYdHBzExx9/XNy/f7/YtWtXsWvXrveNozwjdO62Y8cO87/D2bNnLfbduHFDHDdunBgWFiY6OjqKTk5OYosWLcT//e9/5s9kae43gure0TRFNm3aJLZv315Uq9Wio6Oj2L17d/HgwYMVOnd0dLTYvn170dHRUbS3txfr1asnjhkzRjx27Ji5TGk/IyV9jtasWSOGhYWJdnZ2IgBxxowZFnHcLTg4WOzfv3+x897771eRz7HRaBSDg4OLjXAj2yaIYgkzQBFRrfPqq69i586dOH36dJU/g4SoNDt37kSvXr1w+vRphIWFSR0OVRMmI0QEwDQ6o2HDhli2bNkDj5Ihqqxu3bqhfv36WLJkidShUDVinxEiAmCahvuHH34oNqSUqLpkZmaia9eu5iHuVHuwZoSIiIgkxaG9REREJCkmI0RERCQpJiNEREQkqRrRgdVoNOL69etwdnbmkEMiIqIaQhRF5OTkwN/f32KSwXvViGTk+vXrCAwMlDoMIiIiqoQrV66UObNyjUhGiqbUvnLlClxcXCSOhqjmycsDimb0vn4dcHSUNh5ryNPmwf9z001df+M6HJU2cFNENiY7OxuBgYElPhrjbjUiGSlqmnFxcWEyQlQJdz0vEC4utpGMyLVy4PYDmV1cXJiMED3E7tfFgh1YiYiISFI1omaEiB6MQgGMHXtn3RYoZAqMbTnWvE5ENVeNmIE1Ozsbrq6uyMrKYjMNERFRDVHe72/+OUFEZGMMBgN0Op3UYVAtIJfLoVAoHnjaDSYjRLWAKAL5+aZ1BwfAFqbrEUUR+TrTTTnYOXAOottyc3Nx9epV1IBKb7IRDg4O8PPzg1KprPQ5mIwQ1QL5+YCTk2k9N9c2RtPk6/LhFGW6qdxpuRxNA1ONyNWrV+Hg4IA6deowQaMqJYoitFotbt68icTERDRo0KDMic3KwmSEiMhG6HQ6iKKIOnXqwN7eXupwqBawt7eHnZ0dLl++DK1WC7VaXanzcGgvEZGNYY0IVafK1oZYnMMKcRARERFVGpMRIiIikhSTESIiIpIUkxEiIpLUuHHjIAgCJk2aVGzf5MmTIQgCxo0bBwAYOHAgevToUeJ5Dh8+DEEQcPz48VKvlZCQgCeffBKurq5wdnbGY489hqSkpFLLb9y4EeHh4XBzc4OjoyNatWqF77//vtTyUVFREAQBU6ZMKbWMNRQWFmLcuHFo3rw5FAoFBg0aVKHjNRoNWrVqBUEQEBcXZ96enp6OPn36wN/fHyqVCoGBgXjllVeQnZ1t3Ru4B5MRolpALgeGDTMtdz80ryaTy+QY1mQYhjUZBrnMRm6qFgsMDMSPP/6IgoIC87bCwkKsWbMGQUFB5m0TJ07Erl27cPny5WLniI6ORqtWrdCmTZsSr3HhwgU8/vjjCAsLw549e3Dy5El88MEHZY4A8fDwwPTp03H48GGcOnUK48ePx/jx47F9+/ZiZY8ePYrFixejRYsWFbl1AMDMmTPNCVd5GAwG2Nvb47XXXis1OSvL22+/Df+iR3nfRSaT4amnnsIvv/yCs2fPYsWKFfjjjz9KTBStiUN7iWoBtRpYv17qKKxLrVBj/dM2dlNWdvdkd9WtopPrtWnTBhcvXsTGjRsxevRoAKZaicDAQNStW9dcbsCAAfD29saKFSswY8YM8/b8/HysXbsWs2fPLvUa06dPR79+/TBnzhzztrvPXZKIiAiL16+//jpWrlyJAwcOoHfv3ubtubm5GD16NJYsWYKPP/64XPf8IBwdHbFw4UIAwMGDB3Hr1q1yH/v7779jx44d+Omnn/D7779b7HN3d8dLL71kfh0cHIzJkydj7ty5Vom7NKwZISKyUUWT3UmxVCYJGj9+PJYvX25+HR0djQkTJliUUSgUGDNmDFasWGExy+z69euh1WrNicy9jEYjtmzZgoYNG6J3797w9vZG+/btsWnTpnLHJ4oidu7ciTNnzqBLly4W+15++WX079+/UrUU1enGjRt44YUX8P3338PBweG+5a9fv46NGzeia9euVRoXkxEiInooPPfcczhw4AAuXbqEy5cv4+DBg3j22WeLlZswYQIuXbqEPXv2mLdFR0djyJAhcHd3L/HcqampyM3NxSeffII+ffpgx44dGDx4MIYMGYK9e/eWGVdWVhacnJygVCrRv39/fP311+jZs6d5/48//ojY2FhERUWV+173798PJycn8zJ79mz88MMPxbZZkyiKGDduHCZNmoTw8PAyy44cORIODg4ICAiAi4sLli5datVY7sVmGqJaIC/P9qaDz9PmcTr4+3BwMP17S3XtivLy8kL//v2xcuVKiKKI/v37w8vLq1i5sLAwdOzYEdHR0ejWrRsuXLiA/fv3Y8eOHaWe22g0AgCeeuopTJ06FQDQqlUrHDp0CIsWLSrzL39nZ2fExcUhNzcXO3fuRGRkJOrWrYuIiAhcuXIFr7/+Onbs2FGh2UfDw8MtOo5+9dVXuHbtGj799FPzNg8Pj3Kfrzy+/vprZGdnY9q0afct+7///Q8zZszAmTNn8N577yEyMhILFiywajx3q3Aysm/fPsydOxexsbFITk7Gzz//XO5evAcPHkTXrl3RrFkz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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Rafael Leao: MV 6.34 ± 1.43; FV 7.95 + 4.79\n"
]
},
{
"data": {
"text/plain": [
"[array([6.3442238 , 7.94607029]),\n",
" array([0.71331024, 2.395806 ], dtype=float32),\n",
" [<tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>,\n",
" <tfp.distributions._TensorCoercible 'tensor_coercible' batch_shape=[1] event_shape=[] dtype=float32>]]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict_player('Rafael Leao', plot = 1, log = 1)"
]
},
{
"cell_type": "markdown",
"id": "30744d7a",
"metadata": {},
"source": [
"Tensorflow seems to have a custom definition for SinhArcsinh distribution. \n",
"\n",
"Here the code to generate the probability density function is reproduced."
]
},
{
"cell_type": "code",
"execution_count": 110,
"id": "3ec6c3dc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[<matplotlib.lines.Line2D at 0x203bcc464f0>]"
]
},
"execution_count": 110,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# custom franction to calculate the probability density function\n",
"\n",
"def sinh_archsinh_pdf(x, mu, sigma, eps, delta):\n",
"\n",
" mul = np.sinh( np.arcsinh(2) * delta)\n",
" \n",
" mul = 2 / mul\n",
" \n",
" sigma_corr = sigma * mul\n",
" \n",
" z = (x - mu) / sigma_corr\n",
" \n",
" \n",
" \n",
" S = np.sinh( -eps + (1/delta) * np.arcsinh(z))\n",
" \n",
" f = np.exp(-0.5 * S * S)\n",
"\n",
" f /= np.sqrt(2 * np.pi)\n",
" \n",
" f *= 1 / ( sigma_corr * delta )\n",
" \n",
" f *= np.sqrt(1 + S * S)\n",
" \n",
" f /= np.sqrt(1 + z * z)\n",
" \n",
" return f\n",
" \n",
"\n",
"x = np.arange(start = 0, stop = 15, step = 0.001)\n",
"\n",
"\n",
"plt.plot(x, sinh_archsinh_pdf(x, 5.54, 1.4, 0.8, 1.68))\n",
"\n",
"\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "605dc968",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"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.13"
}
},
"nbformat": 4,
"nbformat_minor": 5
}