Files
fantabeto/6_neural_network_training.ipynb
T
2022-11-15 20:10:35 +01:00

7286 lines
609 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": 3,
"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_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>touches_live_ball</th>\n",
" <th>dribbles_completed</th>\n",
" <th>dribbles</th>\n",
" <th>passes_received</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",
" </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.617096</td>\n",
" <td>0.001171</td>\n",
" <td>0.004684</td>\n",
" <td>0.357143</td>\n",
" <td>0.007026</td>\n",
" <td>0.001171</td>\n",
" <td>0.009368</td>\n",
" <td>0.005855</td>\n",
" <td>0.018735</td>\n",
" <td>0.008197</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.736842</td>\n",
" <td>0.000000</td>\n",
" <td>0.002924</td>\n",
" <td>0.511696</td>\n",
" <td>0.002924</td>\n",
" <td>0.008772</td>\n",
" <td>0.002924</td>\n",
" <td>0.002924</td>\n",
" <td>0.005848</td>\n",
" <td>0.008772</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.574423</td>\n",
" <td>0.002096</td>\n",
" <td>0.005241</td>\n",
" <td>0.339623</td>\n",
" <td>0.006289</td>\n",
" <td>0.005241</td>\n",
" <td>0.013627</td>\n",
" <td>0.002096</td>\n",
" <td>0.015723</td>\n",
" <td>0.012579</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.598540</td>\n",
" <td>0.000000</td>\n",
" <td>0.001217</td>\n",
" <td>0.278589</td>\n",
" <td>0.013382</td>\n",
" <td>0.003650</td>\n",
" <td>0.015815</td>\n",
" <td>0.008516</td>\n",
" <td>0.048662</td>\n",
" <td>0.026764</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.634921</td>\n",
" <td>0.052910</td>\n",
" <td>0.111111</td>\n",
" <td>0.328042</td>\n",
" <td>0.026455</td>\n",
" <td>0.005291</td>\n",
" <td>0.021164</td>\n",
" <td>0.000000</td>\n",
" <td>0.026455</td>\n",
" <td>0.005291</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>22942</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.629371</td>\n",
" <td>0.013209</td>\n",
" <td>0.023310</td>\n",
" <td>0.358197</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",
" </tr>\n",
" <tr>\n",
" <th>22943</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.582181</td>\n",
" <td>0.001536</td>\n",
" <td>0.007680</td>\n",
" <td>0.341014</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",
" </tr>\n",
" <tr>\n",
" <th>22944</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.369932</td>\n",
" <td>0.008446</td>\n",
" <td>0.016047</td>\n",
" <td>0.262669</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",
" </tr>\n",
" <tr>\n",
" <th>22945</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.602410</td>\n",
" <td>0.023731</td>\n",
" <td>0.043447</td>\n",
" <td>0.453815</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",
" </tr>\n",
" <tr>\n",
" <th>22946</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.407086</td>\n",
" <td>0.008669</td>\n",
" <td>0.022993</td>\n",
" <td>0.320392</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",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>22947 rows × 131 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",
"22942 38 Tameze Verona Lazio 0 5.5 0 0 \n",
"22943 38 Hongla Verona Lazio 0 7.0 1 0 \n",
"22944 38 Lasagna Verona Lazio 0 7.0 1 0 \n",
"22945 38 Caprari Verona Lazio 0 6.0 0 0 \n",
"22946 38 Simeone Verona Lazio 0 7.0 1 0 \n",
"\n",
" cards_malus fantavote ... touches_live_ball dribbles_completed \\\n",
"0 0.0 10.0 ... 0.617096 0.001171 \n",
"1 0.0 6.0 ... 0.736842 0.000000 \n",
"2 0.5 5.5 ... 0.574423 0.002096 \n",
"3 0.5 5.0 ... 0.598540 0.000000 \n",
"4 0.5 5.5 ... 0.634921 0.052910 \n",
"... ... ... ... ... ... \n",
"22942 0.0 5.5 ... 0.629371 0.013209 \n",
"22943 0.5 9.5 ... 0.582181 0.001536 \n",
"22944 0.5 9.5 ... 0.369932 0.008446 \n",
"22945 0.0 6.0 ... 0.602410 0.023731 \n",
"22946 0.0 10.0 ... 0.407086 0.008669 \n",
"\n",
" dribbles passes_received miscontrols dispossessed fouls \\\n",
"0 0.004684 0.357143 0.007026 0.001171 0.009368 \n",
"1 0.002924 0.511696 0.002924 0.008772 0.002924 \n",
"2 0.005241 0.339623 0.006289 0.005241 0.013627 \n",
"3 0.001217 0.278589 0.013382 0.003650 0.015815 \n",
"4 0.111111 0.328042 0.026455 0.005291 0.021164 \n",
"... ... ... ... ... ... \n",
"22942 0.023310 0.358197 0.019814 0.010101 0.012821 \n",
"22943 0.007680 0.341014 0.018433 0.012289 0.023041 \n",
"22944 0.016047 0.262669 0.046453 0.022804 0.016047 \n",
"22945 0.043447 0.453815 0.033954 0.019715 0.015334 \n",
"22946 0.022993 0.320392 0.051263 0.030155 0.021108 \n",
"\n",
" fouled aerials_won aerials_lost \n",
"0 0.005855 0.018735 0.008197 \n",
"1 0.002924 0.005848 0.008772 \n",
"2 0.002096 0.015723 0.012579 \n",
"3 0.008516 0.048662 0.026764 \n",
"4 0.000000 0.026455 0.005291 \n",
"... ... ... ... \n",
"22942 0.013209 0.023699 0.021368 \n",
"22943 0.007680 0.023041 0.026114 \n",
"22944 0.008446 0.026182 0.041385 \n",
"22945 0.027017 0.002921 0.009858 \n",
"22946 0.021862 0.022616 0.040709 \n",
"\n",
"[22947 rows x 131 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>5.900000</td>\n",
" <td>0.220000</td>\n",
" <td>0.90</td>\n",
" <td>59.0</td>\n",
" <td>126.000000</td>\n",
" <td>222.000000</td>\n",
" <td>62.000000</td>\n",
" <td>55.000000</td>\n",
" <td>98.0</td>\n",
" <td>3.000000</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>21.000000</td>\n",
" <td>0.270000</td>\n",
" <td>-2.00</td>\n",
" <td>62.0</td>\n",
" <td>162.000000</td>\n",
" <td>408.000000</td>\n",
" <td>81.000000</td>\n",
" <td>104.000000</td>\n",
" <td>203.0</td>\n",
" <td>10.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Radu I.</td>\n",
" <td>Cremonese</td>\n",
" <td>Fiorentina</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>21.000000</td>\n",
" <td>0.290000</td>\n",
" <td>2.00</td>\n",
" <td>38.0</td>\n",
" <td>143.000000</td>\n",
" <td>265.000000</td>\n",
" <td>34.000000</td>\n",
" <td>67.000000</td>\n",
" <td>107.0</td>\n",
" <td>6.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</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>20.400000</td>\n",
" <td>0.300000</td>\n",
" <td>1.40</td>\n",
" <td>68.0</td>\n",
" <td>213.000000</td>\n",
" <td>505.000000</td>\n",
" <td>85.000000</td>\n",
" <td>76.000000</td>\n",
" <td>285.0</td>\n",
" <td>20.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</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>7.650000</td>\n",
" <td>0.270000</td>\n",
" <td>-1.35</td>\n",
" <td>28.0</td>\n",
" <td>79.500000</td>\n",
" <td>207.000000</td>\n",
" <td>28.500000</td>\n",
" <td>40.000000</td>\n",
" <td>64.0</td>\n",
" <td>3.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",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>841</th>\n",
" <td>14</td>\n",
" <td>Consigli</td>\n",
" <td>Sassuolo</td>\n",
" <td>Roma</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>16.600000</td>\n",
" <td>0.370000</td>\n",
" <td>-2.40</td>\n",
" <td>84.0</td>\n",
" <td>205.000000</td>\n",
" <td>523.000000</td>\n",
" <td>77.000000</td>\n",
" <td>134.000000</td>\n",
" <td>189.0</td>\n",
" <td>13.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>842</th>\n",
" <td>14</td>\n",
" <td>Zoet</td>\n",
" <td>Spezia</td>\n",
" <td>Udinese</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>17.616667</td>\n",
" <td>0.246667</td>\n",
" <td>-2.55</td>\n",
" <td>51.5</td>\n",
" <td>160.833333</td>\n",
" <td>305.666667</td>\n",
" <td>58.833333</td>\n",
" <td>68.666667</td>\n",
" <td>150.5</td>\n",
" <td>6.666667</td>\n",
" </tr>\n",
" <tr>\n",
" <th>843</th>\n",
" <td>14</td>\n",
" <td>Milinkovic-Savic V.</td>\n",
" <td>Torino</td>\n",
" <td>Sampdoria</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>16.800000</td>\n",
" <td>0.270000</td>\n",
" <td>0.80</td>\n",
" <td>97.0</td>\n",
" <td>335.000000</td>\n",
" <td>507.000000</td>\n",
" <td>55.000000</td>\n",
" <td>102.000000</td>\n",
" <td>160.0</td>\n",
" <td>11.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>844</th>\n",
" <td>14</td>\n",
" <td>Silvestri</td>\n",
" <td>Udinese</td>\n",
" <td>Spezia</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>6.0</td>\n",
" <td>...</td>\n",
" <td>16.000000</td>\n",
" <td>0.280000</td>\n",
" <td>2.00</td>\n",
" <td>59.0</td>\n",
" <td>148.000000</td>\n",
" <td>287.000000</td>\n",
" <td>57.000000</td>\n",
" <td>110.000000</td>\n",
" <td>194.0</td>\n",
" <td>4.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>845</th>\n",
" <td>14</td>\n",
" <td>Montipo'</td>\n",
" <td>Verona</td>\n",
" <td>Juventus</td>\n",
" <td>1</td>\n",
" <td>6.0</td>\n",
" <td>-1</td>\n",
" <td>0</td>\n",
" <td>0.0</td>\n",
" <td>5.0</td>\n",
" <td>...</td>\n",
" <td>19.700000</td>\n",
" <td>0.250000</td>\n",
" <td>-6.30</td>\n",
" <td>109.0</td>\n",
" <td>241.000000</td>\n",
" <td>329.000000</td>\n",
" <td>47.000000</td>\n",
" <td>116.000000</td>\n",
" <td>177.0</td>\n",
" <td>6.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>846 rows × 108 columns</p>\n",
"</div>"
],
"text/plain": [
" matchday player team oppteam home vote goals \\\n",
"0 1 Musso Atalanta Sampdoria 0 6.0 0 \n",
"1 1 Skorupski Bologna Lazio 0 6.5 -2 \n",
"2 1 Radu I. Cremonese Fiorentina 0 5.0 -3 \n",
"3 1 Vicario Empoli Spezia 0 5.5 -1 \n",
"4 1 Gollini Fiorentina Cremonese 1 5.0 -2 \n",
".. ... ... ... ... ... ... ... \n",
"841 14 Consigli Sassuolo Roma 1 6.5 -1 \n",
"842 14 Zoet Spezia Udinese 1 6.0 -1 \n",
"843 14 Milinkovic-Savic V. Torino Sampdoria 1 6.0 0 \n",
"844 14 Silvestri Udinese Spezia 0 7.0 -1 \n",
"845 14 Montipo' Verona Juventus 1 6.0 -1 \n",
"\n",
" assists cards_malus fantavote ... gk_psxg \\\n",
"0 0 0.5 5.5 ... 5.900000 \n",
"1 0 0.0 4.5 ... 21.000000 \n",
"2 0 0.0 2.0 ... 21.000000 \n",
"3 0 0.0 4.5 ... 20.400000 \n",
"4 0 0.0 3.0 ... 7.650000 \n",
".. ... ... ... ... ... \n",
"841 0 0.0 5.5 ... 16.600000 \n",
"842 0 0.0 5.0 ... 17.616667 \n",
"843 0 0.0 6.0 ... 16.800000 \n",
"844 0 0.0 6.0 ... 16.000000 \n",
"845 0 0.0 5.0 ... 19.700000 \n",
"\n",
" gk_psnpxg_per_shot_on_target_against gk_psxg_net \\\n",
"0 0.220000 0.90 \n",
"1 0.270000 -2.00 \n",
"2 0.290000 2.00 \n",
"3 0.300000 1.40 \n",
"4 0.270000 -1.35 \n",
".. ... ... \n",
"841 0.370000 -2.40 \n",
"842 0.246667 -2.55 \n",
"843 0.270000 0.80 \n",
"844 0.280000 2.00 \n",
"845 0.250000 -6.30 \n",
"\n",
" gk_passes_completed_launched gk_passes_launched gk_passes \\\n",
"0 59.0 126.000000 222.000000 \n",
"1 62.0 162.000000 408.000000 \n",
"2 38.0 143.000000 265.000000 \n",
"3 68.0 213.000000 505.000000 \n",
"4 28.0 79.500000 207.000000 \n",
".. ... ... ... \n",
"841 84.0 205.000000 523.000000 \n",
"842 51.5 160.833333 305.666667 \n",
"843 97.0 335.000000 507.000000 \n",
"844 59.0 148.000000 287.000000 \n",
"845 109.0 241.000000 329.000000 \n",
"\n",
" gk_passes_throws gk_goal_kicks gk_crosses gk_crosses_stopped \n",
"0 62.000000 55.000000 98.0 3.000000 \n",
"1 81.000000 104.000000 203.0 10.000000 \n",
"2 34.000000 67.000000 107.0 6.000000 \n",
"3 85.000000 76.000000 285.0 20.000000 \n",
"4 28.500000 40.000000 64.0 3.000000 \n",
".. ... ... ... ... \n",
"841 77.000000 134.000000 189.0 13.000000 \n",
"842 58.833333 68.666667 150.5 6.666667 \n",
"843 55.000000 102.000000 160.0 11.000000 \n",
"844 57.000000 110.000000 194.0 4.000000 \n",
"845 47.000000 116.000000 177.0 6.000000 \n",
"\n",
"[846 rows x 108 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": 42,
"id": "493b0495",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Peppe\\AppData\\Local\\Temp\\ipykernel_7376\\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>24.0</td>\n",
" <td>46.5</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>21.00</td>\n",
" <td>14.00</td>\n",
" <td>5.0</td>\n",
" <td>6.00</td>\n",
" <td>...</td>\n",
" <td>161.00</td>\n",
" <td>178.0</td>\n",
" <td>19.0</td>\n",
" <td>0.00</td>\n",
" <td>6.00</td>\n",
" <td>1.0</td>\n",
" <td>896.0</td>\n",
" <td>194.00</td>\n",
" <td>229.00</td>\n",
" <td>45.900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Bologna</th>\n",
" <td>Bologna</td>\n",
" <td>23.0</td>\n",
" <td>51.1</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>20.00</td>\n",
" <td>15.00</td>\n",
" <td>3.0</td>\n",
" <td>3.00</td>\n",
" <td>...</td>\n",
" <td>188.00</td>\n",
" <td>170.0</td>\n",
" <td>25.0</td>\n",
" <td>2.00</td>\n",
" <td>3.00</td>\n",
" <td>0.0</td>\n",
" <td>778.0</td>\n",
" <td>168.00</td>\n",
" <td>132.00</td>\n",
" <td>56.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cremonese</th>\n",
" <td>Cremonese</td>\n",
" <td>27.0</td>\n",
" <td>43.7</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>11.00</td>\n",
" <td>5.00</td>\n",
" <td>1.0</td>\n",
" <td>3.00</td>\n",
" <td>...</td>\n",
" <td>154.00</td>\n",
" <td>200.0</td>\n",
" <td>20.0</td>\n",
" <td>2.00</td>\n",
" <td>3.00</td>\n",
" <td>0.0</td>\n",
" <td>802.0</td>\n",
" <td>259.00</td>\n",
" <td>198.00</td>\n",
" <td>56.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Empoli</th>\n",
" <td>Empoli</td>\n",
" <td>25.0</td>\n",
" <td>46.2</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>12.00</td>\n",
" <td>5.00</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>...</td>\n",
" <td>190.00</td>\n",
" <td>160.0</td>\n",
" <td>29.0</td>\n",
" <td>2.00</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>780.0</td>\n",
" <td>177.00</td>\n",
" <td>152.00</td>\n",
" <td>53.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fiorentina</th>\n",
" <td>Fiorentina</td>\n",
" <td>25.0</td>\n",
" <td>58.1</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>18.00</td>\n",
" <td>16.00</td>\n",
" <td>1.0</td>\n",
" <td>3.00</td>\n",
" <td>...</td>\n",
" <td>199.00</td>\n",
" <td>186.0</td>\n",
" <td>38.0</td>\n",
" <td>1.00</td>\n",
" <td>3.00</td>\n",
" <td>0.0</td>\n",
" <td>744.0</td>\n",
" <td>208.00</td>\n",
" <td>240.00</td>\n",
" <td>46.400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Verona</th>\n",
" <td>Hellas Verona</td>\n",
" <td>29.0</td>\n",
" <td>43.9</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>11.00</td>\n",
" <td>8.00</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>...</td>\n",
" <td>151.00</td>\n",
" <td>217.0</td>\n",
" <td>18.0</td>\n",
" <td>1.00</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>810.0</td>\n",
" <td>269.00</td>\n",
" <td>269.00</td>\n",
" <td>50.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Inter</th>\n",
" <td>Inter</td>\n",
" <td>23.0</td>\n",
" <td>54.5</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>33.00</td>\n",
" <td>23.00</td>\n",
" <td>2.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>192.00</td>\n",
" <td>163.0</td>\n",
" <td>15.0</td>\n",
" <td>2.00</td>\n",
" <td>2.00</td>\n",
" <td>1.0</td>\n",
" <td>652.0</td>\n",
" <td>144.00</td>\n",
" <td>185.00</td>\n",
" <td>43.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Juventus</th>\n",
" <td>Juventus</td>\n",
" <td>26.0</td>\n",
" <td>49.9</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>24.00</td>\n",
" <td>19.00</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>169.00</td>\n",
" <td>166.0</td>\n",
" <td>22.0</td>\n",
" <td>0.00</td>\n",
" <td>2.00</td>\n",
" <td>0.0</td>\n",
" <td>730.0</td>\n",
" <td>195.00</td>\n",
" <td>174.00</td>\n",
" <td>52.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lazio</th>\n",
" <td>Lazio</td>\n",
" <td>21.0</td>\n",
" <td>50.6</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>25.00</td>\n",
" <td>20.00</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>207.00</td>\n",
" <td>132.0</td>\n",
" <td>36.0</td>\n",
" <td>1.00</td>\n",
" <td>2.00</td>\n",
" <td>1.0</td>\n",
" <td>801.0</td>\n",
" <td>159.00</td>\n",
" <td>136.00</td>\n",
" <td>53.900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lecce</th>\n",
" <td>Lecce</td>\n",
" <td>24.0</td>\n",
" <td>40.9</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>14.00</td>\n",
" <td>9.00</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>198.00</td>\n",
" <td>202.0</td>\n",
" <td>33.0</td>\n",
" <td>3.00</td>\n",
" <td>2.00</td>\n",
" <td>0.0</td>\n",
" <td>762.0</td>\n",
" <td>263.00</td>\n",
" <td>215.00</td>\n",
" <td>55.000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Milan</th>\n",
" <td>Milan</td>\n",
" <td>27.0</td>\n",
" <td>53.7</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>27.00</td>\n",
" <td>22.00</td>\n",
" <td>2.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>175.00</td>\n",
" <td>173.0</td>\n",
" <td>17.0</td>\n",
" <td>2.00</td>\n",
" <td>2.00</td>\n",
" <td>2.0</td>\n",
" <td>746.0</td>\n",
" <td>184.00</td>\n",
" <td>220.00</td>\n",
" <td>45.500</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Monza</th>\n",
" <td>Monza</td>\n",
" <td>29.0</td>\n",
" <td>55.6</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>16.00</td>\n",
" <td>10.00</td>\n",
" <td>2.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>218.00</td>\n",
" <td>187.0</td>\n",
" <td>25.0</td>\n",
" <td>0.00</td>\n",
" <td>2.00</td>\n",
" <td>0.0</td>\n",
" <td>730.0</td>\n",
" <td>152.00</td>\n",
" <td>167.00</td>\n",
" <td>47.600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Napoli</th>\n",
" <td>Napoli</td>\n",
" <td>24.0</td>\n",
" <td>60.0</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>37.00</td>\n",
" <td>31.00</td>\n",
" <td>3.0</td>\n",
" <td>3.00</td>\n",
" <td>...</td>\n",
" <td>208.00</td>\n",
" <td>127.0</td>\n",
" <td>19.0</td>\n",
" <td>1.00</td>\n",
" <td>3.00</td>\n",
" <td>0.0</td>\n",
" <td>734.0</td>\n",
" <td>152.00</td>\n",
" <td>193.00</td>\n",
" <td>44.100</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Roma</th>\n",
" <td>Roma</td>\n",
" <td>24.0</td>\n",
" <td>50.6</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>18.00</td>\n",
" <td>11.00</td>\n",
" <td>2.0</td>\n",
" <td>4.00</td>\n",
" <td>...</td>\n",
" <td>208.00</td>\n",
" <td>169.0</td>\n",
" <td>8.0</td>\n",
" <td>0.00</td>\n",
" <td>4.00</td>\n",
" <td>0.0</td>\n",
" <td>768.0</td>\n",
" <td>149.00</td>\n",
" <td>179.00</td>\n",
" <td>45.400</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Salernitana</th>\n",
" <td>Salernitana</td>\n",
" <td>24.0</td>\n",
" <td>46.9</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>18.00</td>\n",
" <td>12.00</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>...</td>\n",
" <td>159.00</td>\n",
" <td>168.0</td>\n",
" <td>38.0</td>\n",
" <td>5.00</td>\n",
" <td>1.00</td>\n",
" <td>1.0</td>\n",
" <td>795.0</td>\n",
" <td>176.00</td>\n",
" <td>186.00</td>\n",
" <td>48.600</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sampdoria</th>\n",
" <td>Sampdoria</td>\n",
" <td>24.0</td>\n",
" <td>51.2</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>6.00</td>\n",
" <td>6.00</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>...</td>\n",
" <td>239.00</td>\n",
" <td>206.0</td>\n",
" <td>47.0</td>\n",
" <td>1.00</td>\n",
" <td>0.00</td>\n",
" <td>0.0</td>\n",
" <td>806.0</td>\n",
" <td>242.00</td>\n",
" <td>264.00</td>\n",
" <td>47.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sassuolo</th>\n",
" <td>Sassuolo</td>\n",
" <td>26.0</td>\n",
" <td>48.1</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>15.00</td>\n",
" <td>12.00</td>\n",
" <td>1.0</td>\n",
" <td>2.00</td>\n",
" <td>...</td>\n",
" <td>189.00</td>\n",
" <td>126.0</td>\n",
" <td>49.0</td>\n",
" <td>2.00</td>\n",
" <td>2.00</td>\n",
" <td>0.0</td>\n",
" <td>758.0</td>\n",
" <td>155.00</td>\n",
" <td>133.00</td>\n",
" <td>53.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Spezia</th>\n",
" <td>Spezia</td>\n",
" <td>24.0</td>\n",
" <td>47.5</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>12.00</td>\n",
" <td>8.00</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>...</td>\n",
" <td>149.00</td>\n",
" <td>198.0</td>\n",
" <td>36.0</td>\n",
" <td>1.00</td>\n",
" <td>1.00</td>\n",
" <td>2.0</td>\n",
" <td>844.0</td>\n",
" <td>251.00</td>\n",
" <td>208.00</td>\n",
" <td>54.700</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Torino</th>\n",
" <td>Torino</td>\n",
" <td>23.0</td>\n",
" <td>51.3</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>16.00</td>\n",
" <td>11.00</td>\n",
" <td>1.0</td>\n",
" <td>1.00</td>\n",
" <td>...</td>\n",
" <td>161.00</td>\n",
" <td>209.0</td>\n",
" <td>17.0</td>\n",
" <td>3.00</td>\n",
" <td>1.00</td>\n",
" <td>0.0</td>\n",
" <td>771.0</td>\n",
" <td>248.00</td>\n",
" <td>222.00</td>\n",
" <td>52.800</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Udinese</th>\n",
" <td>Udinese</td>\n",
" <td>22.0</td>\n",
" <td>49.7</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>23.00</td>\n",
" <td>20.00</td>\n",
" <td>0.0</td>\n",
" <td>0.00</td>\n",
" <td>...</td>\n",
" <td>188.00</td>\n",
" <td>175.0</td>\n",
" <td>17.0</td>\n",
" <td>2.00</td>\n",
" <td>0.00</td>\n",
" <td>1.0</td>\n",
" <td>759.0</td>\n",
" <td>154.00</td>\n",
" <td>197.00</td>\n",
" <td>43.900</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Avg</th>\n",
" <td>Avg</td>\n",
" <td>24.7</td>\n",
" <td>50.0</td>\n",
" <td>15.0</td>\n",
" <td>165.0</td>\n",
" <td>1350.0</td>\n",
" <td>18.85</td>\n",
" <td>13.85</td>\n",
" <td>1.4</td>\n",
" <td>1.95</td>\n",
" <td>...</td>\n",
" <td>185.15</td>\n",
" <td>175.6</td>\n",
" <td>26.4</td>\n",
" <td>1.55</td>\n",
" <td>1.95</td>\n",
" <td>0.5</td>\n",
" <td>773.3</td>\n",
" <td>194.95</td>\n",
" <td>194.95</td>\n",
" <td>49.925</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>21 rows × 313 columns</p>\n",
"</div>"
],
"text/plain": [
" team team_players_used team_possession team_games \\\n",
"Atalanta Atalanta 24.0 46.5 15.0 \n",
"Bologna Bologna 23.0 51.1 15.0 \n",
"Cremonese Cremonese 27.0 43.7 15.0 \n",
"Empoli Empoli 25.0 46.2 15.0 \n",
"Fiorentina Fiorentina 25.0 58.1 15.0 \n",
"Verona Hellas Verona 29.0 43.9 15.0 \n",
"Inter Inter 23.0 54.5 15.0 \n",
"Juventus Juventus 26.0 49.9 15.0 \n",
"Lazio Lazio 21.0 50.6 15.0 \n",
"Lecce Lecce 24.0 40.9 15.0 \n",
"Milan Milan 27.0 53.7 15.0 \n",
"Monza Monza 29.0 55.6 15.0 \n",
"Napoli Napoli 24.0 60.0 15.0 \n",
"Roma Roma 24.0 50.6 15.0 \n",
"Salernitana Salernitana 24.0 46.9 15.0 \n",
"Sampdoria Sampdoria 24.0 51.2 15.0 \n",
"Sassuolo Sassuolo 26.0 48.1 15.0 \n",
"Spezia Spezia 24.0 47.5 15.0 \n",
"Torino Torino 23.0 51.3 15.0 \n",
"Udinese Udinese 22.0 49.7 15.0 \n",
"Avg Avg 24.7 50.0 15.0 \n",
"\n",
" team_games_starts team_minutes team_goals team_assists \\\n",
"Atalanta 165.0 1350.0 21.00 14.00 \n",
"Bologna 165.0 1350.0 20.00 15.00 \n",
"Cremonese 165.0 1350.0 11.00 5.00 \n",
"Empoli 165.0 1350.0 12.00 5.00 \n",
"Fiorentina 165.0 1350.0 18.00 16.00 \n",
"Verona 165.0 1350.0 11.00 8.00 \n",
"Inter 165.0 1350.0 33.00 23.00 \n",
"Juventus 165.0 1350.0 24.00 19.00 \n",
"Lazio 165.0 1350.0 25.00 20.00 \n",
"Lecce 165.0 1350.0 14.00 9.00 \n",
"Milan 165.0 1350.0 27.00 22.00 \n",
"Monza 165.0 1350.0 16.00 10.00 \n",
"Napoli 165.0 1350.0 37.00 31.00 \n",
"Roma 165.0 1350.0 18.00 11.00 \n",
"Salernitana 165.0 1350.0 18.00 12.00 \n",
"Sampdoria 165.0 1350.0 6.00 6.00 \n",
"Sassuolo 165.0 1350.0 15.00 12.00 \n",
"Spezia 165.0 1350.0 12.00 8.00 \n",
"Torino 165.0 1350.0 16.00 11.00 \n",
"Udinese 165.0 1350.0 23.00 20.00 \n",
"Avg 165.0 1350.0 18.85 13.85 \n",
"\n",
" team_pens_made team_pens_att ... vs_team_fouls \\\n",
"Atalanta 5.0 6.00 ... 161.00 \n",
"Bologna 3.0 3.00 ... 188.00 \n",
"Cremonese 1.0 3.00 ... 154.00 \n",
"Empoli 0.0 0.00 ... 190.00 \n",
"Fiorentina 1.0 3.00 ... 199.00 \n",
"Verona 0.0 0.00 ... 151.00 \n",
"Inter 2.0 2.00 ... 192.00 \n",
"Juventus 1.0 2.00 ... 169.00 \n",
"Lazio 1.0 2.00 ... 207.00 \n",
"Lecce 1.0 2.00 ... 198.00 \n",
"Milan 2.0 2.00 ... 175.00 \n",
"Monza 2.0 2.00 ... 218.00 \n",
"Napoli 3.0 3.00 ... 208.00 \n",
"Roma 2.0 4.00 ... 208.00 \n",
"Salernitana 1.0 1.00 ... 159.00 \n",
"Sampdoria 0.0 0.00 ... 239.00 \n",
"Sassuolo 1.0 2.00 ... 189.00 \n",
"Spezia 1.0 1.00 ... 149.00 \n",
"Torino 1.0 1.00 ... 161.00 \n",
"Udinese 0.0 0.00 ... 188.00 \n",
"Avg 1.4 1.95 ... 185.15 \n",
"\n",
" vs_team_fouled vs_team_offsides vs_team_pens_won \\\n",
"Atalanta 178.0 19.0 0.00 \n",
"Bologna 170.0 25.0 2.00 \n",
"Cremonese 200.0 20.0 2.00 \n",
"Empoli 160.0 29.0 2.00 \n",
"Fiorentina 186.0 38.0 1.00 \n",
"Verona 217.0 18.0 1.00 \n",
"Inter 163.0 15.0 2.00 \n",
"Juventus 166.0 22.0 0.00 \n",
"Lazio 132.0 36.0 1.00 \n",
"Lecce 202.0 33.0 3.00 \n",
"Milan 173.0 17.0 2.00 \n",
"Monza 187.0 25.0 0.00 \n",
"Napoli 127.0 19.0 1.00 \n",
"Roma 169.0 8.0 0.00 \n",
"Salernitana 168.0 38.0 5.00 \n",
"Sampdoria 206.0 47.0 1.00 \n",
"Sassuolo 126.0 49.0 2.00 \n",
"Spezia 198.0 36.0 1.00 \n",
"Torino 209.0 17.0 3.00 \n",
"Udinese 175.0 17.0 2.00 \n",
"Avg 175.6 26.4 1.55 \n",
"\n",
" vs_team_pens_conceded vs_team_own_goals \\\n",
"Atalanta 6.00 1.0 \n",
"Bologna 3.00 0.0 \n",
"Cremonese 3.00 0.0 \n",
"Empoli 0.00 0.0 \n",
"Fiorentina 3.00 0.0 \n",
"Verona 0.00 1.0 \n",
"Inter 2.00 1.0 \n",
"Juventus 2.00 0.0 \n",
"Lazio 2.00 1.0 \n",
"Lecce 2.00 0.0 \n",
"Milan 2.00 2.0 \n",
"Monza 2.00 0.0 \n",
"Napoli 3.00 0.0 \n",
"Roma 4.00 0.0 \n",
"Salernitana 1.00 1.0 \n",
"Sampdoria 0.00 0.0 \n",
"Sassuolo 2.00 0.0 \n",
"Spezia 1.00 2.0 \n",
"Torino 1.00 0.0 \n",
"Udinese 0.00 1.0 \n",
"Avg 1.95 0.5 \n",
"\n",
" vs_team_ball_recoveries vs_team_aerials_won \\\n",
"Atalanta 896.0 194.00 \n",
"Bologna 778.0 168.00 \n",
"Cremonese 802.0 259.00 \n",
"Empoli 780.0 177.00 \n",
"Fiorentina 744.0 208.00 \n",
"Verona 810.0 269.00 \n",
"Inter 652.0 144.00 \n",
"Juventus 730.0 195.00 \n",
"Lazio 801.0 159.00 \n",
"Lecce 762.0 263.00 \n",
"Milan 746.0 184.00 \n",
"Monza 730.0 152.00 \n",
"Napoli 734.0 152.00 \n",
"Roma 768.0 149.00 \n",
"Salernitana 795.0 176.00 \n",
"Sampdoria 806.0 242.00 \n",
"Sassuolo 758.0 155.00 \n",
"Spezia 844.0 251.00 \n",
"Torino 771.0 248.00 \n",
"Udinese 759.0 154.00 \n",
"Avg 773.3 194.95 \n",
"\n",
" vs_team_aerials_lost vs_team_aerials_won_pct \n",
"Atalanta 229.00 45.900 \n",
"Bologna 132.00 56.000 \n",
"Cremonese 198.00 56.700 \n",
"Empoli 152.00 53.800 \n",
"Fiorentina 240.00 46.400 \n",
"Verona 269.00 50.000 \n",
"Inter 185.00 43.800 \n",
"Juventus 174.00 52.800 \n",
"Lazio 136.00 53.900 \n",
"Lecce 215.00 55.000 \n",
"Milan 220.00 45.500 \n",
"Monza 167.00 47.600 \n",
"Napoli 193.00 44.100 \n",
"Roma 179.00 45.400 \n",
"Salernitana 186.00 48.600 \n",
"Sampdoria 264.00 47.800 \n",
"Sassuolo 133.00 53.800 \n",
"Spezia 208.00 54.700 \n",
"Torino 222.00 52.800 \n",
"Udinese 197.00 43.900 \n",
"Avg 194.95 49.925 \n",
"\n",
"[21 rows x 313 columns]"
]
},
"execution_count": 42,
"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": "f4017b2f",
"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",
"\n",
"features_rel_gamecorr = [\n",
" 'goals',\n",
" 'xg',\n",
" 'npxg',\n",
" 'assists',\n",
" 'cards_yellow',\n",
" 'cards_red'\n",
"]\n",
"\n",
"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",
"\n",
"\n",
"\n",
"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",
"]\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": 10,
"id": "6f8707b8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" \n",
"Averaging players stats with past seasons:\n",
"Meret 1\n",
"Provedel 1\n",
"Maignan 0.9165064102564102\n",
"Silvestri 1\n",
"Sepe 1\n",
"Szczesny 1\n",
"Consigli 1\n",
"Falcone 1\n",
"Musso 1\n",
"Vicario 1\n",
"Rui Patricio 1\n",
"Milinkovic-Savic V. 1\n",
"Audero 1\n",
"Montipo' 1\n",
"Sportiello 1\n",
"Skorupski 1\n",
"Perin 1\n",
"Handanovic 0.9058905058905058\n",
"Tatarusanu 1\n",
"Dragowski 1\n",
"Terracciano 1\n",
"Berisha 1\n",
"Radu I. 1\n",
"Cragno 1\n",
"Mirante 0.9165064102564102\n",
"Ujkani 1\n",
"Pegolo 1\n",
"Padelli 1\n",
"Bardi 1\n",
"Cordaz 0.9058905058905058\n",
"Pinsoglio 1\n",
"Fiorillo 1\n",
"Sirigu 1\n",
"Rossi F. 1\n",
"Berardi A. 1\n",
"Gemello 1\n",
"Ravaglia 1\n",
"Zoet 1\n",
"Boer 1\n",
"Adamonis 1\n",
"Marfella 1\n",
"Zovko 1\n",
"Piana 1\n",
"Smalling 1\n",
"Hernandez T. 0.8510416666666667\n",
"Bastoni S. 0.7433416046319272\n",
"Udogie 0.6583882783882784\n",
"Dumfries 0.9522144522144521\n",
"Romagnoli 1\n",
"Rodrigo Becao 0.5386813186813186\n",
"Parisi 1\n",
"Mazzocchi 1\n",
"Bremer 0.854040404040404\n",
"Demiral 0.9726190476190477\n",
"Dimarco 0.9819711538461539\n",
"Di Lorenzo 0.9522144522144521\n",
"Ibanez 0.92420814479638\n",
"Tomori 1\n",
"Toloi 1\n",
"Gosens 1\n",
"Rrahmani 0.5078477078477078\n",
"Kalulu 1\n",
"Bijol affine to Rodrigo Becao\n",
"Bijol 0.7182417582417583\n",
"Doig affine to Lazovic\n",
"Doig 0.554524886877828\n",
"Mario Rui 0.739366515837104\n",
"Spinazzola 1\n",
"Lazzari 0.878494623655914\n",
"Mancini 0.9522144522144521\n",
"Danilo 1\n",
"Kyriakopoulos 0.7946065428824048\n",
"Vojvoda 0.6501326259946949\n",
"Scalvini 1\n",
"Skriniar 0.8978021978021977\n",
"Juan Jesus 0.5985347985347984\n",
"Bonucci 0.7855769230769231\n",
"Calabria 0.5640039447731755\n",
"Bastoni 0.7433416046319272\n",
"Depaoli 1\n",
"Darmian 0.8379487179487178\n",
"Mari' 1\n",
"Martinez Quarta 1\n",
"Maehle 1\n",
"Biraghi 0.7926541926541926\n",
"Medel 0.9522144522144521\n",
"Patric 0.7855769230769231\n",
"Rodriguez R. 0.8009803921568628\n",
"Aina 0.9975579975579973\n",
"Cambiaso 1\n",
"Perez N. 1\n",
"Hysaj 0.8668435013262599\n",
"Faraoni 0.5237179487179487\n",
"Milenkovic 0.6777526395173453\n",
"Marusic 0.9522144522144521\n",
"Colley 0.8510416666666667\n",
"Toljan 1\n",
"Ampadu 0.7475685234305923\n",
"Singo 0.6583882783882784\n",
"Casale 0.4817663817663818\n",
"Soppy 0.7742673992673993\n",
"Kiwior 1\n",
"Ghiglione 0.8338264299802761\n",
"De Vrij 0.837948717948718\n",
"Alex Sandro 0.9726190476190477\n",
"Ceccherini 0.554524886877828\n",
"Fazio 1\n",
"Rogerio 1\n",
"Reca 0.9217435897435896\n",
"Gunter 0.9077777777777778\n",
"Djidji 1\n",
"Augello 0.8146723646723646\n",
"Bellanova 0.6294044665012408\n",
"Erlic 0.7226495726495726\n",
"Ismajli 1\n",
"Ebuehi 0.6846153846153847\n",
"Kasius 1\n",
"Acerbi 0.6503846153846154\n",
"Zappacosta 0.12322775263951734\n",
"Chiriches 0.37378426171529616\n",
"Gyomber 0.7433416046319272\n",
"Pezzella Giu. 0.6194139194139194\n",
"Ferrari G. 0.8146723646723646\n",
"Bereszynski 0.8379487179487178\n",
"Hateboer 1\n",
"Karsdorp 0.5237179487179487\n",
"Nuytinck 0.4655270655270655\n",
"Lykogiannis 0.9291208791208794\n",
"Buongiorno 1\n",
"Nikolaou 0.8146723646723646\n",
"Ayhan 0.910813823857302\n",
"Stojanovic 0.7617715617715617\n",
"Izzo 1\n",
"D'ambrosio 0.418974358974359\n",
"Rugani 0.3491452991452992\n",
"De Sciglio 0.837948717948718\n",
"Luperto 1\n",
"De Silvestri 0.6081885856079404\n",
"Djimsiti 0.3378825475599669\n",
"Palomino 0.06161387631975867\n",
"Bonifazi 0.6665501165501164\n",
"Hristov 0.9858220211161387\n",
"Kjaer 1\n",
"Igor 0.6982905982905981\n",
"Soumaoro 0.7481684981684981\n",
"Ballo-Toure' affine to Calabria\n",
"Ballo-Toure' 0.24171597633136094\n",
"De Winter 1\n",
"Ferrari A. 1\n",
"Florenzi 0.1745726495726496\n",
"Sala 0.6982905982905984\n",
"Caldara 0.6294044665012408\n",
"Murru 0.476107226107226\n",
"Walukiewicz 0.9291208791208794\n",
"Walukiewicz 0.3746576500422653\n",
"Kumbulla 0.369683257918552\n",
"Amian 0.5237179487179487\n",
"Ostigard 1\n",
"Marrone 0.20647130647130646\n",
"Radovanovic 1\n",
"Venuti 0.5464882943143813\n",
"Magnani 1\n",
"Magnani 0.33517948717948715\n",
"Terzic 1\n",
"Gabbia 1\n",
"Zortea 0.598054818744474\n",
"Dawidowicz 0.8625942684766214\n",
"Carboni 0.2890598290598291\n",
"Lovato 0.2709935897435898\n",
"Tuia 0.16058879392212727\n",
"Amione 1\n",
"Vasquez 0.5419871794871796\n",
"Zima 0.7332051282051282\n",
"Coppola D. 1\n",
"Conti 0.29926739926739926\n",
"Conti 1\n",
"Tonelli 0.0\n",
"Radu 0.0\n",
"Fares 0.0\n",
"Fares 0.0\n",
"Marchizza 0.22820512820512823\n",
"Romagna 0.0\n",
"Romagna 0.0\n",
"Ranieri L. 0.08029439696106364\n",
"Cetin 0.3613247863247864\n",
"Muldur 0.06757650951199339\n",
"Ferrer 0.0\n",
"Ruggeri 0.6194139194139195\n",
"Antov 1\n",
"Amey 0.0\n",
"Kamenovic 0.0\n",
"Vina 0.24171597633136094\n",
"Zanoli 0.1745726495726496\n",
"Ruan 0.418974358974359\n",
"Cacace 0.418974358974359\n",
"Milinkovic-Savic 0.7926541926541926\n",
"Barella 0.8728632478632479\n",
"Zaccagni 0.9390804597701149\n",
"Zielinski 0.8978021978021977\n",
"Luis Alberto 0.8009803921568628\n",
"Frattesi 0.8728632478632479\n",
"Politano 0.8887334887334886\n",
"Koopmeiners 1\n",
"Pereyra 1\n",
"Felipe Anderson 0.8269230769230769\n",
"Calhanoglu 0.8625942684766214\n",
"Diaz B. 0.878494623655914\n",
"Pellegrini Lo. 0.9726190476190477\n",
"Zambo Anguissa 1\n",
"Lobotka 1\n",
"Malinovskyi 0.9776068376068375\n",
"Candreva 0.9033119658119659\n",
"Pasalic 0.7926541926541926\n",
"Bennacer 1\n",
"Samardzic 1\n",
"Chiesa 0.29926739926739926\n",
"Brozovic 0.5985347985347985\n",
"Bonaventura 0.8109181141439206\n",
"Sensi 1\n",
"Bandinelli 0.8978021978021977\n",
"Ikone' 1\n",
"Barak 0.897082228116711\n",
"Mkhitaryan 0.8392059553349878\n",
"Pessina 1\n",
"Tonali 0.7564814814814815\n",
"Arslan 0.9776068376068375\n",
"Lazovic 0.6777526395173453\n",
"Cristante 0.92420814479638\n",
"Elmas 0.7926541926541926\n",
"Bajrami 0.8978021978021977\n",
"Vecino 1\n",
"Mandragora 1\n",
"Djuricic 1\n",
"Lukic 0.7182417582417583\n",
"Soriano 0.8379487179487178\n",
"Zaniolo 0.822985347985348\n",
"Sottil 0.6110042735042734\n",
"Traore' Hj. 0.4054590570719603\n",
"Messias 0.88629191321499\n",
"Cuadrado 0.8887334887334886\n",
"Locatelli 0.8109181141439206\n",
"Rabiot 0.7201121794871794\n",
"Dominguez 0.9726190476190477\n",
"Tameze 0.7717948717948717\n",
"Miranchuk 1\n",
"De Roon 0.9077777777777778\n",
"Verdi 1\n",
"Walace 0.8728632478632479\n",
"Mckennie 1\n",
"Makengo 0.7617715617715617\n",
"Ricci S. 1\n",
"Coulibaly L. 1\n",
"Sabiri 1\n",
"Miretti 1\n",
"Haas 1\n",
"Orsolini 0.8668435013262599\n",
"Ederson D.s. 1\n",
"El Shaarawy 0.7758784425451091\n",
"Bourabia 1\n",
"Henderson L. 0.7166666666666667\n",
"Maggiore 0.6194139194139194\n",
"Ilic 0.4582532051282051\n",
"Kovalenko 0.5640039447731755\n",
"Zalewski 1\n",
"Ferguson affine to Svanberg\n",
"Ferguson 0.5237179487179487\n",
"Saponara 0.8668435013262599\n",
"Rincon 1\n",
"Cataldi 0.8510416666666667\n",
"Zurkowski 0.1238827838827839\n",
"Rovella 1\n",
"Agudelo 1\n",
"Amrabat 1\n",
"Lopez M. 0.7780952380952382\n",
"Gyasi 0.7564814814814815\n",
"Pobega 0.5912587412587413\n",
"Harroui 1\n",
"Ceide 1\n",
"Grassi 0.6503846153846154\n",
"Krunic 0.5985347985347985\n",
"Linetty 1\n",
"Miguel Veloso 1\n",
"Ekdal 0.9172090729783037\n",
"Schouten 1\n",
"Saelemaekers 0.4073361823361823\n",
"Basic 0.7946065428824048\n",
"Aebischer 1\n",
"Ranocchia F. affine to Henderson L.\n",
"Ranocchia F. 0.38589743589743586\n",
"Verre 1\n",
"Gagliardini 0.5819088319088319\n",
"Vieira 1\n",
"Castrovilli 0.0\n",
"Maldini 1\n",
"Maldini 1\n",
"Marin 0.9033119658119659\n",
"Maleh 0.5237179487179487\n",
"Matheus Henrique 0.7541538461538461\n",
"Asllani 0.6598104793756968\n",
"Duncan 0.5713286713286713\n",
"Molina S. 0.37378426171529616\n",
"Kastanos 0.6207027540360873\n",
"Bohinen 1\n",
"Benassi 0.3613247863247864\n",
"Vignato 0.6982905982905984\n",
"Obiang 1\n",
"Obiang 0.31740481740481735\n",
"Askildsen 1\n",
"Hongla 1\n",
"Yepes 1\n",
"Capezzi 0.0\n",
"Jajalo 0.28566433566433563\n",
"Bakayoko 0.0\n",
"Fagioli affine to Henderson L.\n",
"Fagioli 0.38589743589743586\n",
"Demme 0.33076923076923076\n",
"Akpa Akpro 0.0\n",
"Akpa Akpro 0.0\n",
"Darboe 0.0\n",
"Darboe 0.418974358974359\n",
"Bove 0.952214452214452\n",
"Bove 1\n",
"Urbanski 0.0\n",
"Romero L. 0.7855769230769231\n",
"Bianco 0.0\n",
"Sher 0.0\n",
"Nguiamba 0.0\n",
"Volpato 1\n",
"Praszelik 0.0\n",
"Immobile 0.7433416046319272\n",
"Vlahovic 1\n",
"Rafael Leao 0.8625942684766214\n",
"Martinez L. 0.8978021978021977\n",
"Dybala 0.6728116710875333\n",
"Arnautovic 0.8252525252525252\n",
"Beto 1\n",
"Giroud 0.9390804597701149\n",
"Osimhen 0.8534662867996201\n",
"Deulofeu 0.92420814479638\n",
"Lukaku 0.23276353276353276\n",
"Pedro 0.8510416666666667\n",
"Abraham 0.8492723492723492\n",
"Berardi 0.4443667443667443\n",
"Simeone 0.4955311355311356\n",
"Correa 1\n",
"Zapata D. 0.7855769230769231\n",
"Dzeko 0.8728632478632479\n",
"Nzola 1\n",
"Sanabria 0.7223695844385498\n",
"Muriel 0.6982905982905983\n",
"Rebic 0.8728632478632478\n",
"Bonazzoli 0.9165064102564102\n",
"Caprari 0.9291208791208793\n",
"Di Maria affine to Chiesa\n",
"Di Maria 1\n",
"Lozano 0.9776068376068375\n",
"Pinamonti 0.9033119658119659\n",
"Barrow 0.6777526395173453\n",
"Henry 0.9854312354312355\n",
"Piatek 1\n",
"Gonzalez N. 0.38088578088578084\n",
"Caputo 0.8728632478632479\n",
"Raspadori 0.6022079772079773\n",
"Okereke 1\n",
"Cabral 1\n",
"Gabbiadini 1\n",
"Belotti 1\n",
"Origi affine to Rebic\n",
"Origi 0.8728632478632478\n",
"Alvarez A. affine to Raspadori\n",
"Alvarez A. 0.5819088319088319\n",
"Verde 0.5078477078477078\n",
"Destro 0.8029439696106363\n",
"Kean 0.8510416666666667\n",
"Pellegri 1\n",
"Success 1\n",
"Lasagna 0.9726190476190477\n",
"Pjaca 0.6323183760683762\n",
"Petagna 0.9033119658119658\n",
"Nestorovski 1\n",
"Piccoli affine to Lasagna\n",
"Piccoli 0.29926739926739926\n",
"Kallon 1\n",
"Di Francesco F. 1\n",
"Boga 0.837948717948718\n",
"Quagliarella 0.7617715617715617\n",
"Ibrahimovic 0.0\n",
"Shomurodov 0.4489010989010989\n",
"Djuric 1\n",
"Strelec 1\n",
"Antiste 0.2408831908831909\n",
"Seck 1\n",
"Sansone 0.6207027540360873\n",
"Pussetto 0.38713369963369965\n",
"Afena-Gyan 0.892684766214178\n",
"Defrel 0.2205128205128205\n",
"Cancellieri 1\n",
"Edera 0.0\n",
"Oddei 0.0\n",
"Oddei 0.837948717948718\n",
"Raimondo 0.0\n",
"Kaio Jorge 0.0\n",
"Lazetic 1\n",
"Players with low quantity of games:\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Masina 0.6666666666666667\n",
"Dest 0.8333333333333334\n",
"Thiaw 0.6666666666666667\n",
"Donati 0.6666666666666667\n",
"Umtiti 0.8333333333333334\n",
"Ostigard 0.6666666666666667\n",
"Sambia 0.8333333333333334\n",
"Aiwu 0.0\n",
"Hendry 0.5\n",
"Amione 0.8333333333333334\n",
"Gatti 0.6666666666666667\n",
"Gila 0.6666666666666667\n",
"Cabal 0.5\n",
"Sosa 0.6666666666666667\n",
"Conti 0.8673992673992673\n",
"Dermaku 0.16666666666666663\n",
"Paletta 0.0\n",
"Romagna 0.0\n",
"Cetin 0.6988960113960114\n",
"Adopo 0.6666666666666667\n",
"Antov 0.6666666666666667\n",
"Amey 0.16666666666666663\n",
"Ferrarini 0.0\n",
"Kamenovic 0.16666666666666663\n",
"Zanotti 0.0\n",
"Motoc 0.0\n",
"Bayeye 0.0\n",
"Ebosele 0.33333333333333337\n",
"Buta 0.0\n",
"Ndiaye 0.0\n",
"Abankwah 0.0\n",
"Guessand A. 0.0\n",
"Guarino 0.0\n",
"Pogba 0.0\n",
"Wijnaldum 0.16666666666666663\n",
"Vranckx 0.6666666666666667\n",
"Winks 0.0\n",
"Maldini 0.8333333333333334\n",
"Moro N. 0.8333333333333334\n",
"Valoti 0.8333333333333334\n",
"Gaetano 0.5\n",
"Milanese 0.16666666666666663\n",
"Listkowski 0.8333333333333334\n",
"Adli 0.6666666666666667\n",
"Hrustic 0.8333333333333334\n",
"D'andrea 0.8333333333333334\n",
"Baez 0.33333333333333337\n",
"Yepes 0.8333333333333334\n",
"Bondo 0.6666666666666667\n",
"Capezzi 0.8333333333333334\n",
"Machin 0.0\n",
"Scozzarella 0.0\n",
"Akpa Akpro 0.0\n",
"Darboe 0.5540170940170941\n",
"Bove 0.8811188811188814\n",
"Urbanski 0.16666666666666663\n",
"Bertini 0.0\n",
"Cortinovis 0.16666666666666663\n",
"Romero L. 0.6786858974358976\n",
"Bianco 0.0\n",
"Sher 0.16666666666666663\n",
"Nguiamba 0.5\n",
"Volpato 0.6666666666666667\n",
"Praszelik 0.33333333333333337\n",
"Trimboli 0.0\n",
"Pafundi 0.0\n",
"Bjorkengren 0.0\n",
"Vignato S. 0.33333333333333337\n",
"Samek 0.0\n",
"Zerbin 0.6666666666666667\n",
"Ilkhan 0.6666666666666667\n",
"Degli Innocenti 0.16666666666666663\n",
"Acella 0.0\n",
"Tripi 0.0\n",
"Garbett 0.0\n",
"Iling-Junior 0.33333333333333337\n",
"Tsadjout 0.5\n",
"Rodriguez P. 0.6666666666666667\n",
"Edera 0.0\n",
"Oddei 0.4143589743589744\n",
"Raimondo 0.16666666666666663\n",
"Kristoffersen 0.16666666666666663\n",
"De Luca 0.16666666666666663\n",
"Soule' 0.8333333333333334\n",
"Lazetic 0.16666666666666663\n",
"Voelkerling Persson 0.0\n",
"Sanca 0.5\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": 11,
"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=156)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"players.columns[9:]"
]
},
{
"cell_type": "code",
"execution_count": 12,
"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 - dribble_tackles_pct\n",
"19 - dribbles_completed_pct\n",
"20 - aerials_won_pct\n",
"21 - team_possession\n",
"22 - team_goals_assists_per90\n",
"23 - team_goals_pens_per90\n",
"24 - team_goals_assists_pens_per90\n",
"25 - team_xg_per90\n",
"26 - team_gk_goals_against_per90\n",
"27 - team_gk_save_pct\n",
"28 - team_gk_clean_sheets_pct\n",
"29 - team_passes_pct\n",
"30 - team_passes_pct_medium\n",
"31 - team_passes_pct_long\n",
"32 - team_sca_per90\n",
"33 - team_gca_per90\n",
"34 - team_dribble_tackles_pct\n",
"35 - team_aerials_won_pct\n",
"36 - vs_team_possession\n",
"37 - vs_team_goals_per90\n",
"38 - vs_team_assists_per90\n",
"39 - vs_team_xg_per90\n",
"40 - vs_team_gk_save_pct\n",
"41 - vs_team_gk_clean_sheets_pct\n",
"42 - vs_team_gk_pct_passes_launched\n",
"43 - vs_team_gk_crosses_stopped_pct\n",
"44 - vs_team_shots_on_target_per90\n",
"45 - vs_team_passes_pct\n",
"46 - vs_team_passes_pct_short\n",
"47 - vs_team_passes_pct_medium\n",
"48 - vs_team_passes_pct_long\n",
"49 - vs_team_sca_per90\n",
"50 - vs_team_gca_per90\n",
"51 - vs_team_dribble_tackles_pct\n",
"52 - vs_team_dribbles_completed_pct\n",
"53 - vs_team_aerials_won_pct\n",
"54 - opp_team_possession\n",
"55 - opp_team_goals_assists_per90\n",
"56 - opp_team_goals_pens_per90\n",
"57 - opp_team_goals_assists_pens_per90\n",
"58 - opp_team_xg_per90\n",
"59 - opp_team_gk_goals_against_per90\n",
"60 - opp_team_gk_save_pct\n",
"61 - opp_team_gk_clean_sheets_pct\n",
"62 - opp_team_passes_pct\n",
"63 - opp_team_passes_pct_medium\n",
"64 - opp_team_passes_pct_long\n",
"65 - opp_team_sca_per90\n",
"66 - opp_team_gca_per90\n",
"67 - opp_team_dribble_tackles_pct\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_dribble_tackles_pct\n",
"85 - opp_vs_team_dribbles_completed_pct\n",
"86 - opp_vs_team_aerials_won_pct\n",
"87 - vote_avg\n",
"88 - vote_std\n",
"89 - goals.1\n",
"90 - assists.1\n",
"91 - cards_yellow\n",
"92 - cards_red\n",
"93 - xg\n",
"94 - npxg\n",
"95 - shots_on_target\n",
"96 - passes_completed\n",
"97 - passes_into_final_third\n",
"98 - passes_into_penalty_area\n",
"99 - progressive_passes\n",
"100 - passes_live\n",
"101 - passes_dead\n",
"102 - through_balls\n",
"103 - passes_switches\n",
"104 - crosses\n",
"105 - corner_kicks\n",
"106 - dribble_tackles\n",
"107 - dribbles_vs\n",
"108 - dribbled_past\n",
"109 - blocks\n",
"110 - blocked_shots\n",
"111 - blocked_passes\n",
"112 - interceptions\n",
"113 - clearances\n",
"114 - errors\n",
"115 - touches\n",
"116 - touches_def_pen_area\n",
"117 - touches_def_3rd\n",
"118 - touches_mid_3rd\n",
"119 - touches_att_3rd\n",
"120 - touches_att_pen_area\n",
"121 - touches_live_ball\n",
"122 - dribbles_completed\n",
"123 - dribbles\n",
"124 - passes_received\n",
"125 - miscontrols\n",
"126 - dispossessed\n",
"127 - fouls\n",
"128 - fouled\n",
"129 - aerials_won\n",
"130 - aerials_lost\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": 13,
"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": 14,
"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": 15,
"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_dribble_tackles_pct\n",
"39 - team_aerials_won_pct\n",
"40 - vs_team_possession\n",
"41 - vs_team_goals_per90\n",
"42 - vs_team_assists_per90\n",
"43 - vs_team_xg_per90\n",
"44 - vs_team_gk_save_pct\n",
"45 - vs_team_gk_clean_sheets_pct\n",
"46 - vs_team_gk_pct_passes_launched\n",
"47 - vs_team_gk_crosses_stopped_pct\n",
"48 - vs_team_shots_on_target_per90\n",
"49 - vs_team_passes_pct\n",
"50 - vs_team_passes_pct_short\n",
"51 - vs_team_passes_pct_medium\n",
"52 - vs_team_passes_pct_long\n",
"53 - vs_team_sca_per90\n",
"54 - vs_team_gca_per90\n",
"55 - vs_team_dribble_tackles_pct\n",
"56 - vs_team_dribbles_completed_pct\n",
"57 - vs_team_aerials_won_pct\n",
"58 - opp_team_possession\n",
"59 - opp_team_goals_assists_per90\n",
"60 - opp_team_goals_pens_per90\n",
"61 - opp_team_goals_assists_pens_per90\n",
"62 - opp_team_xg_per90\n",
"63 - opp_team_gk_goals_against_per90\n",
"64 - opp_team_gk_save_pct\n",
"65 - opp_team_gk_clean_sheets_pct\n",
"66 - opp_team_passes_pct\n",
"67 - opp_team_passes_pct_medium\n",
"68 - opp_team_passes_pct_long\n",
"69 - opp_team_sca_per90\n",
"70 - opp_team_gca_per90\n",
"71 - opp_team_dribble_tackles_pct\n",
"72 - opp_team_aerials_won_pct\n",
"73 - opp_vs_team_possession\n",
"74 - opp_vs_team_goals_per90\n",
"75 - opp_vs_team_assists_per90\n",
"76 - opp_vs_team_xg_per90\n",
"77 - opp_vs_team_gk_save_pct\n",
"78 - opp_vs_team_gk_clean_sheets_pct\n",
"79 - opp_vs_team_gk_pct_passes_launched\n",
"80 - opp_vs_team_gk_crosses_stopped_pct\n",
"81 - opp_vs_team_shots_on_target_per90\n",
"82 - opp_vs_team_passes_pct\n",
"83 - opp_vs_team_passes_pct_short\n",
"84 - opp_vs_team_passes_pct_medium\n",
"85 - opp_vs_team_passes_pct_long\n",
"86 - opp_vs_team_sca_per90\n",
"87 - opp_vs_team_gca_per90\n",
"88 - opp_vs_team_dribble_tackles_pct\n",
"89 - opp_vs_team_dribbles_completed_pct\n",
"90 - opp_vs_team_aerials_won_pct\n",
"91 - vote_avg\n",
"92 - vote_std\n",
"93 - gk_shots_on_target_against\n",
"94 - gk_saves\n",
"95 - gk_free_kick_goals_against\n",
"96 - gk_corner_kick_goals_against\n",
"97 - gk_own_goals_against\n",
"98 - gk_psxg\n",
"99 - gk_psnpxg_per_shot_on_target_against\n",
"100 - gk_psxg_net\n",
"101 - gk_passes_completed_launched\n",
"102 - gk_passes_launched\n",
"103 - gk_passes\n",
"104 - gk_passes_throws\n",
"105 - gk_goal_kicks\n",
"106 - gk_crosses\n",
"107 - 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": 16,
"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": 17,
"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": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB+eElEQVR4nO3deVxU5f4H8M8My4AIKCKbAuKC5pILmkuluSKWaXXTcil/t1vZYou3W1ndlltXq1u3zdTb/fVrw2wz1FxxN0vLDTUXcEFxAREQRlC2mfP748wczpmZM5xBhhng8369eAEzZ848s57veZ7v8310giAIICIiIvJiek83gIiIiKg2DFiIiIjI6zFgISIiIq/HgIWIiIi8HgMWIiIi8noMWIiIiMjrMWAhIiIir8eAhYiIiLyer6cbUF/MZjPOnz+P4OBg6HQ6TzeHiIiINBAEAZcvX0ZMTAz0evV+lCYTsJw/fx6xsbGebgYRERHVwZkzZ9C+fXvV65tMwBIcHAxAfMAhISEebg0RERFpYTQaERsbKx3H1TSZgMU6DBQSEsKAhYiIqJGpLZ2DSbdERETk9RiwEBERkddjwEJERERejwELEREReT0GLEREROT1GLAQERGR12PAQkRERF6PAQsRERF5PQYsRERE5PVcCljmzZuHAQMGIDg4GBEREZg4cSIyMzMV2wiCgFdffRUxMTEIDAzELbfcgkOHDtW676VLl6J79+4wGAzo3r070tLSXHskRERE1GS5FLBs3boVjz32GHbu3In169ejuroaY8aMQVlZmbTN22+/jX//+9+YP38+du3ahaioKIwePRqXL19W3e+OHTswefJkTJ8+Hfv378f06dMxadIk/Pbbb3V/ZERERNRk6ARBEOp644sXLyIiIgJbt27F0KFDIQgCYmJi8NRTT+G5554DAFRUVCAyMhJvvfUWHn74YYf7mTx5MoxGI9asWSNdNnbsWLRu3RpLlizR1Baj0YjQ0FCUlJRwLSEiIqJGQuvx+5pyWEpKSgAAYWFhAIDs7Gzk5eVhzJgx0jYGgwHDhg3Dr7/+qrqfHTt2KG4DAMnJyU5vU1FRAaPRqPghIiJqzozlVZj51R5sy7ro6abUuzoHLIIgYPbs2bjpppvQs2dPAEBeXh4AIDIyUrFtZGSkdJ0jeXl5Lt9m3rx5CA0NlX5iY2Pr+lCIiIgavcy8y5gw/xesPZSHv/2wH+VVJk83qV7VOWB5/PHHceDAAYdDNrZLRAuCUOuy0a7eZs6cOSgpKZF+zpw540LriYiImo4V+89j4se/ILugDDGhAfhken8E+Pl4uln1yrcuN5o1axZWrFiBbdu2oX379tLlUVFRAMQek+joaOny/Px8ux4UuaioKLvelNpuYzAYYDAY6tJ8IiKiJqHKZMa81Ufxf79kAwBu7NwGH97TF21aNr3jo0s9LIIg4PHHH8ePP/6ITZs2ISEhQXF9QkICoqKisH79eumyyspKbN26FUOGDFHd7+DBgxW3AYD09HSntyEiImrO8i+XY+p/f5OClUdv6YQv/zywSQYrgIs9LI899hi+/vprLF++HMHBwVKvSGhoKAIDA6HT6fDUU09h7ty56NKlC7p06YK5c+eiRYsWmDJlirSf++67D+3atcO8efMAAE8++SSGDh2Kt956CxMmTMDy5cuxYcMGbN++vR4fKhERUdOw61QRHlu8F/mXKxBs8MU7k3ojuUeUp5vlVi4FLAsXLgQA3HLLLYrLP/vsM8yYMQMA8Oyzz+Lq1at49NFHcenSJQwcOBDp6ekIDg6Wts/JyYFeX9O5M2TIEHzzzTd46aWX8Pe//x2dOnXCt99+i4EDB9bxYRERETU9giDg819P4Z+rjqDaLCAxsiUWTUtCx7YtPd00t7umOizehHVYiIioKbtSWY05Px7E8ozzAIDbro/GW3ddjyBDndJRvYbW43fjfpRERETNQHZBGWZ+tQeZFy7DR6/DC+Ouw59v7FDrDNymhAELERGRF1t/+AJmf5uByxXVCG9pwIKp/XBDQpinm9XgGLAQERF5IZNZwHvrszB/83EAQP/41vh4aj9EhgR4uGWewYCFiIjIyxSVVeLJb/bh52MFAIAZQzrgxVuvg5/PNa2o06gxYCEiIvIiB84W45HUvThXfBWBfj54865emNCnnaeb5XEMWIiIiLzEt7ty8Pflh1BZbUaHNi2waHoSukVx5ivAgIWIiMjjyqtMeHXFIXyzS1wXb9R1EXh3Uh+EBvp5uGXegwELERGRB529dAWPLt6LA2dLoNMBz4zpikeGdYJe33ymLGvBgIWIiMhDfj52EU8s2YdLV6rQuoUfPrinL4YmtvV0s7wSAxYiIqIGZjYLWLj1BN5Jz4QgAL3ahWLhtH5o37qFp5vmtRiwEBERNSBjeRX++t1+rD98AQAwuX8sXpvQAwF+Ph5umXdjwEJERNRAMvMu4+GvduNU4RX4++jxjwk9cM8NcZ5uVqPAgIWIiKgBLM84h+eXHsTVKhPatQrEgqn90Du2laeb1WgwYCEiInKjKpMZc1cfwWe/nAIA3NwlHB/c0xdhQf6ebVgjw4CFiIjITfKN5Xh08V7sPn0JAPDY8E6YPborfDhl2WUMWIiIiNzg9+wiPPb1Xly8XIFggy/endQbY3pEebpZjRYDFiIionokCAI+++UU5q4+gmqzgMTIllg0LQkd27b0dNMaNQYsRERE9eRKZTWeX3oQK/afBwDc3jsGb97VCy38ebi9VnwGiYiI6kF2QRlmfrUHmRcuw1evw4u3XocZQzpAp2O+Sn1gwEJERHSN0g/l4a/f7cflimq0DTZgwdR+GNAhzNPNalIYsBAREdWRySzg3fRMLNhyAgAwoENrfDylHyJCAjzcsqaHAQsREVEdFJVV4okl+7D9eAEA4H9u7IAXxl0HPx+9h1vWNDFgISIictH+M8V4dPFenCu+ikA/H7x5Vy9M6NPO081q0hiwEBERueCb33Pw8vJDqDSZkRAehEXTktA1KtjTzWryGLAQERFpUF5lwivLD+Hb3WcAAKO7R+LdSb0REuDn4ZY1DwxYiIiIanGm6AoeXbwXB8+VQK8D/jqmKx4Z1gl6lthvMAxYiIiInNiWdRFPfLMPxVeq0LqFHz68ty9u7tLW081qdhiwEBEROWA2C1iw5TjeXZ8FQQCubx+KBVP7oX3rFp5uWrPEgIWIiMhGydUq/PW7/dhw5AIA4N4bYvHK+B4I8PPxcMuaLwYsREREMkfzjJj51R6cKrwCf189Xp/QA5MHxHm6Wc0eAxYiIiKL5Rnn8NzSAyivMqNdq0AsnNYP17dv5elmEQCXy/Ft27YN48ePR0xMDHQ6HZYtW6a4XqfTOfz517/+pbrPzz//3OFtysvLXX5ARERErqqsNuPVFYfw5DcZKK8y4+Yu4fhp1k0MVryIyz0sZWVl6N27N/7nf/4Hd911l931ubm5iv/XrFmDBx54wOG2ciEhIcjMzFRcFhDAtRiIiMi9LhjL8djivdh9+hIA4PHhnfH06ET4cMqyV3E5YElJSUFKSorq9VFRUYr/ly9fjuHDh6Njx45O96vT6exuS0RE5E6/Zxfhsa/34uLlCgQbfPHvyX0wunukp5tFDrg1h+XChQtYtWoVvvjii1q3LS0tRXx8PEwmE/r06YPXX38dffv2Vd2+oqICFRUV0v9Go7Fe2kxERE2fIAj4v19OYe7qIzCZBXSNDMai6UlICA/ydNNIhVuXlPziiy8QHByMO++80+l23bp1w+eff44VK1ZgyZIlCAgIwI033ohjx46p3mbevHkIDQ2VfmJjY+u7+URE1ASVVVRj1pJ9eH3lYZjMAib0iUHaY0MYrHg5nSAIQp1vrNMhLS0NEydOdHh9t27dMHr0aHz00Ucu7ddsNqNfv34YOnQoPvzwQ4fbOOphiY2NRUlJCUJCQly6PyIiah5OXizFzNQ9yLpQCl+9Di/deh3uH9IBOh3zVTzFaDQiNDS01uO324aEfv75Z2RmZuLbb791+bZ6vR4DBgxw2sNiMBhgMBiupYlERNSMrDuUh79+tx+lFdVoG2zAgqn9MKBDmKebRRq5LWD59NNPkZSUhN69e7t8W0EQkJGRgV69ermhZURE1JyYzALeSc/Ewi0nAAA3dAjD/Cl9ERHCmaiNicsBS2lpKY4fPy79n52djYyMDISFhSEuTqwEaDQa8f333+Pdd991uI/77rsP7dq1w7x58wAAr732GgYNGoQuXbrAaDTiww8/REZGBj7++OO6PCYiIiIAQGFpBZ78JgPbjxcAAB64KQHPp3SDn49bUzjJDVwOWHbv3o3hw4dL/8+ePRsAcP/99+Pzzz8HAHzzzTcQBAH33nuvw33k5ORAr695sxQXF+Ohhx5CXl4eQkND0bdvX2zbtg033HCDq80jIiICAGScKcajqXtwvqQcgX4+eOtP1+P23jGebhbV0TUl3XoTrUk7RETUtAmCgCW/n8GrKw6h0mRGQngQ/jM9CYmRwZ5uGjng8aRbIiKihlZeZcLLy//Ad7vPAgDGdI/EO5N6IyTAz8Mto2vFgIWIiJqEM0VX8MjiPfjjnBF6HfBMclfMHNoJepbYbxIYsBARUaO3NesinvxmH4qvVCEsyB8f3tMXN3UJ93SzqB4xYCEiokbLbBbw8ebj+PeGLAgC0Lt9KBZMS0K7VoGebhrVMwYsRETUKJVcrcLsbzOw8Wg+AODeG+LwyvjuCPDz8XDLyB0YsBARUaNzJNeImal7cLrwCvx99XhjQk9MGsA15ZoyBixERNSoLNt3Ds//eADlVWa0axWIRdOS0Kt9qKebRW7GgIWIiBqFymoz5q4+gs9/PQUAGJrYFh9M7oPWQf6ebRg1CAYsRETk9S4Yy/Ho4r3Yc/oSAOCJEZ3x5KhE+HDKcrPBgIWIiLzazpOFePzrfSgorUBwgC/em9QHo7pHerpZ1MAYsBARkVcSBAGfbs/GvDVHYTIL6BYVjEXTktAhPMjTTSMPYMBCRERep6yiGs8uPYBVB3IBABP6xGDenb3Qwp+HreaKrzwREXmVExdLMfOrPTiWXwpfvQ5/v6077hscD52O+SrNGQMWIiLyGmv/yMMz3+9HaUU1IoINWDitH5LiwzzdLPICDFiIiMjjqk1mvJOehUVbTwAAbkgIw/wpfRERHODhlpG3YMBCREQeVVhagVlL9uHXE4UAgL/clIDnUrrBz0fv4ZaRN2HAQkREHpNxphiPpO5Bbkk5Wvj74K27rsf43jGebhZ5IQYsRETU4ARBwJLfz+DVFYdQaTKjY3gQFk1PQmJksKebRl6KAQsRETWo8ioT/r7sD3y/5ywAILlHJN65uzeCA/w83DLyZgxYiIiowZwpuoKZqXtw6LwReh3wt+RumDmsI6csU60YsBARUYPYkpmPJ7/JQMnVKoQF+eOje/vixs7hnm4WNRIMWIiIyK3MZgHzNx/HexuyIAhA7/ahWDAtCe1aBXq6adSIMGAhIiK3KblahdnfZmDj0XwAwJSBcXhlfHcYfH083DJqbBiwEBGRWxzJNWJm6h6cLrwCf1893pjYE5P6x3q6WdRIMWAhIqJ6l7bvLOb8eBDlVWa0bx2IRdOS0LNdqKebRY0YAxYiIqo3ldVmvLHqML7ccRoAMDSxLT6Y3Aetg/w93DJq7BiwEBFRvcgrKceji/dgb04xAOCJEZ3x5KhE+Og5ZZmuHQMWIiK6ZjtPFuLxr/eioLQSwQG+eH9yH4y8LtLTzaImhAELERHVmSAI+HR7NuatOQqTWUC3qGAsmpaEDuFBnm4aNTEMWIiIqE5KK6rx3A8HsOpgLgDgjr7tMPeOXgj055Rlqn8MWIiIyGXH80sxM3UPjueXwlevw8vju2P6oHiW2Ce30bt6g23btmH8+PGIiYmBTqfDsmXLFNfPmDEDOp1O8TNo0KBa97t06VJ0794dBoMB3bt3R1pamqtNIyKiBrD2j1xM/PgXHM8vRWSIAd8+PAj3De7AYIXcyuWApaysDL1798b8+fNVtxk7dixyc3Oln9WrVzvd544dOzB58mRMnz4d+/fvx/Tp0zFp0iT89ttvrjaPiIjcpNpkxrw1RzAzdS9KK6pxQ0IYfpp1E5LiwzzdNGoGdIIgCHW+sU6HtLQ0TJw4UbpsxowZKC4utut5cWby5MkwGo1Ys2aNdNnYsWPRunVrLFmyRNM+jEYjQkNDUVJSgpCQEM33TUREtSsorcATS/bh1xOFAIC/3JSA51K6wc/H5fNeIgWtx2+3vNO2bNmCiIgIJCYm4sEHH0R+fr7T7Xfs2IExY8YoLktOTsavv/6qepuKigoYjUbFDxER1b99OZcw/qPt+PVEIVr4+2D+lL546bbuDFaoQdX7uy0lJQWLFy/Gpk2b8O6772LXrl0YMWIEKioqVG+Tl5eHyEjlfP3IyEjk5eWp3mbevHkIDQ2VfmJjuT4FEVF9EgQBqTtPY/J/diK3pBwd2wZh+WM34rbrYzzdNGqG6n2W0OTJk6W/e/bsif79+yM+Ph6rVq3CnXfeqXo722QtQRCcJnDNmTMHs2fPlv43Go0MWoiI6kl5lQkvpv2BpXvPAgDG9ojCv+6+HsEBfh5uGTVXbp/WHB0djfj4eBw7dkx1m6ioKLvelPz8fLteFzmDwQCDwVBv7SQiItGZoit4+Ks9OJxrhF4HPDu2Gx4e2pGzgMij3D4AWVhYiDNnziA6Olp1m8GDB2P9+vWKy9LT0zFkyBB3N4+IiGQ2Z+bjto+243CuEWFB/kh9YCBmDuvEYIU8zuUeltLSUhw/flz6Pzs7GxkZGQgLC0NYWBheffVV3HXXXYiOjsapU6fwwgsvIDw8HHfccYd0m/vuuw/t2rXDvHnzAABPPvkkhg4dirfeegsTJkzA8uXLsWHDBmzfvr0eHiIREdXGbBbw0abjeH9jFgQB6B3bCgun9kNMq0BPN40IQB0Clt27d2P48OHS/9Y8kvvvvx8LFy7EwYMH8eWXX6K4uBjR0dEYPnw4vv32WwQHB0u3ycnJgV5f07kzZMgQfPPNN3jppZfw97//HZ06dcK3336LgQMHXstjIyIiDUquVOHp7zKw6ag4o3PqwDi8PL47DL4ssU/e45rqsHgT1mEhInLdofMleCR1L3KKrsDgq8cbE3vi7v6cwEANR+vxm2sJERE1Uz/uPYs5Px5ERbUZ7VsHYtG0JPRsF+rpZhE5xICFiKiZqaw24/WVh/HVztMAgGGJbfHBPX3QqoW/h1tGpI4BCxFRM5JXUo5HFu/BvpxiAMCTI7vgiZFd4KPnLCDybgxYiIiaiR0nCjFryV4UlFYiJMAX79/TByO6qde7IvImDFiIiJo4QRDw359P4q21mTCZBVwXHYJF0/ohvk2Qp5tGpBkDFiKiJqy0ohrP/rAfqw+K1cTv7NsO/7yjFwL9OWWZGhcGLERETdTx/FI8/NVunLhYBj8fHV6+rTumDYpn1VpqlBiwEBE1QWsO5uKZ7/ejrNKEyBADFkxNQlJ8a083i6jOGLAQETUh1SYz/rUuE//ZdhIAMDAhDPOn9EPbYC4WS40bAxYioiaioLQCs77ehx0nCwEADw3tiGeTu8LXx+3r3BK5HQMWIqImYG/OJTyauhd5xnIE+fvgX3f3xrhe0Z5uFlG9YcBCRNSICYKA1N9y8I+fDqHKJKBj2yB8Mj0JnSOCa78xUSPCgIWIqJEqrzLhxbQ/sHTvWQBASs8ovP2n6xEc4OfhlhHVPwYsRESNUE7hFcxM3YPDuUbodcBzY7vhoaEdOWWZmiwGLEREjczmo/l46tsMlFytQpsgf3w0pS+GdAr3dLOI3IoBCxFRI2E2C/hg4zF8uOkYBAHoE9sKC6f1Q3RooKebRuR2DFiIiBqB4iuVePrbDGzOvAgAmDYoDn+/rTsMviyxT80DAxYiIi936HwJZqbuwZmiqzD46vHPO3rhT0ntPd0sogbFgIWIyIst3XMWL6QdREW1GbFhgVg0LQk9YkI93SyiBseAhYjIC1VUm/D6ysNI3ZkDABjetS3en9wXoS04ZZmaJwYsREReJrfkKh5J3YuMM8XQ6YAnR3bBEyO6QK/nlGVqvhiwEBF5kV9PFGDW1/tQWFaJkABffHBPXwzvFuHpZhF5HAMWIiIvIAgCPtl2Em+tPQqzAFwXHYL/TEtCXJsWnm4akVdgwEJE5GGlFdX42/f7seaPPADAnf3a4Z8TeyHQn1OWiawYsBARedDx/Mt4+Ks9OHGxDH4+Orw8vgemDYxjiX0iGwxYiIg8ZNWBXDz7w36UVZoQFRKABdP6oV9ca083i8grMWAhImpg1SYz3l6XiU+2nQQADOoYhvlT+iG8pcHDLSPyXgxYiIga0MXLFZi1ZC92niwCADw8tCP+ltwVvj56D7eMyLsxYCEiaiB7cy7h0dS9yDOWI8jfB/+6uzfG9Yr2dLOIGgUGLEREbiYIAlJ3nsY/Vh5GlUlAp7ZB+M/0JHSOCPZ004gaDQYsRERudLXShBeXHcSPe88BAMb1isLbf+qNlgZ+/RK5wuVB023btmH8+PGIiYmBTqfDsmXLpOuqqqrw3HPPoVevXggKCkJMTAzuu+8+nD9/3uk+P//8c+h0Oruf8vJylx8QEZG3OF1YhjsX/oof956DXge8MK4bPp7Sj8EKUR24HLCUlZWhd+/emD9/vt11V65cwd69e/H3v/8de/fuxY8//oisrCzcfvvtte43JCQEubm5ip+AgABXm0dE5BU2Hb2A8R9tx5FcI9oE+SP1LwPx0NBOrK9CVEcuh/kpKSlISUlxeF1oaCjWr1+vuOyjjz7CDTfcgJycHMTFxanuV6fTISoqytXmEBF5FbNZwAcbj+GDjccAAH3jWmHB1H6IDg30cMuIGje390uWlJRAp9OhVatWTrcrLS1FfHw8TCYT+vTpg9dffx19+/ZV3b6iogIVFRXS/0ajsb6aTERUJ8VXKvHUtxnYknkRADB9UDxeuu06GHxZYp/oWrl14n95eTmef/55TJkyBSEhIarbdevWDZ9//jlWrFiBJUuWICAgADfeeCOOHTumept58+YhNDRU+omNjXXHQyAi0uSPcyUYP387tmRehMFXj3fv7o3XJ/ZksEJUT3SCIAh1vrFOh7S0NEycONHuuqqqKtx9993IycnBli1bnAYstsxmM/r164ehQ4fiww8/dLiNox6W2NhYlJSUuHRfRETX6oc9Z/Fi2kFUVJsRF9YCC6f1Q4+YUE83i6hRMBqNCA0NrfX47ZYhoaqqKkyaNAnZ2dnYtGmTywGEXq/HgAEDnPawGAwGGAwsY01EnlNRbcI/fjqMxb/lAACGd22L9yf3RWgLPw+3jKjpqfeAxRqsHDt2DJs3b0abNm1c3ocgCMjIyECvXr3qu3lERPUit+QqHkndi4wzxdDpgCdHdsETI7pAr+csICJ3cDlgKS0txfHjx6X/s7OzkZGRgbCwMMTExOBPf/oT9u7di5UrV8JkMiEvLw8AEBYWBn9/fwDAfffdh3bt2mHevHkAgNdeew2DBg1Cly5dYDQa8eGHHyIjIwMff/xxfTxGIqJ69evxAsxasg+FZZUIDfTD+/f0wfCuEZ5uFlGT5nLAsnv3bgwfPlz6f/bs2QCA+++/H6+++ipWrFgBAOjTp4/idps3b8Ytt9wCAMjJyYFeX5PvW1xcjIceegh5eXkIDQ1F3759sW3bNtxwww2uNo+IyG0EQcB/tp3E22uPwiwA3aNDsGhaEuLatPB004iavGtKuvUmWpN2iIjq4nJ5Ff72/QGsPST2Gt/Vrz3+eUdPBPhxFhDRtfBo0i0RUVNy7MJlPJy6BycvlsHPR4dXxvfA1IFxrFpL1IAYsBARObHqQC7+9sN+XKk0ISokAAun9UPfuNaebhZRs8OAhYjIgWqTGW+tPYr//pwNABjcsQ0+mtIX4S1ZToHIExiwEBHZuHi5Ao9/vRe/ZRcBAB4e1hF/G9MVvj5uLQ5ORE4wYCEiktlz+hIeXbwHF4wVCPL3wTt390ZKr2hPN4uo2WPAQkQEccryVztP4/WVh1FlEtA5oiUWTUtC54iWnm4aEYEBCxERrlaa8ELaQaTtOwcAuLVXNN760/VoaeBXJJG34KeRiJq104VlePirPTiadxk+eh2eH9sNf7k5gVOWibwMAxYiarY2HrmAp77NwOXyaoS39MdH9/bD4E6ur39GRO7HgIWImh2TWcAHG4/hw43iivD94lphwdQkRIUGeLhlRKSGAQsRNSvFVyrx5DcZ2Jp1EQBw3+B4vHRrd/j7csoykTdjwEJEzcYf50owM3UPzl66igA/Pebe0Qt39mvv6WYRkQYMWIioWfh+9xm8tOwPVFSbERfWAoumJaF7DBdKJWosGLAQUZNWUW3Caz8dxte/5QAARnSLwHuT+iC0hZ+HW0ZErmDAQkRN1vniq3hk8V7sP1MMnQ54elQiHh/eGXo9pywTNTYMWIioSfrleAFmLdmHorJKhAb64YN7+uCWrhGebhYR1REDFiJqUgRBwKKtJ/GvdUdhFoAeMSFYNC0JsWEtPN00IroGDFiIqMm4XF6FZ77fj3WHLgAA/pTUHm9M7IkAPx8Pt4yIrhUDFiJqEo5duIyHv9qDkwVl8PfR45Xbu2PKDXEssU/URDBgIaJGb+WB83j2hwO4UmlCdGgAFk5LQp/YVp5uFhHVIwYsRNRoVZnMeGvNUfzv9mwAwJBObfDRvX3RpqXBwy0jovrGgIWIGqX8y+V4/Ot9+D27CAAwc1gnPDMmEb4+LLFP1BQxYCGiRmfP6SI8ungvLhgr0NLgi3fuvh5je0Z7ullE5EYMWIio0RAEAV/uOI3XVx5GtVlA54iWWDQtCZ0jWnq6aUTkZgxYiKhRuFppwgtpB5G27xwA4Nbro/H2XdcjyMCvMaLmgJ90IvJ6pwrKMDN1D47mXYaPXoc5Kd3wwE0JnLJM1IwwYCEir7bh8AU8/V0GLpdXI7ylP+ZP6YdBHdt4ullE1MAYsBCRVzKZBby/IQsfbToOAOgX1woLpiYhKjTAwy0jIk9gwEJEXudSWSWe/DYD27IuAgDuHxyPF2/tDn9fTlkmaq4YsBCRV/njXAlmpu7B2UtXEeCnx7w7e+GOvu093Swi8jAGLETkNb7bfQYvLfsDldVmxLdpgUXTknBddIinm0VEXsDl/tVt27Zh/PjxiImJgU6nw7JlyxTXC4KAV199FTExMQgMDMQtt9yCQ4cO1brfpUuXonv37jAYDOjevTvS0tJcbRoRNVIV1SbM+fEgnv3hACqrzRjZLQIrHr+JwQoRSVwOWMrKytC7d2/Mnz/f4fVvv/02/v3vf2P+/PnYtWsXoqKiMHr0aFy+fFl1nzt27MDkyZMxffp07N+/H9OnT8ekSZPw22+/udo8ImpkzhVfxaRFO7Dk9xzodMBfRyfiv/f1R2ign6ebRkReRCcIglDnG+t0SEtLw8SJEwGIvSsxMTF46qmn8NxzzwEAKioqEBkZibfeegsPP/yww/1MnjwZRqMRa9askS4bO3YsWrdujSVLlmhqi9FoRGhoKEpKShASwrMyosbgl+MFmLVkH4rKKhEa6IcP7umDW7pGeLpZRNSAtB6/6zXlPjs7G3l5eRgzZox0mcFgwLBhw/Drr7+q3m7Hjh2K2wBAcnKy09tUVFTAaDQqfoiocRAEAQu2HMf0T39DUVklerYLwcpZNzFYISJV9Rqw5OXlAQAiIyMVl0dGRkrXqd3O1dvMmzcPoaGh0k9sbOw1tJyIGoqxvAozU/fg7bWZMAtAcpcQ/DBzCGLDWni6aUTkxdxS1MC2XLYgCLWW0Hb1NnPmzEFJSYn0c+bMmbo3mIgaRNaFyxj/wTasO3QBQnUVCtd+hE/+MhQTJ9yKS5cuebp5ROTF6jVgiYqKAgC7npH8/Hy7HhTb27l6G4PBgJCQEMUPEXmvn/afx4T5v+D0pXJUX76IvPPPoXTEOuBOYMO2Dbh36r2ebmKTkJWVhTVr1uDYsWOebgpRvarXgCUhIQFRUVFYv369dFllZSW2bt2KIUOGqN5u8ODBitsAQHp6utPbEFHjUGUy4/WVhzFryT5crTLh6qkM5F58EpVds4BQANcDpjEmrFuzTvUgy4Nw7YqKijB23Fh07doV48aNQ2JiIsaOG9vseq74Xmm6XA5YSktLkZGRgYyMDABiom1GRgZycnKg0+nw1FNPYe7cuUhLS8Mff/yBGTNmoEWLFpgyZYq0j/vuuw9z5syR/n/yySeRnp6Ot956C0ePHsVbb72FDRs24KmnnrrmB0iNH7+AGq/8y+WY+t/f8On2bABAciyQ/93LMLc3AgUAjgEoBNBB3P748eOK27vzINyY3lda2jpl2hRs2LYBuBPA02h2PVcM2JoBwUWbN28WANj93H///YIgCILZbBZeeeUVISoqSjAYDMLQoUOFgwcPKvYxbNgwaXur77//Xujatavg5+cndOvWTVi6dKlL7SopKREACCUlJa4+JPJShYWFQnJKsuJ9lpySLBQVFXm6ac1OZmamsHr1aiErK0vzbXZlFwoD3lgvxD+3Uujx8lphzcFcITMzU3wto2y+QyLF37b7T05JFnyCfATcCQFPQ8CdEHyCfITklOQ6P5bG9L7S2lbpeb0TAl6V/dzh+HltitzxXqGGofX4fU11WLwJ67A0PWPHjcWGbRtgSjYB8QBOAz7rfDBq6CisXb3W081rFoqKijBl2hSsW7NOuiw5JRlLFi9B69atHd5GEAR88espvLHqCKrNArpEtMR/piehY9uWyMrKQteuXQEfACbZjSz/Z2VloUuXLgBQs+2dAK6XbbsfQJpyW1eMGDUCm7duBqplF/oCI24ZgY3rN7q8P3fS+hlYs2YNxo0bJ/ashMp2UALgPWD16tVISUlp4NY3HHe9V6hheKQOC1F9ycrKwro168Qv6uuhOdfBlf03luGAdevW4R//+IddnldDcHWY4UplNZ76NgOv/nQY1WYBt10fjWWP3YiObVsCALZu3QroAPgBGAJgMIAbLf/rLNdbnDhxQvwj3uZOOoi/bIePtMjKysLmTZvFVdRkjwm+wKaNm7zq/eDKZ6BTp07iH6dtdnJK/NW5c+cGaLHn1PW90pi+B4iLH5KX0vIFVJczprr0GHjKiRMnMHDwQBReLJQua9O2DXb9tgsJCQluv3/rAVNx1no9YBJMWJcmHjDlr8GpgjLMTN2Do3mX4aPX4YVx1+HPN3ZQlCe4cOGCOLABAPK6kAYAguV6C8VBWH7WfEr8VZeD8NatW8X7H6d8TBAApInXe8uZuCufgcTERCSnJGPDug0wCSZxm1OAT7oPRqWMuubHlJWVhRMnTqBz585e8/zIufpeaUzfA1SDPSzkldx1xliXxERPnYUNHDwQhcZCRVsLjYUYMHBAg9y/K2etGw5fwPj523E07zLCWxrw9V8G4oGbEuxqKRUUFIg9LAKUPRwAoAMKC2uCM+tB2Gedj9i1XwJgv3gQTk5JvrYDp8pj8iZ6veXrWeUz4OurPN9csngJRg0dBaQBeA9AGjBq6CgsWaxteRNHGksiq6vvleaeoNxYMWAhr1TXg5Wz4MLVYSZPflmvW7dO7Fm5FYq2YhxQeLGwQYaHFEGjfEbPKfHizp07w2QW8G56Jv7y5W5cLq9GUnxrrHriJgzs2MbhPrOzs8VgxcHjgmC5Xqa+D8LDhg2reUxyp2yu9wJms1kM7lZB8RnAagA6oLq6WrG9O9IRG9OBXet7xd3DzeQ+HBIir7Vk8RLcO/VerEur6bYdleL4YKWli9fVYSbFl7Ul4XHDOvHL2t1Jv9JK5Spt3bFjB0aPHu3WNiQmJmL4yOHYvMJBguqoEQiPiceMz37Hz8cKAAAzhnTAAL8z+M/7b2Pw4MEO2xcaaskIVXlctgl3rVu3xtrVa3Hs2DEcP378mockEhMTxaTb1ZvFA3wHAKcA3Rodho8a7lXDHXq9XgzuqiEehK18AAj2PSz1/X51dUjQ07S+VxTfAwUALgEIwzUPN5P7MWAhr+XKweruSXdj8y+bgdEAggBcAdI3p+NPk/4kzfxQdLE7GOeWHwA8/WU9cOBAp20dPHiw2+5bTqfTQeerg3C7IB0Edat1qGgRgds+2o5zxVcR4KfH0zdF4sXpw2rNtxk2bBi++uor1cc1fPhwh+3o0qVLvT3fP3z3g10gPCZlzDUNnbhDTk6O+McEAO0AFEE8sJ4FkAacPl3TTaR4v8YAyBdvYxpT9/eru/LI3K2294rUc7gEgLzAuqWwelNPUG7MGLCQ16vtCygrKwubNm4CogDIRkqESAGbNmySvqxzcnLELvbVEM9cO0A8UK4BoFMeABriLMxZImNycjLatG2DwlWFyrauFgMBd/euWNu3acMmu6AtKHgUzoRPgq74KuLbtMCiaUm4uXfHmnwbS2BTuErMtynIL5D2GRMTUzPMYfO4oLNfONUdGl0lh3iIwxbWUTYH39rS+3UfgB9lV1hixbq8X92R9OwNEhMTxc/WJeX7FavEz5Y3BmEkYsBCjZ40VbYEih4W/AxpqmyXLl1qZqhEQ9nFngAgW2WGihvOwrTOUNj12y4MGDgAhWn2vRZq6nM2h90ZtuCHsKqHERw1FgDQqw2Q+vhN2Lltk9izYnN2j3FAYZqYb2MNsKRhDh2Ur4FllpDtMIc7SEMnsveKNS/Dm+r7KPJtHAQM8nybTp06ic9pLpQHYUsgWJf3q7tnHnlKVlZWzfvVZqZYYVqh1w11UQ0GLNToSYFIKBQ9LIgEcLUmEJHO3vsCuA3KLvZs5dm9O8/CtOYaJCQkoCC/AJ999hk2bdqEkSNHYsaMGQ736Y5pmvIzbJ+ebdG2cg4MQiIEwYzin1PxzuevIzTQrybfRuXsXp5vI/VyCRDrsFiDlz2w6+VyB2noxKY3zhRZk3DpVQcrJ71RdpxM164rV/LIvEVtQXtjHeoizhKiJiAyMrKmh0U+VdYIxTDDsGHDag4AZwFEWH5bDgDyM1bpLOxW2PcaXCys80wCV2YoWGcp/fnPf0Zqair+53/+R3WWkjtmc1iDtoADvRFd9j4MQiJM1Ubkp70Cv+Mb0TUxEYAl30YH4DyUz/95ADplvs2hQ4dqEkl/BbDD8rsagGC53o1OnDghtrXYpq0lYlvrUoyurmorCPjdd98pe6MsM18AAILlegt3FNkDavLIPv30U0ybNg2fffYZ1q5e65W1SrTO6mvuRfYaM/awUKMXFxcnfrGnQBlcjAWQBsTHy77FBQCtoTzrjARwAQp1zQmoz7M7rT0x7koQPpqZiapOIxBx8zTo9D6oyD2Gi8vmwVSRj/IKSPtNSEhQTlW23L/17L5Dhw7SPqU6KyqJpEVFRS630xV79+512hOxf/9+t5ew11oQMD8/XwxWdADGAGgBxVBnfn6+tK278k1s25qamopnnn2mwYoXukLr56WpDnU1B+xhoUbPbDaLf+wDMB/AYgAfAcgQL7bWq5DKvt8LYBaAqZbfloXE5WXhFTkBowFMhHjQyIXDnIA6nd2p1DYBXOuJcUdZcmN5FZ5bcRyth90Pnd4HpSXpyGvzLEyj8sVvDVlvxIIFC2ru38EKzAsXLpT226ZNm5pt2wDoYvndweb6OqqtyN/KlSudtnXFihXXdP9aaC0I2Lt375pAvC3EXqFIiIG4APTt21faNjExESNGjoButU5Rs0W3RocRo0bUqW6RK231NFdrq7ijyB65H3tYqNHT6/VOEw7tEjlPAwgEcA7iwbfUfp8///yzeLBoBfu8mAvAL7/8ojgIaJlWDYgHFl9/X1Qvr7Zb/M/X31fapys9MfVdljwz7zJmpu5BdiEgVFehqHARSjtYtpX1Rlif1507d4rXqSQoS9cDNQHcaYi9YdbZV2dr2uZIbT1XWnN4iouLnbZVuv4aOGurVBBQQ4JyTEyMeKO1EHtWrFpYmmw7o0oHCNWCovdQ8HU8I0rL86Voq4PkVHlbPc3VvJT6ru9DDYM9LNTo5eTkKLv5rdVTUwAINYmccXFx4g2WQeyF2QLgKwDLxYvlQ0dbtmxxmuuwcWNNEGKdVi20EsTgZhmAdEAIrZlWbbVu3TpUV1U7XHyvuqpaymdwZZy9PsuSr9h/HhM//gXZBWUI0lUib/GzKG29TnF760Hg999/BwC0bNlSfK4u2TymYvG5CgoKkm5qvQ2WQ9kbZunYkBJ4LbT2XGnN4WnXrl1NW+U9Z5a2tmvXDnWlpa2KBGUHvYE7duyQtpV6+UxQPq8m2PXySVPQbwcwDcAtAKYDGA+79yCg7fnSUrzQW9Q1L6XRTXFv5hiwUL3x+MqnKl+sVlKpcz8oDwCWlYLlpc59fHxqgqBAiAeYIEhBkL+/v7StYlq1g6Rf+VDTqlWrnJaml4YsgJqaMdshHtB+gVQzxta1lyUHfq+IxRNL9uFqlQk3dQ7HTWXbUZl3TPUgYM2h6NmzZ81jsuk1gGC5Xv4auEDLgVXxmGyLptkMB7Rr164mj0kWXKKV2Nb27du71D5X2yolKFt7A63vFctQozxB+fvvv3f6Xlm6dKm0rSLnKhU1wXiGeLF8WFDr8ImieKHcKfFXQxUvtHL2/eJq0N5Y1kgiJQ4J0TVz98qntQ0HaK1Xcf78eafJofI6LFKVUZXuePn0W2nmS4rj/cpnvkRERIh/qARX1utPnDgh3l4PYIPN/Qt17+J21HXuI7RGeOfnEaDvAQB49JZO+OuYrvj8sz/wiTVokk+rtQRN1hyK8PBwcUcqCcrS9RAPclnHssQgcQKUw3dmYMiQIdK2WpOJXUmQDg0NVQaX1vu3PCbbpQG00tpWKUFZJelXnqAs9eKpvFfS09Px/PPPA3CQc2WtRbQNdr0xWodPvKF4IaD9+8WVKdieXHaD6o49LHTN3LUCsktnQdbpyrKzK9t6FT/99JP4h8oX9bJly6SLLl265LQ7Xp5rIfUaqOxX3qswadIk8Q+Vs1br9VIXd4XNdpb/69rFbdt1bjB1R1T5BwjQ94C5ogyvjozBs2O7wUevE3MoBABVUE6rrQIg2ORQOElQltu/f7/T4bt9+/ZJ22pNJrYrmmbTayF/riIjI5XBpfX+LYms0dHRTp8/NVrb6kqC9MiRI8U/VN4rY8aMUV4uz7laBrHnKNRyuYwrwye7ftuFNiFtFK9/mxDnxQvrm9bvF2vQnpWVhdWrVyMrK8vhFGwufth4MWCha+LOFZAVFUknAhjj+Itq69atykXirAdWS20P65BMZmameAOVL+qsrCzpIqPR6LQ73mg0StveeuutTvd72223KS+3BlfyoR6b4Co7O9vp8NWpU6cUu9T6vMq7zoNPj0dkxVz4IgxVhafROftHzBhdM/NEOrC1tXlclg4TRdCk8WCZm5sr/qFywD5//rx0kWLtJznLQ1ckUzsJguRMJpPT+6+srERdaA0CXAkW7r77bqeB+F133SVtK9WXURmWlAdCiuET2XvQ0fCJtXhheno6XnvtNaSnp6Mgv6DBpjTXJbjo0qULUlJSVJNo3VWzhtyPAQtdE1c//FrPlqQvqmCT4iBoamn/RbV9+3bxD5UDq/X6Vq1a1eSFyA8AluGAVq1aSTe9cuWK08dVVlYmXZScnOz0wCLvOpeGeqogDvUsg/j4LL0W1udr4cKFTg/C0lRiC1d6uf7vs1R0n/o2wiIehk7ni7Ij29Ajdw2WfrZQsZ11tWYU2OygEPZTZZ0cLOX8/PzEP1QO2PLcIKkq7hoon9e1UFTFtVv3yWaqsvw9KCXVqty/lJhdF07eW1bWYnyO3iu2FZSlQNwHykDcslqzPDdKWvJApefIdqbcgvkL0KpFK8V7sFWLVlj4sfI9YDV69Gi8/PLLDT4ryB3BBQvHNV7MYaFr4sqUWlcKnNmdMdrkGsjzEjIzM51ua+05GTRokDjF1jrEYWU5AMjzJ6ShldNwOP1W7tNPP1X28Njs9/PPP5dK6p8/f15sqz/EYESew1FRk0cj5dOofFHL821ceV6zC8ow8+vDMLbuCh8dcGdHHR788wNItFSttVVdXS0+jttlbV0lzmiyKigocJrDU1BQE/GUlJQ4XYBSPq1YseSC/Hm1WXLBlXWfDh486PT+9+/f7/B5WLduHX777TcMHjzY4UFbCkRV1qmyvl+lCspR9o+p8ILKOjYhUOZRBdv8D5thSQeLdcoTygHg0ccfRfGVYsXnpXhdMR557BGvyuFwR0E8a82azas3i5/zDuL+dGt0GD5qOKc3ezEGLHRNXKka6UqtBKkiqcpBUF6R1O7s0mZbnU48xa0tAViecGm9DZbDrl6KLanYmJ/Ntr7i/2lpaVLAYpfDYdPWffv2YcaMGYiKihKvUwmYpOuhfWXp9EN5+Ot3+3G5ohptgw34eEo/3JAQpvp8ZGVl4eetPzusw7EtbZt0cHUlh6eystLpgV0+JCMtuVCMmkTSMkiVXq05NK6s+7Ru3Tqn979unXIKt9aqtNKBtS8crlNlPbBKr9W9AC5aro+F2Bv4nvIzEBcXp5wuLntc0Cmn4bsStNWlMnJ9LqrpirpUpdXUVp32mjXkPRiw0DXTmp3vytnS0aNHxT9UDoLymTctWrRwum1gYCAAYO1ay5mj7cxay//p6el4+eWXAbhWn6GsrKxmQT8HB5arV69K22qdJRQcHCxeoBIwSdej9oNVQsdO+Ne6o/h4s3iw7B/fGgum9kNESIDTxyUNOai01boKdu/evcULVF5XeUVWKYdE5cAuXQ/L7C7r8Jm8eJ+l58o6+8uV1XcrKiqc3r90vYWi0qvldS1cJVZ6Lciv6TlSHFjHqB9YpbwclddKPnQj1RdSmdUmn6mWmJiIsPAwFF0qsnsPhoWH1fnEwd0zALXQ+v2ita1SzZo7Ybc8xKa0Td63ACZJmMNC10xrdr4rtRJuueUW8Q+VcWZpBgVk+SYq21oDhiNHjtQMx9wIYLDltz8AnTIIKi4udpr0Kk9mLSsrc5qge/nyZWlbrbOEwsLCxPt3UGAOOsv1FtaDlaPCbW3axeGf2y9JwcqMIR2w5KFBtQYrCipttcrNzXWav3Hu3DlpW6kWziqIPSV7ICZ+WvJ95L0xiYmJ6D+gv8MAs/8N/V2qCmzVsWPHmrwY+QKYlrwYKfiDrNKrg9e18GKh3aKFWmrhSI/fwWtlWwvI1WHBooIih20tKihS5Hy5ksMh5UYNgfR5udZFNV2l9ftFax6X4v3iYHkIJt16L/awUL3p0qVLrWcmWs+WHnjgAfzlob+IBzZ5rsFqAHpIQyyArIdDJS/BGtBUVVXVFA37RXZnlnL7VVVV0kXSmbbK0I38TFzKu1A5sJSUlEgXJSYmYvCNg7Fj1Q67xzX4xsHS83fp0iWnZ9fyXA/pYGXTw+Dv3xkBrV7Az8cKEOjngzfv6oUJfbRXcpWWPFB5Xq29Abt373Y6zLJrV80UWCkgqYRU1AyA1ENlFpTRScaBDDGgvBWKXoOM/TU3VswmctDDI++1iI6OdpoXI5/WrKXSqzyfRUstHGn4UuV1lbdVmjau8rjk08oVvWEOhgWtvWGA9mEWaegoAOKK2hYmQ03ie0P2RDj7fnFlmMtdC0WS+zFgoQaldahl3bp14pm1DsoDiwGAGYp1TIKCgpT1QqwsQwfWIaGKigpluX15wqvOfjgAQK3Vc6X9AqpfgLb7FQRBNUHX6syZM07vX7oejoduWlaPRljcI9Dp/NHarxpLHrsZ3aJcK4om5duoPK/WfBtpaEJlmEU+dCHRQznUZfs/xGTm6opqh0M91WnVUjKzotfGNri16bUoLS2t6eEYYtleB7GnR6fsDVNUenWQR6RW6dXZgbW2fB95W6UcFpXHpViF3EplqMluMw0nDlLiu8pQp9qK5Z7gyjAXV2tuvBiwUIPSWmFSOrt9BOIZ4xkokhNtz24BAHEAsu3/tybQmkwmpwmv8uEIvV4v/q8ShEhn9bDs30lPhJTAC/FMcOevO8VZIvIDSziw49cd0plgaGioeLnK/csThKVp3acB9PJDWNVMBJvEqdZXju3ETSG56BY1AbZqS06U8m3a2rcVF2quLygoqDmwjoPdgbWwsBAK1qGuCVAeBM1QBG1btmwR/1A5CG3cuBEzZsyo6bVwFNwKyl6L7OzsmiBM1msAvbhtdnbNGyg5ORmt27TGpeWX7PKIWrdpXacpvlKdGZXXVT7M8/XXXzudfbZ48WKpDVK154s2d2hJs5Gut9DSG+RKZWhPc7XXxJWquOQ9mMNCDcaVIlCKs9tOEBdz6wSH65hIgUZfKBd+66O8XurdUTkAygMWxVm7PC/DQa6FIAhOK8LKe5W+++47pzVLvvvuu5p9WnMt5PdvybWQ7/PMmTOADvDZ3hZRxW8j2JQMQTDj0q9f4GLaP5F35pTi4WotMjdp0qSaHilrDsMQSAtASvk4gNPCfXac5PvIac1jkuq16CBW2J1o+a2Hol4LAJw9e7Ymj0n+/FvymM6eVc5bl+e0yNV12ODcuXNO832kJSFgWTEcEAO7WQCmWn7fbnM9lIGWI7aFBq2c9XhKuUcqnxd5Wz3N1bWEtObFUA2PrxUH9rBQA3Kl2zY5ORmtwlqheFWxXXd4q7BWirPbli1bin8sR60zagBoqq0CoCbfxTbXwebEUkr6VemJkK6HJZ9DgDgFW75Q4Fjxfnbv3g3AMjThJNeitLRUuuj666/HjuxLCJ/wN/gEhMJ0pQQFP72D8qv7AAHo1auXor13T7obm3/ZrOjlSl+djj9N+hM2rq9ZhToxMRGDBltq19j0RgwaPEh6raTVmCdADFKyAXQUt0OacrVmiYahNq15TFK9Fvm0dkCcBm3TEyBNq1bpZZNPq87KysLuXbvFnhp5b9BqYNfvu+qUwyEtvqgyzCYvXGcwGMQ/4iG+D9pYrvC1uR5AampqTZK4TVthFq+Xf2a0zKhRnDQ46LVo6MUPa1OXXhOu1lw7b5gpZsWAhRqMq922ZrPZ/otdb7/ir3TW6gtgIGoWDdwNwGx/1qyltorkXgDHLW3saPl5T7mJlPcQaHPbFjbXAzVDPfvgcKE+61CPNMxUAmUNku1Q9LCYzQLOhvRAxKSR0On0qCg7hot5c2HqctGuXglgmdK5cZNdXoggCOpTOnWw+18nu1Aa8pIvFHmw5vHLh8QkKu8BuaysLHGYyMF7AGbYt1VDENS2bVvx9VDZVr5Q43fffec0uPnuu+/w4osv2t+JE9J7dwLsptQiTZnDcsMNN4jT+1UC7BtuuEHaVgpwVdoqX0oC0DY06y2LH2qldQFQwLsOwt7OmxaKZMBCDcaVZLd169bBWGIUz26TIB649AD2AMYSoyLpNi8vryaHQd4TYMlhyMuTdXtozJ+QLARQbvn7oGWfNqRkXuvie/KzW5tk3qlTp+Kr1K9Ut502bRoAS6+MtYdFPnvW0sNy5coVGMur8Nfv9mN3ZQx0OuDyyXUo+nERYLLMdrLM0tmxY4d0c621VQBLvs2OnQ57GHbsqMm3kc5SVRZqtDuLdZLvI38NpLZOhBiwWfOYSgGkKdsKQFMQlJCQgJMnT6oGAR07dpS2zc/PF/9Qea6k6+siHmIgZrNPh1QCbHkgKK3yrNJWeZE7V2bU7PptFwYMHIDCNPvCed5Ky2xFrb2M7lZbBWVPq0uRQXdiwEINSmu37apVq2oW1HMwBXnlypXSB7yqqsrpbAb5dGVnSYQOVdn8X22/iVTsbByUwzwpsDtrPnv2rNMzYWvegLRatEoPS5EpALd/tB2nCq9AZ65GwboFKO2cLvYIWaunlgLIBsrLy6X7l4ZHNCR9au1hCAwMrBmOGGFp6xUA2wCYa2ZpSZwMichJycTWIRFrOkmJ+OuXX37BX/7yl5qKuGugDIIs+T7yHiYpeNLQy3brrbfio48+Un2u7Ba1tHB2EJKSX1Vm88iTY625SWoBtsMcEpW2yoNGV4ZmrYsfrl+/Hjt27PDaA6sr6tTLWM+0VlD2NFfeKw2h3gOWDh06OJzG+Oijj+Ljjz+2u3zLli0YPny43eVHjhxBt27d6rt55GHWbtv09HTs3LlT9QswIiLC/oB9BdIwhzSDBZZudieBiLx6KgDVWhXXTGWYR2758uU1bZCztMFaxr+0tFS1h6VFh6G4evPjOFV4Be1aBaLFvsU4dSAdOASHB+GAgJoica4c3LX2MJw8ebImuLTtDbog+9JzkTR1W+UgbD1gSxVxVfJ95EGAw+EpFcnJyWL12FVFdkMiYeFhdu9bLQchVyrS+vj4OH1f+/jURFmKJHEjgJYQA9xtsEsSr0sdktGjRzf6QMXKlZo17qK1grKneVvNmnoPWHbt2qU4QPzxxx8YPXq0uFS6E5mZmYqpmm3btq3vppEX0Dp2PGDAAKdDIvLxe2mKscqBVf7FDkBzrQqX2Z7wOjgBlh6jyheA9XopqVY+TVXvg9a9HkBIkjhN5OYu4fjgnr54YNpHTs/EpRWS4drBXWvJfaPR6HTxSXkOj2QCHCboypWXlzsdPrIOtSmCAHlv1Db7IKBly5ZOk1OlBG6L3b/v1jwkouUgpFbkDwJQlFakOLu/eNHy4qu8r6XrYXmtrMOiG2TbWoZF5csjuG19nsbGXd8DtZAqKKssJSEf7vY0b6tZU+8Bi22g8eabb6JTp052dQBsRUREoFWrVvXdHGpAWr7UtCZwSVNVVQ6CDouRnYaY+HoONUMisMmh0EF1MTm7HBYnB7a6bquY1io/E7b0HOXm5gKw7xXyCWqN8InPI6B9DwDA1T1p+Hzuf+Gj14lLDljPxAMh9vTEQhzKSVMuOZCYmAhfgy+qL1XbFU7zNfgqXjdXCrI5W3xScJQcpJKgKyflJqkMH1mfKykIiIJdcFt0QRkE6HQ6p8Nc8vo6QM2QyGeffYZNmzZh5MiRiirLVloPQq50sUtDeSoBo3yoT3qtdHDYI2m7WnN9r8/TmAwbNszp90Btx6pr5WoFZU/zppo1bs1hqaysRGpqKmbPnl1rV2zfvn1RXl6O7t2746WXXnI4TCRXUVGhSGa0zYKnhuPKomNaE7gcTlVVKVpVVlYm/rEMynVn9DbXA67lsDg5sNV120OHDtXMYpKfCbcQtz9w4AAAZa+QoX0PhE94Dr4tw2CuKEPByn8joDALPvr/BaAyS8e6TyiHQdatWydWj7Uptw4DUF1RrTi7k16D1nA4tduucFg8gGOoCRg72D1LlgZBHLqqJWjUOnwjBQEqs7TkQYCUgK1ysLAGQVa27+3U1FR88903du9trQchVwrHSetJqQSM8vWkpNdKpUfS9rXSOp3XW5JT650r3wP1rLFNF3dl9pW7uTVgWbZsGYqLix2ekVhFR0fjk08+QVJSEioqKvDVV19h5MiR2LJlC4YOHap6u3nz5uG1115zQ6vJVVp7TVw5uywoKKjZ1sE4s8PqqX6wW3MGlbDvDVG5f4fqeVtp3SMzHM4SstZssS7YGNzvdrQe9mfofHxRefEULi6fi+rC8zDLanAEBAQ4DQLkOSy//fZbzZm4g54rh2d390IcvrFOwfWF3dRuAMoZVYDDGVUANB8spPo5EyAGH/Jk4rSaKeLSmkfnHT9+eaVbKQjSMKMI0H7A1noQUvSwORjmkifSSgUJa1nGAZDlJqnkfMlzkwBtn1lvSE51B08nkja26eJWWmZfuZtbA5ZPP/0UKSkpiImJUd2ma9eu6Nq1q/T/4MGDcebMGbzzzjtOA5Y5c+Zg9uzZ0v9GoxGxsbH103DSzF2LjkkBico4s13AYj0IymfpWIZE7Gg8WEnbaikyp3G/5eXlTntjrIGK4OOP8NufQNB1Yvd0mWkLCks+glBWYZdEmZWV5XRIKCsrS9pWSuRU6bny9/dXf1zWwmX7lVfrdDpx2EeA8mC5FYAO0OscFNTWENy1aWO5w31QLrlgSWa29jDk5OQ4DYLkw4edOnXCjp07VHst5F/IrhywtR6EBg4c6HSYS352LSU9T4DDmi3yXpP8/HynPSzSCQC0f2ZdmQLvTWobmvaGRNLGOF3cG7gtYDl9+jQ2bNiAH3/8sfaNbQwaNEis3OiEwWBQVHokz3D5bMXJ2aWcdNasMs7scLhgH2qdpaO1BohkObQVmdO4Xyk3ReX5MplMOHmxFG2nvA3fNrEQhGpc8v8UlwN+AnpB7JmxCSyk6qwqQ0LyodPa7l9e6VV6XCoHdytpeKE1HM4Ssl2BGYCm4C42NtZpfRvr4n/SgVvlMckP7OHh4U6HueQ5eK7OJlm/bj0GDh6IqrSaufB+Bj9sSK8Z+5OmrKoEIVI9FciSpePhsGaLvOdI6jlTyfmS1+Jx+TPrSoDvQVqHpr0hkbQpThdvCG4LWD777DNERETg1ltvdfm2+/btUyzzTt7LlbOVEydO1ORvyA8WlvwN+RdlSUmJ07PmkpISZUOcHNgUgYgAINrm/hOgPIOX79MXytoiW+E46VbjfmtbVDEocTAmzP8Fvm1iUV1ahALDm6hocbhmuw7iL3nCZcuWLVFcUqw6JCRfmsDl8XNHvQF6B4/fycHS4bYagjup50SlN8q6Po403KHymOTDIVJPg8owl8MF/TTOJpnz4hyYfc3AMIjv6SuA+Rcznn/heWmYRREshMKu3L78MxAbG4vMzEzV+5ev1lxbz5k8J0rrZ1ZKTlV5rdydnOoqVyqyeksiaVOaLt4Q3BKwmM1mfPbZZ7j//vsVZwGAOJRz7tw5fPnllwCA999/Hx06dECPHj2kJN2lS5di6dKl7mga1TNXzlakL0qViqgOu2JVzgLtkgadHNjs9AVwG5Rnt44CFuuZuINeA4f6ArgRdoXb5Fq0aAHjZaN9r8UaPVoNnYbQwZNwuaIa5WcOoWD5mzAlX3J4UJHPIpJWodZQhyY5ORm+/r6oXlVt12vi6+9r/+Wpg7gwoE21YbvX0MnB0o6TIRE5KShTeQ9Yr1ccWB3MvJIfWKXS+yrDXPLgxpXZJA6HWQCYgpTDLK4E+Pn5+U7vXx5cubKwp9bPbGJiIkaMHIFNWzYpXytfYMTIEV41HORqRVZvSiQl7dwSsGzYsAE5OTn485//bHddbm6uIrGssrISzzzzDM6dO4fAwED06NEDq1atwrhx49zRNHIDl85WrMmxE2A//VdGWnNH5Yvd4ZRKDXkR0oEtBbUPCbnSawBoGj4KDAwUZ7TJDtj6wBCET/gbAjv0BQD8+cYEvDJxAiCYVAuBye9fqtmi8vjldVCysrJQXVktts0mYKg2VdsnUgpQrTZsR8vzXxcqeUTWg3RiYiJCW4WKvW7ymVd6ILRVqOLxZGdnOx3msity5yQQlNM6zJKYmOg010Xe1qKiIqf3X1RUVNNMa8Ci8nmxHULV+pn94bsfxO3kwyyjkz0ypdWZuibScvHDxsUtAcuYMWNU3wiff/654v9nn30Wzz77rDuaQQ1E64felcXkpLoSKt3RtgsgAtA21u7KkJArvQbW4SN5IOZgjaLi4uKafQPwj+qCthPnwDc0AubKchg3LMDLb27EK2ZL5FMFu4OwbbBU28FK/vp899134h8qORQOF/S7qPwXaoU4Xcl1ULl/uexsy4uiEghar8/KykJJcYnYE2QzS6ykuEQRhGVmZjqdeZOZmSld5MpBUGvPSVZWllivJcDm/g1A4cVCRVulYU+V+5cPiyYkJDitYGxb7l1rD0Nj6YlwNZG2KdaXaQ64lhBdM61jx64sJte1a1enQweJiYnKfTj5srbrDdE6JOSkrXasZ8K1zFKSEmB9gJY9khE2aiZ0vn6oKjqHi2lzUVVQM6NFGo4ZB2VvVIWDx+QsOVa2rTRjSCWHQj6jSD6zxBHF9RrvX6Jy/3JSBV2VQNBae2nr1q1OeyLkybGXLl0Sr1cJmKTr4dpBUOswy4kTJ2qmlY+BlOtiHb5y2BOgIRDs0aOH+HhtA2pLpdvu3bvb3wjap6p6w5RWZ1xNpPWmFYhJOwYsdE0UY8eyg7VpjP3YsdZS70DtRcPsyu0LUC03r+DKkJCTtjq0D7XPUgIAXz+EJc9EcM9kAMCV0h0o+OY9CKVXlNs56Y2yI8B+mMeSzCwnFRs7DTEYPIWa0vhQFiP7448/nAYMf/zxh/L+VWbeOKThea2urtaUm+PKLCGp4ms8HM68kVeEVRwEjSZpWM7nV8cHQS3DLOfPn7fvuQPEpO40ZVvbtWuHo5lHVXsZ27VrJ217+PDhmvewPBDaKm579OhRNHVah7m8bQVi0o4BC9XK2eqzUre5ysFafsYYExPj9ExcnvC4caOlKFdbKGdIhAO4AKxfvx7PP/98zeU6AMVQriVjOWu9pllCa6DMIdnuYJ/WbTXMUvIJiUDbiXNgiO4CASYU+6bCGP4DMEpwHIi4khcyFuJjPwNFgTWH0mTtOgi7aeWAZcjFScAgDdlYaS0wp7E3Rhr2U3kOrAGLK7OE2rZtK9bwUZl5Y7u0yNw35mLTkE0wbagZk9Ib9Hhz7pt2D0vL8Il1NW61xyTP7+vatasYaKi8X+W9jGvXrrV/rQApEFq1ahXeeecduzY3JVqHrzxdOI7qjgELqdKy+qxUL0XlYC2fJabX653mD8i3vXTpktOkV3nXPYCaA518Ro8BjntNbHtdrjjYxrpPAQ4Xk3O47Tgoh4RSoHic27IuInrG+/AJDIFJKEGB4V8o98kQr+yg0gatPTzWIGAcxCGvU3AYBBQVFdUMNQ2Fcrp2pTKRU/pb5Ytdvq3UVnmNSLW2auyN8fPzE3s8VJ4Da50SV6bfXrx40enMG/mCggAwOnk0qlCl2LZqVRVGjh6p+FzIORs+UUwrd5BILJ9WLvUyqgxhynsZa5sl5Moq1Y1dbcNX3lA4juqGAQup0rL6bG21MuRVRqWzR5X8Afm2BoPBadKrXdFAJ93hdgGG1iRSQDlsAIjBlhrVISEd5m86hnfXZ8EnMAQVuVm4WD4Ppu6yhpxysD8nB2GHdWBUhoTkB6vc3Fyn07Xla+lIz7HKF7tdVVwNs6QkGnpjunbtioz9GarPwXXXXQdA7Gm4+eab8fMvP9sFwjcPvVlx8DIajU7zjeSJrOvWrXO6snJdVtWVkl9Vnit54TjF4pPjYNcbJR++GjhwoJgwrBIIyVc3b+68oXAc1Q0DFnJI6+qzruQPSDQkXErJqSr7lVdvBeC0O1xBB3FatbwY3DZc0wrMkhz7/3WGIITfOhvvpIvJrJcz1qJo438AnyoxGOoA9QRVAeKUYg09EVXVVWK75AGbZQq0vOfqzJkzTnuu5EMSvXr1woX8C6oBg5STZH2uNMySkmjojQkMDISzQoPyNZLkhfTkbC8PCgoSZ2qpBJctW7aULlq1apX4h8p7cOXKlS4HLFLSrcr7Sj4cccMNN2DFihWqvVHy3hjpIKsSCKkdhLWssN4UeUvhOHINAxZyyOUl0DUMXUhd8yrbyrvupXFmlTPG48eP299BPByWUFewBgFaisFpGOaRWA/YskDI7494tL3tRfi1joG/rx6vT+iBe966rWbfDobF7PZZjFrzcqqqLN1A8l4uQArYpOth6W2x9lzJH9dYcVu9vmbdH7PZ7HSmlrwgndZ6JRINvTHSsKBKIGYdksrKysKu33eJAZhNz92utF2KJMr4+HixKnAt5f4BICIiQvxD5f0qXe8CaVhUpUdSHlxK+1fpjZKK4MEyY8tJ0Gg746u5T+ttLNO1SYkBCzmktYS7tEqsylm4POExMTERNw+7GT+v+tku4XLosKGKLwxpTRuVA5v8ICzRUkLd2rvgYEVbhz0BqsM8NmyGWVpcNwxt7p0FvW8AqkvyseLFO3B9+1a4x7q9yrCY3T6joQyu1BKEAU0Juq1atRL/UHlcUsE+yHJUHA0/wUEOi4b7B6C5N6Zbt25i0qlKIGadqrtgwYKa+3fQc7dw4UL8+9//BiBWGnYWMAQGBkp3Ex0d7fS9LZ+lo1VticTyYR6J9TOosvgkYDnBcBI0/v7774rtOa1X5O3TtUmJAQs5pHX12WHDhjk9C7ddb6Sqssrh2jSVVcpF9+Rn+o7YJRFaEykdrBZsN8wSCocr2trfCbStT2TdtgTAnb5o3fHPCPG5HQBwNXsvCn56B9cv/B/l9vFwOK3WTl/UWu5foqGXS6fTOX1c8kTOq1ev1gxf9EdNaf7dACodDMNoTRDW2Bsj9XaoHNyt1+/cubPm/h30xskX/rOuhl1buX/AMqPHGjTK22YJGuXDZ1q5kvAZFxfndEaVvDdISkJXeVzy1c05rZcaKwYspMqlJdBVzsLlsrKysHPHTvvufx2w89edii/Kqqoqp2P9dj0sNj0cABwP9TjJ33D4GFyog+JzWxjCOz+HAHMPAEBx4Tco+f5rwNFqxRoX1HN5tWgHa+nIH9eZM2ecPi75QVgaPrLNDYoQt1VUOHYlQRjQ1Bsj9QqoHNytw5ZS3onKcxUUFCRdJCXVquxTnnQr9TKqzNKxWyhSA1cSPqWEdpXFJ+VJ6oqkWwePa9CgQdJFnNZLjZXz01hq1kJDQ9G/f3/FZf37968ZVoAsidAfYp7BRMtvf0iVO62ksvAq5NdLRcOsB9ZQy+8UAIKDrnN5IPK05bcR9vVFrPkb8n2OheODKqB5mMPQvgeiEz5AgLkHzChDvv8/UBKc6jhYsfYGydta7KCt1qGT0ah5Xn0dbGd9XJUQp2Avgxi4Vdo/rtp6GKTrIZslpLKtfPhE0RPxnuV3tP39S07b/H/KfhMpQXg1xGGQEstvSyB05swZAMAtt9xSE9zKn1M/cbvhw4crH5OTfcpnn1l7GbEKYpASYflt08voqgXzF6BVi1aK56pVi1ZY+PFCxXYXLlxw+tmSJ7RPmTKlpjdG/rgsvTFTp06VtlX08sidEn9xWi95K/awkCot49wOkwgBKc9AnkS4e/dup/fn8HqteRHyQARw3hsSj9qTc61qGeYQBAHB/Seg9fA/Q6fzQaXuFC76z0W1/vw1D4lo7jUCag7YNmvp2AYt4eHh4vCAyvCJPJGztjWK7NZzUumJcNhWrWX8nQzJWEVHRztNkJbnmkjT5VVmHtlO1Xapl1GjBx96EEWXixSJxEXbivCXh/6Cjes3Kjd28tmSk3pjKm2uszyn8t4YTuulxooBCzmkdZxbkUR4DMA5iLkWHcSL5T0hmZmZTod55AvPSbTmRThpgx2twzG1HFjLKqrx3NIDCBv5IACg7OgWFPp8BCG+wvlaRta2yjlqq6vDVxqCoNjYWPF5Vhk+iYuLky4KCgpyukZTixYtlG1VqRfisK0qxQMdqiUQkqrH7oPDRGK7YS4dVGce2eZOWXsZ5bNpbHsZXZGVlYVNGzcpP1cAhCABm9I2KYZFpYR1lfeKPKFdfHAQCxsOtXlcNhUAAE7rpcaJAQs5pHWcW+peXghAnoNp6VmXdy9funTJaf6E3awTV87EnbTBbp+XUHtyLuC0GJtv6xjcseAXZF0ohWCqxqVN/4vL51faB0KOknkB7StLa+01AjQFQaWlpU5n6Vy+fFnatm3btjVJyvL7tDwuxQHT2htku53aWkITUOssKT8/P6eBkLXSbbt27cTtzsNh9Vp5EFZeXu6018I2kbi+Z9Ns3bpV/EPltZIv1Ci1W+W9Ik+6jYuLc/q45NsCnNZLjRMDFnJIMc7tYOjAGogkJibWHOwdBAHyL0FpZo/Kl7XdzB9XD4KVNv87mPns0jAL4HB9nsA/BiH81tnIulCKiGADDiz8GyrOHxFzC+Q1Uyxn7Q5nFGlIkAXg2lpCGoKgoKAgp70x8l4TqRchH0oXba630rqWEKCpeGDv3r3F9YpUkk779OkDQFYvRuUxyXv5pGnbKs+r/DG5dTaNhtcqJyfHaTKzfJinTtOlwWm91Lgw6ZYcSkxMxPCRw4EVAOYDWAzgIwA/ASNGjZC+5GbMmKEMApYBSIdYnE0AHnjgAWmfZWVl4h8qyX5XrjhY1Me2bL7j5VtEjpJWHW1TAmAIgMEQpww7Ss61brsK4hTgVgDy9GhVcj8i7nwJekML3NAhDCufuAkV547UDHNYn4P1lv8d9QRZcw1qSZAFoCk5VWqrSiKpnPQcqxzY5D0MJSUlTpNZi4uL7dvaBkAXy2+1tlq3lXOw7bhx48Q/HPV8AUhJSQEAHDp0SLxA5TEdPnxYumj8+PFO7//222+XLtLSy+gqxbpHDl4r2zIAWpOZmUhLzQF7WEhVdXW1OCRyOxTd7NVVNWdra9ascZprIZU3t+7PyTCP3VRlHRzeP0xw3GuhpYy+YPn5VXaZswUNqwBsAPSBIQi//VkEdugDADDuWobF//wP/HzqEPNrTJCt7+RUQDbspnKGL6+IevDgQac9FwcPHqxbW530Gsi3lQ7u/nD4XFkP7lKNEZXHJK9BIi1+qNJW+cwbty2SZ31f1ZLDIwUvKjk88uCGibTUHDBgIYeysrLw89afHa4ltC1tm9Qd7u/v7zTXQj7rQuq6j4HDA6vdrBMnB0s7TnJjFKwHRQe5DmpBi390ItpOfB6+IREwV5ajcO2HuHJkG/x8/mvfBmf/u/q4nOTQONQXQC+IQUpHiP2nNgHLoEGDkJmVqRow3HjjjdK2ta0TlZcnS9hxdBDWq7RVY3D1/fffO32uli5diueffx5t2rRxGgSFhYVJ+zxw4IDTocYDBw5IF7kjCJB6beJsHq/lf3kNlMTERIwYNQKbV2+GkCJI969bo8PwUcPt7p+JtNTUMWAhh7QmB3bp0gVnz55V3S4xMVG6SFqwUOWM0W5BQyf375CWba0HQAcr9TrSsk8ywkbMhM7XD1VF53Bx+T9Rle+gwqnWXhNX2gqIOTTFAE4C6AQgRL2tWAaxRwkADsLhgO+NN96IL774QvUMX14MTVoeQaWHweHyCFrVMvMHADZutEzxjYfDaejp6el4/vnnxanYTnot5FO1Y2NjxT9U8m3kCbpA/QcBUq+NyuO37bX54bsf7O5/TMoYh/evKORH1AQxh4WcqyXXYOTIkU63GzVqlPJy6zRZeSEu6/TfOtx/nbbdB2VeTob9Jjpff7RJeQJtxsyCztcPV8w7kHvpaVSV5KgXbrP2BIRafo/DNRVOAyAGIZss12+EOB3ZESe5Jg61tfk/3H4Tf39/p/kW1lk6Lt+/xveA9N5aAuXr9bV48ZgxYwDIZispYw3pf/lspptuukn8QyXfRt7DBNTMpsnKysLq1auRlZWFtavX1nmBQGuvjc86H8Xj90n3QXJKsl2viStBiGJGk+U12LBNnNFE1BSwh4Uc0uv1Tsf6rQXhsrKynG5nV1tFgOo0WTvW/cpn0zibeaMlh0IHcfqrk2nNZ4quIHLq2zBEdYYgmFDs9yWMvkuBnhDzZ9R6OLT2mrjSVq29NhqHmaQehIs2t7ekrsinv3bp0gUZGRn2xcgsQz1du3YFIL4XqqurVe9fXjxQaquG98Ddd9+Nl/7+Uk1VYJshvLvuuguALJfD9j1kyS+W53pIeTEqz79d0qvsuaivPBBXem20Tqvm+kDUHDBgIYf279/vNC9h3759mDFjBrZv3+40J2Dbtm3KHeugrIPiLAgRLJdvkF3mLEFWSzEya1tVpjVvzbqIJ7/ZB0NUZ5iulKDA722Ut9hfs20HB/dtpTJ0ck1t1RCESAGDSsAkDxikqbIqdVjkU2UDAgJqkl4dFCOzlrH38/Nzev+KnhhA83tgwYIFTp+DBQsW4L333kNiYiLCwsNQdKnILrAJCw9THKgTExMxYuQIbNqySfk8+gIjRo5okIO61hoorgQhXB+ImgMGLOSQYkrrMNQcrLYCqKxZJE6adXIvxLN266rC4QDek60ia2VNJJUHDGqJpDrLj5ZKr9aD8EibttrOElKd0aRD6KBJmPHZ7xAEoOJ8Fi4umwfT6IvaghBXZskAmgqnAdDUa+Pv7y8GDCoBk3x9nAsXLjgNAuSzZKRtVYqRWbeVpkKr3L98qrTBYBBzlaqgfA9YAmF5W0+ePCn+ofIcWK/PyspCUUGRwwTxorQiu94FKS9EVr02eXRygyen1tZr40oQ4rYZTURehAELOXTs2DH7AxsgHayysrIAACaTpb67Srl7hwWrHBRjU535o7XSq7WtlyDmpHSC42RaB/vU6YIQjr+iRecbIAjAvTfE4c1JdwDmKu0rEDvpZXIoHrUWTgOgqdcmLi4ORzOPqrZVnkjqSrn3kJAQp9sGBwcDsORZOJmlI8/DkP4OgDRkI/9fvu2ECRPw008/qT4Hd9xxBwDXexcaS5VXV4IQTmum5oABCzkk9ZyoHAQUZfStXfxDIB6w9AB2i5fbVa+1HthSIM6UOAX1IMDJ/Tu0DDWzZE5BPaVctk8/cwe07fQC/HQxEKor8a/J/TFpQCzeNFlmwGiolyFxpdJrLYGITqeDAEG110Yny1BNTk7G0aNHVduanJwsXSTlaKjcvzyHo23btk63tQY3wcHBYkl/lfuXAh/IAliVoFUe4D7wwAOY+dhMVK+qtnsOfA2+YtFC1L13wdurvLoahHBaMzV1DFjIIal2hcpBoE0bsWugoqKiJtfEQTE2u6nKjvJinAUBWvNCXElQtewzqPoWhFU9Dr0uANUlF3AxbS4mvWNTvdRRT4oaa1utvSb7VbbTMHzk6+srThvWQflcWZ5XP/+avBBp2E2lrfJhOSnfY1WR3f3b5nuYzWanPSfW4CI8PFwMWPygXFDRV/zf+l4BxKUBLpdeVg1aW7ZsqXgIu3buwg2DbkBVWs0Uaj+DH37f+bviMTXV3gVXgpDG0nNEVFcMWMghKeFS5WAVEBAAQFx7prKqUrUYm2JFX6u2UA4fhcPx0IkreSEaE1TFKbW+aB3+AEJai2Xar57ag4IV78B89TLsxENZH8T2/7q2VSUQsYqMjMTZc2fFy4bIbrNH/B0RESFtKwUkTwI4AOAExCGx62GXRyTle0TBbviq6IIy36NXr17YtGmTapG33r17A7Csz2Pt8JG3da/4W74+zwMPPID3339fNWh98MEHFU9Vnz59UFleic8//xwbN27EyJEjpZ4Vuabau1CXIMTbe46I6ooBSzOVlZWFEydOqH4BXn/99di8ebPqgeX668XIwGAwOA0W5EmUAMQDWTGUM0TUFv6rS16IXAf7TXyCwhB+x/MIaN0dAFD8yxKU7FsCXDXbbwxoKnAmtVVDVVop6fQRiFOJrUMiliRlayA4c+ZMvPTSS+LzL++5siSnPvbYY9JFilyPmy0/gNTDY831AGT5HirDV/J8j0cffRQffPCB6nPwyCOPABADm4yMDDGwkbfVEtj06tVLuui9994TAxYV77zzjsPLZ8yY4TBQsWrqvQsMQohYOK7ZKSoqwthxY9G1a1eMGzcOiYmJGDturN1sHuvCcmqsC9NdvmzplVAJFqTrraxDQvJFAqugPtQSaPO/gw4byWmb/08p/zXE9kT0/R8gIKY7zOZS5Gf+AyUJi4ExKsGKtddEXuDM2mviyFgA0wHcYvmdbL+JNORxGmIvyC2W36eU1999993iBRNt9jlBvNhagwQQey18Db5iW/ejpsCbTa4HYJPv4aBwmm0i5+AbBzt8DgbfOFg6gE6dOlW8QV8AswBMtfzuI148bdo0xXOwcuVKh8HpypUrbZ8ul3Xp0gUpKSk8uBM1QQxYmhmt1TBzchyUn5ex1uuQZqCoBAvyGSp6veXtZtPpYv1fut5KB3GlZHn11Fw4X1nZ5oBt3fZ/fz6JyHv+CZ+WrVF5MRu5p5/G1YTfxWRPtSBEPnTzHmp6TxwFV9b7L4V44FbZ76233uq0rbfddhsAm5kv8sCmg3ix7UrBG9ZtgK5ap2irrlqHjekbFdspKq3K7l+t0uqqn1YheUSyYr/JI5Kx6qeaRS2Tk5PRKqyVw8CmVVgrjB492u45EEwC/vrXv+L666/HX//6VwgmQXxuiIhUcEioGalTNcxa8k1mz56Nhx5+SDV/Y/bs2dK2MTEx4rpDKjNE2rVrp7xvAdoWNLRu6yAvROcbgDYpT+CNVUeg0/ug9NBmFG2ZD6G0QrGdahCikkMi3z4oKAhlZWWqxeCCgoKki6ZMmYIvv/xStSDflClTALg+82XeW/OgD9DD1MckzpTSA/oMPea+ORdDhw5VbOuORM69u/diwMABKEyrWRm5Tds22PXbLrttrdSGf4iIHKn3HpZXX30VOp1O8RMVFeX0Nlu3bkVSUhICAgLQsWNHLFq0qL6bRdBWr8JKKmFeDDHfZKLldwkUJczj4uKUlVutPRHVAARlqfdu3bo57Ym47rrr7ButdVqzPLgYLP72bd0OUfe9i6DrhsJXr0PR+kUoXPUuBFOFYjvood7DUgkxL2OH5beDWUeDBg0S/1BZy0a6HrKeK9vHZfnf2nPlSk+INRA1JZvE1ygZwGjANMaEdWvEQFSuLuvj1DbUkpCQgIL8AqSnp+O1115Deno6CvILkJCQoLpPIiJXuKWHpUePHtiwoaaeuo+Pj+q22dnZGDduHB588EGkpqbil19+waOPPoq2bdsqxunp2rlaiEoqYS6vSGpTwtxstuR/PAFxReGTADpaft5T1tWIjo4WD/YxcDjrRB7YhoSEwGg0qrZVXtsDgDK4ABCYOBjh9zwNvaEFqi8XYumzt6H/PMuQQyiUyaHO1jIywGFZennQ8re//U1cWVglOfW5556z37eGZF6tPSF1LcvujkTO0aNH2w0BERHVB7cELL6+vrX2qlgtWrQIcXFx0syB6667Drt378Y777zDgKWeuVqvQksJc0UQ1NfyA0gzVORBkFTbReVgLV0P8X3w2++/qQ419ejRQ9q2RYsWuHLliqWXRI9WQ6cjdJCYtFqecxCl6z9E0sf31RRjuwSH69jIi7G1b99eHL5SKUsfGxtb85wkJyOkVQiMq4zi9rK2hrQKURzApZ4rax0S67aW6eLywm1ah2NYlp2ImgO3JN0eO3YMMTExSEhIwD333FOzJogDO3bskJaJt0pOTsbu3bvFwlkqKioqYDQaFT9UuyWLl2DU0FGK4ZtRQ53nLzgbOnBl6KJHjx5OZ97Ig5AHH3ywptdEPtRkGZJ56KGHpG2tf+tbhCBi0utSsGLcnYYL376EmfeLeSG9e/d2Okupb9++0j5ffvll8Q+VXgvpeouMvRloE9JG0dY2IW2QsTdDsZ2158rREJra4nu1Dce4mkhLRNQoCfVs9erVwg8//CAcOHBAWL9+vTBs2DAhMjJSKCgocLh9ly5dhH/+85+Ky3755RcBgHD+/HnV+3nllVcEiIcfxU9JSUm9Pp6mKisrS1i9erWQlZV1zfsqKioSklOSFa9DckqyUFRUpNguMzNTvN7H5nWz/G/bFh8/H4fb+vj5KLZbvXq14B+dKLR75DMh/rmVQuzT3wstut0k3Xb16tWCIAjCJ598Iu7jaQgYCQEdLL+fFrf773//a9/WOyHgVdnPHY7bapWeni689tprQnp6+jU/X65wxz6JiBpCSUmJpuN3vQ8Jyet39OrVC4MHD0anTp3wxRdfKGaMyNmuNyNYFkCzW4dGZs6cOYr9GY1GRTc9OVef+Qtahy4SExMxYpQlL0ZOB4wYZd+7sPv33WJZdlNNT5ufr7IsuyAIOFIVjqgpb0Hn64eqwrO4mPZPVBWeEWfpoGZIRDEF20GBNXmCsLWtm1dvFt+PHQCcAnRrdBg+arjqc6clh8MdRc6aeuE0IiK3T2sOCgpCr1697GYqWEVFRSEvL09xWX5+Pnx9fRVrkNgyGAz2VVTJo7QEQVryYqxqK8teXmXCS8v+wA978qHz9cPVEztw8dS/IbS9CsQBPlk+GDV0lDJBWMPaOHZtlSW9jkkZU2/l3t2R9MqKqETUVLk9YKmoqMCRI0dw8803O7x+8ODBYllxmfT0dPTv3x9+fn4Ob0ONV116AhyVZT9TdAUzU/fg0Hkj9Drg8aFxWHfgI6TvrpnuYzujplOnTmKg0goOy/3bJqey14KIyHvoBOv4Sz155plnMH78eMTFxSE/Px9vvPEGtm7dioMHDyI+Ph5z5szBuXPnxOJZEKc19+zZEw8//DAefPBB7NixAzNnzsSSJUtcmiVkNBoRGhqKkpIS+ymv1KRsyczHk99koORqFcKC/PHRvX1xY+dwAKg1uBg7biw2bNsA0xCTNEvI51exJ2bt6rUN/EiIiEjr8bvee1jOnj2Le++9FwUFBWjbti0GDRqEnTt3SvkBubm5irLvCQkJWL16NZ5++ml8/PHHiImJwYcffsgpzWTHbBYwf/NxvLchC4IA9I5thYVT+yGmVc2CQ7UNiUi1TdY0rVV9iYiaunrvYfEU9rA0bSVXqvD0dxnYdDQfADBlYBxeGd8dBl/1ooTOcJiHiMg7eKyHhai+HT5vxMzUPcgpugJ/Xz3emNgTk/pf24wwJqcSETUuDFjIq6XtO4s5Px5EeZUZ7VsHYtG0JPRsF+rpZhERUQNjwEJeqbLajDdWHcaXO8TFAIcmtsUHk/ugdZC/h1tGRESewICFvE5eSTkeXbwHe3OKAQBPjOiMJ0clwkevXkiQiIiaNgYs5FV2nizE41/vRUFpJYIDfPH+5D4YeV2kp5tFREQexoCFvIIgCPjfn7Px5tqjMJkFdIsKxn+mJyG+TZCnm0ZERF6AAQt5XGlFNZ774QBWHcwFANzRtx3m3tELgf51m7JMRERNDwMW8qjj+aWYmboHx/NL4avX4eXx3TF9ULzThS+JiKj5YcBCHrP2j1w88/0BlFZUIzLEgAVT+yEpPszTzSIiIi/EgIUaXLXJjH+lZ+I/W08CAAYmhOGjKX0RERzg4ZYREZG3YsBCDaqgtAKzvt6HHScLAQAP3pyA58Z2g6+P3sMtIyIib8aAhRrMvpxLeHTxXuSWlKOFvw/+9afeuPX6aE83i4iIGgEGLOR2giBg8W85eO2nQ6gyCejYNgj/mZaELpHBnm4aERE1EgxYyK3Kq0x4Me0PLN17FgAwtkcU/nX39QgO8PNwy4iIqDFhwEJuc6boCh7+ag8O5xqh1wHPje2Gh4Z25JRlIiJyGQMWcovNmfl46psMlFytQpsgf3x0b18M6Rzu6WYREVEjxYCF6pXZLODDTcfwwcZjEASgd2wrLJzaDzGtAj3dNCIiasQYsFC9KblShae+3YfNmRcBAFMHxuHl8d1h8GWJfSIiujYMWKheHDpfgkdS9yKn6AoMvnq8MbEn7u4f6+lmERFRE8GAha7Zj3vPYs6PB1FRbUZsWCAWTk1Cz3ahnm4WERE1IQxYqM4qq814feVhfLXzNADglq5t8f7kPmjVwt/DLSMioqaGAQvVSW7JVTy6eC/25RQDAJ4c2QVPjuwCvZ5TlomIqP4xYCGX7ThRiFlL9qKgtBIhAb54/54+GNEt0tPNIiKiJowBC2kmCAL++/NJvLU2EyazgOuiQ7BoWj/EtwnydNOIiKiJY8BCmpRWVOPZH/Zj9cE8AMCdfdvhn3f0QqA/pywTEZH7MWChWh3PL8XDX+3GiYtl8PPR4eXbumPaoHiW2CciogbDgIWcWnMwF898vx9llSZEhhiwYGoSkuJbe7pZRETUzDBgIYeqTWb8a10m/rPtJABgUMcwfHRvP7QNNni4ZURE1BwxYCE7BaUVePzrvdh5sggA8NDQjng2uSt8ffQebhkRETVXDFhIYW/OJTyauhd5xnIE+fvgX3f3xrhe0Z5uFhERNXMMWAiAOGU59bcc/OOnQ6gyCejUNgj/mZ6EzhHBnm4aERER6r2Pf968eRgwYACCg4MRERGBiRMnIjMz0+lttmzZAp1OZ/dz9OjR+m4eOXC10oS/fr8ff1/2B6pMAlJ6RmH54zcxWCEiIq9R7z0sW7duxWOPPYYBAwaguroaL774IsaMGYPDhw8jKMh5gbHMzEyEhIRI/7dt27a+m0c2cgqv4OHUPTiSa4ReBzyf0g0P3tyRU5aJiMir1HvAsnbtWsX/n332GSIiIrBnzx4MHTrU6W0jIiLQqlWr+m4Sqdh8NB9PfrMPxvJqtAnyx0dT+mJIp3BPN4uIiMiO26d9lJSUAADCwsJq3bZv376Ijo7GyJEjsXnzZqfbVlRUwGg0Kn5IG7NZwHvrs/DnL3bBWF6NPrGtsPKJmxisEBGR13JrwCIIAmbPno2bbroJPXv2VN0uOjoan3zyCZYuXYoff/wRXbt2xciRI7Ft2zbV28ybNw+hoaHST2xsrDseQpNTfKUSD3yxCx9sPAZBAKYPise3Dw9CdGigp5tGRESkSicIguCunT/22GNYtWoVtm/fjvbt27t02/Hjx0On02HFihUOr6+oqEBFRYX0v9FoRGxsLEpKShR5MFTjj3MleGTxHpwpugqDrx5z7+iFu5Jce12IiIjqk9FoRGhoaK3Hb7dNa541axZWrFiBbdu2uRysAMCgQYOQmpqqer3BYIDBwKqrWv2w5yxeTDuIimozYsMCsWhaEnrEhHq6WURERJrUe8AiCAJmzZqFtLQ0bNmyBQkJCXXaz759+xAdzYJl16qi2oTXVx5G6s4cAMDwrm3x/uS+CG3h5+GWERERaVfvActjjz2Gr7/+GsuXL0dwcDDy8vIAAKGhoQgMFPMk5syZg3PnzuHLL78EALz//vvo0KEDevTogcrKSqSmpmLp0qVYunRpfTevWcktuYpHUvci40wxdDrgyZFd8MSILtDrOWWZiIgal3oPWBYuXAgAuOWWWxSXf/bZZ5gxYwYAIDc3Fzk5OdJ1lZWVeOaZZ3Du3DkEBgaiR48eWLVqFcaNG1ffzWs2fj1RgFlf70NhWSVCAnzxwT19MbxbhKebRUREVCduTbptSFqTdpo6QRDwybaTeGvtUZgF4LroEPxnWhLi2rTwdNOIiIjseDzplhpeaUU1/vb9fqz5QxyGu7NfO/xzYi8E+vt4uGVERETXhgFLE3E8/zIe/moPTlwsg5+PDi+P74FpA+NYYp+IiJoEBixNwKoDuXj2h/0oqzQhKiQAC6b1Q7+41p5uFhERUb1hwNKIVZvMeHtdJj7ZdhIAMKhjGOZP6YfwlqxPQ0RETQsDlkbq4uUKzFqyFztPFgEAHh7aEX9L7gpfH7cvD0VERNTgGLA0QntOX8Jji/ciz1iOIH8fvHN3b6T0YpE9IiJquhiwNCKCICB152n8Y+VhVJkEdGobhP9M74/OES093TQiIiK3YsDSSFytNOHFtIP4cd85AMC4XlF4+0+90dLAl5CIiJo+Hu0agdOFZZiZuhdHco3Q64DnU7rhwZs7csoyERE1GwxYvNymoxfw1DcZMJZXI7ylPz68ty+GdAr3dLOIiIgaFAMWL2UyC/hg4zF8uPEYAKBvXCssmNoP0aGBHm4ZERFRw2PA4oWKr1TiyW8ysDXrIgDgvsHxeOnW7vD35ZRlIiJqnhiweJk/zpVgZuoenL10FQZfPebe0Qt3JbX3dLOIiIg8igGLF/lhz1m8mHYQFdVmxIW1wMJp/dAjJtTTzSIiIvI4BixeoKLahH/8dBiLf8sBAIzoFoH3JvVBaAs/D7eMiIjIOzBg8bDckqt4JHUvMs4UQ6cDnhqZiFkjOkOv55RlIiIiKwYsHvTr8QLMWrIPhWWVCA30w/v39MHwrhGebhYREZHXYcDiAYIg4D/bTuLttUdhFoDu0SFYNC0JcW1aeLppREREXokBSwO7XF6Fv31/AGsP5QEA7urXHv+8oycC/Hw83DIiIiLvxYClAR27cBkPp+7ByYtl8PPR4ZXxPTB1YBxL7BMREdWCAUsDWXUgF3/7YT+uVJoQHRqABVP7oW9ca083i4iIqFFgwOJm1SYz3lp7FP/9ORsAMLhjG3w0pS/CWxo83DIiIqLGgwGLG128XIHHv96L37KLAAAPD+uIv43pCl8fltgnIiJyBQMWN9lzugiPLt6LC8YKBPn74J27eyOlV7Snm0VERNQoMWCpZ4Ig4Kudp/H6ysOoMgnoHNESi6YloXNES083jYiIqNFiwFKPrlaa8ELaQaTtOwcAuLVXNN760/VoaeDTTEREdC14JK0npwvL8PBXe3A07zJ89DrMSemGB25K4JRlIiKiesCApR5sPHIBT32bgcvl1Qhv6Y/5U/phUMc2nm4WERFRk8GA5RqYzAI+2JCFDzcdBwD0i2uFBVOTEBUa4OGWERERNS0MWOqo+EolnvwmA1uzLgIA7hscj5du7Q5/X05ZJiIiqm8MWOrgj3MlmJm6B2cvXUWAnx5z7+iFO/u193SziIiImiy3dQcsWLAACQkJCAgIQFJSEn7++Wen22/duhVJSUkICAhAx44dsWjRInc17Zp8t/sM7lr4K85euoq4sBb48ZEbGawQERG5mVsClm+//RZPPfUUXnzxRezbtw8333wzUlJSkJOT43D77OxsjBs3DjfffDP27duHF154AU888QSWLl3qjubVSUW1CXN+PIhnfziAimozRnaLwE+P34TuMSGebhoREVGTpxMEQajvnQ4cOBD9+vXDwoULpcuuu+46TJw4EfPmzbPb/rnnnsOKFStw5MgR6bKZM2di//792LFjh6b7NBqNCA0NRUlJCUJC6jeIOF98FY+k7sH+syXQ6YCnRyXi8eGdoddzyjIREdG10Hr8rvcelsrKSuzZswdjxoxRXD5mzBj8+uuvDm+zY8cOu+2Tk5Oxe/duVFVVObxNRUUFjEaj4scdfjlegNs+2o79Z0sQGuiHz2YMwBMjuzBYISIiakD1HrAUFBTAZDIhMjJScXlkZCTy8vIc3iYvL8/h9tXV1SgoKHB4m3nz5iE0NFT6iY2NrZ8HIHOlshpPfrMPRWWV6BETgpWzbsItXSPq/X6IiIjIObcl3dpWeBUEwWnVV0fbO7rcas6cOSgpKZF+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\n",
"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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\n",
"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": 18,
"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": 18,
"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": 19,
"id": "c2674211",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.1422293477741312\n",
"0.16931391630989778\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.1431761226649988\n",
"0.16687106328443524\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": 19,
"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 = 2000\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.5\n",
"\n",
"\n",
"callback = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience = 30)\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=\"sigmoid\") (inputs)\n",
"x = tfk.layers.Dropout(0.3)(x)\n",
"x = tfk.layers.Dense(16, activation=\"sigmoid\") (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",
"x22 = tfk.layers.Dense(prob_dist_params, activation=\"linear\")(x2)\n",
"out_2 = tfp.layers.DistributionLambda(prob_dist)(x22)\n",
"\n",
"x23 = tfk.layers.Dense(1, activation=\"sigmoid\")(x2)\n",
"out_3 = tfp.layers.DistributionLambda(lambda t: tfp.distributions.Bernoulli(probs = t[..., 0]))(x23)\n",
"\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": 20,
"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": 22,
"id": "c41cf448",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.45257318940839\n",
"0.5349007718848356\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.37645262592381834\n",
"0.43365123619886836\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAiwAAAGdCAYAAAAxCSikAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAABgEklEQVR4nO3dd3hUZfr/8fekB0gCAdIgQIAEpBhCBykK0kUQFARFXHfddZcmqCvqurb9ir1Q1N/uIugiiEhVQIp0QQRJaAKhBIJAgBBSKGkz5/fHJEOGFBJImEnyeV3XXMmc85yT++QwnDtPNRmGYSAiIiLixFwcHYCIiIjIjShhEREREaenhEVEREScnhIWERERcXpKWERERMTpKWERERERp6eERURERJyeEhYRERFxem6ODqC0WCwWTp8+jY+PDyaTydHhiIiISDEYhkFaWhohISG4uBRej1JhEpbTp08TGhrq6DBERETkJpw8eZK6desWur/CJCw+Pj6A9YJ9fX0dHI2IiIgUR2pqKqGhobbneGEqTMKS2wzk6+urhEVERKScuVF3DnW6FREREaenhEVEREScnhIWERERcXpKWERERMTpKWERERERp6eERURERJyeEhYRERFxekpYRERExOkpYRERERGnV6KEZcqUKbRr1w4fHx8CAgIYPHgwhw4dsitjGAavvvoqISEheHt7c/fdd7N///4bnnvhwoU0a9YMT09PmjVrxuLFi0t2JSIiIlJhlShh2bhxI2PGjOHnn39mzZo1ZGdn07t3by5fvmwr88477/DBBx8wffp0duzYQVBQEL169SItLa3Q827bto3hw4czatQodu/ezahRoxg2bBjbt2+/+SsTERGRCsNkGIZxswefP3+egIAANm7cSLdu3TAMg5CQEJ5++mmef/55ADIyMggMDOTtt9/mL3/5S4HnGT58OKmpqaxcudK2rW/fvtSoUYN58+YVK5bU1FT8/PxISUnRWkIiIiLlRHGf37fUhyUlJQUAf39/AOLi4khISKB37962Mp6ennTv3p2tW7cWep5t27bZHQPQp0+fIo/JyMggNTXV7iUiIiKl74d9Z3jqf79ittx0Hcctu+mExTAMJk2aRJcuXWjRogUACQkJAAQGBtqVDQwMtO0rSEJCQomPmTJlCn5+frZXaGjozV6KiIiIFCA9y8wrS/fx1Jxd/LA/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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": 21,
"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": 21,
"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": 22,
"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": 23,
"id": "62b9f588",
"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>team1</th>\n",
" <th>team2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>Fiorentina</td>\n",
" <td>Cremonese</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1</td>\n",
" <td>Verona</td>\n",
" <td>Napoli</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1</td>\n",
" <td>Juventus</td>\n",
" <td>Sassuolo</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1</td>\n",
" <td>Lazio</td>\n",
" <td>Bologna</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1</td>\n",
" <td>Lecce</td>\n",
" <td>Inter</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>375</th>\n",
" <td>38</td>\n",
" <td>Milan</td>\n",
" <td>Lazio</td>\n",
" </tr>\n",
" <tr>\n",
" <th>376</th>\n",
" <td>38</td>\n",
" <td>Sassuolo</td>\n",
" <td>Monza</td>\n",
" </tr>\n",
" <tr>\n",
" <th>377</th>\n",
" <td>38</td>\n",
" <td>Napoli</td>\n",
" <td>Salernitana</td>\n",
" </tr>\n",
" <tr>\n",
" <th>378</th>\n",
" <td>38</td>\n",
" <td>Udinese</td>\n",
" <td>Sampdoria</td>\n",
" </tr>\n",
" <tr>\n",
" <th>379</th>\n",
" <td>38</td>\n",
" <td>Roma</td>\n",
" <td>Spezia</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>380 rows × 3 columns</p>\n",
"</div>"
],
"text/plain": [
" 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",
".. ... ... ...\n",
"375 38 Milan Lazio\n",
"376 38 Sassuolo Monza\n",
"377 38 Napoli Salernitana\n",
"378 38 Udinese Sampdoria\n",
"379 38 Roma Spezia\n",
"\n",
"[380 rows x 3 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cal_df"
]
},
{
"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": 30,
"id": "861a06ce",
"metadata": {},
"outputs": [],
"source": [
"matchday = 16"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "c58ba41d",
"metadata": {},
"outputs": [],
"source": [
"def PlayerMatch(player, match = matchday):\n",
" team = players.loc[player]['team']\n",
" \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 = matchday, 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": 32,
"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>Sepe</th>\n",
" <td>1</td>\n",
" <td>90</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lovato</th>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Daniliuc</th>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fazio</th>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Mazzocchi</th>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Henderson L.</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Fazzini</th>\n",
" <td>0</td>\n",
" <td>30</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Pjaca</th>\n",
" <td>0</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lammers</th>\n",
" <td>0</td>\n",
" <td>60</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Cambiaghi</th>\n",
" <td>0</td>\n",
" <td>55</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>460 rows × 2 columns</p>\n",
"</div>"
],
"text/plain": [
" starter percentage\n",
"player \n",
"Sepe 1 90\n",
"Lovato 1 80\n",
"Daniliuc 1 80\n",
"Fazio 1 80\n",
"Mazzocchi 1 80\n",
"... ... ...\n",
"Henderson L. 0 50\n",
"Fazzini 0 30\n",
"Pjaca 0 50\n",
"Lammers 0 60\n",
"Cambiaghi 0 55\n",
"\n",
"[460 rows x 2 columns]"
]
},
"execution_count": 32,
"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 5.53 ± 0.73; FV 3.04 + 2.09 (1.6% cs)\n",
"Provedel: MV 6.29 ± 0.83; FV 5.58 + 1.19 (47.6% cs)\n",
"Maignan: MV 6.27 ± 0.82; FV 5.64 + 1.16 (52.4% cs)\n",
"Silvestri: MV 6.25 ± 0.83; FV 5.69 + 1.16 (59.2% cs)\n",
"Sepe: MV 6.42 ± 0.75; FV 4.91 + 1.39 (7.3% cs)\n",
"Szczesny: MV 6.26 ± 0.87; FV 5.76 + 1.14 (66.1% cs)\n",
"Consigli: MV 6.34 ± 0.84; FV 5.62 + 1.17 (48.1% cs)\n",
"Falcone: MV 6.34 ± 0.74; FV 4.87 + 1.40 (7.7% cs)\n",
"Musso: MV 6.17 ± 0.83; FV 5.61 + 1.16 (58.3% cs)\n",
"Vicario: MV 6.44 ± 0.79; FV 4.82 + 1.40 (7.9% cs)\n",
"Rui Patricio: MV 5.76 ± 0.81; FV 4.91 + 1.27 (29.4% cs)\n",
"Milinkovic-Savic V.: MV 6.29 ± 0.80; FV 5.60 + 1.18 (45.1% cs)\n",
"Audero: MV 6.24 ± 0.72; FV 4.21 + 1.59 (3.1% cs)\n",
"Montipo': MV 6.36 ± 0.71; FV 4.81 + 1.41 (6.0% cs)\n",
"Sportiello: MV 6.20 ± 0.82; FV 5.61 + 1.16 (53.7% cs)\n",
"Skorupski: MV 6.34 ± 0.76; FV 4.54 + 1.48 (5.7% cs)\n",
"Di Gregorio: MV 5.97 ± 0.80; FV 3.94 + 1.62 (4.0% cs)\n",
"Perin: MV 6.29 ± 0.90; FV 5.78 + 1.14 (68.1% cs)\n",
"Handanovic: MV 5.46 ± 0.65; FV 2.77 + 2.36 (0.9% cs)\n",
"Tatarusanu: MV 6.28 ± 0.80; FV 5.62 + 1.17 (48.4% cs)\n",
"Gollini: MV 5.87 ± 0.83; FV 5.29 + 1.20 (51.4% cs)\n",
"Dragowski: MV 6.40 ± 0.73; FV 4.59 + 1.47 (4.5% cs)\n",
"Terracciano: MV 5.79 ± 0.69; FV 4.15 + 1.55 (5.3% cs)\n",
"Berisha: MV 6.29 ± 0.80; FV 5.60 + 1.18 (45.1% cs)\n",
"Radu I.: MV 6.31 ± 0.75; FV 4.43 + 1.52 (4.8% cs)\n",
"Cragno: MV 5.97 ± 0.80; FV 3.94 + 1.62 (4.0% cs)\n",
"Luis Maximiano: MV 6.22 ± 0.89; FV 5.58 + 1.17 (58.2% cs)\n",
"Onana: MV 6.05 ± 0.64; FV 3.53 + 1.85 (1.3% cs)\n",
"Carnesecchi: MV 6.21 ± 0.81; FV 5.56 + 1.19 (50.0% cs)\n",
"Mirante: MV 6.27 ± 0.82; FV 5.64 + 1.16 (52.4% cs)\n",
"Sarr M.: MV 6.31 ± 0.75; FV 4.43 + 1.52 (4.8% cs)\n",
"Lamanna: MV 5.97 ± 0.80; FV 3.94 + 1.62 (4.0% cs)\n",
"Ujkani: MV 6.44 ± 0.79; FV 4.82 + 1.40 (7.9% cs)\n",
"Pegolo: MV 6.34 ± 0.84; FV 5.62 + 1.17 (48.1% cs)\n",
"Perilli: MV 6.36 ± 0.71; FV 4.81 + 1.41 (6.0% cs)\n",
"Padelli: MV 6.25 ± 0.83; FV 5.69 + 1.16 (59.2% cs)\n",
"Perisan: MV 6.44 ± 0.79; FV 4.82 + 1.40 (7.9% cs)\n",
"Bardi: MV 6.34 ± 0.76; FV 4.54 + 1.48 (5.7% cs)\n",
"Cordaz: MV 5.46 ± 0.65; FV 2.77 + 2.36 (0.9% cs)\n",
"Pinsoglio: MV 6.26 ± 0.87; FV 5.76 + 1.14 (66.1% cs)\n",
"Fiorillo: MV 6.42 ± 0.75; FV 4.91 + 1.39 (7.3% cs)\n",
"Sirigu: MV 5.53 ± 0.73; FV 3.04 + 2.09 (1.6% cs)\n",
"Cerofolini: MV 5.79 ± 0.69; FV 4.15 + 1.55 (5.3% cs)\n",
"Rossi F.: MV 6.17 ± 0.83; FV 5.61 + 1.16 (58.3% cs)\n",
"Contini: MV 6.24 ± 0.72; FV 4.21 + 1.59 (3.1% cs)\n",
"Brancolini: MV 6.34 ± 0.74; FV 4.87 + 1.40 (7.7% cs)\n",
"Bleve: MV 6.34 ± 0.74; FV 4.87 + 1.40 (7.7% cs)\n",
"Berardi A.: MV 6.36 ± 0.71; FV 4.81 + 1.41 (6.0% cs)\n",
"Russo A.: MV 6.34 ± 0.84; FV 5.62 + 1.17 (48.1% cs)\n",
"Gemello: MV 6.29 ± 0.80; FV 5.60 + 1.18 (45.1% cs)\n",
"Ravaglia: MV 6.24 ± 0.72; FV 4.21 + 1.59 (3.1% cs)\n",
"Zoet: MV 6.42 ± 0.76; FV 4.98 + 1.37 (8.6% cs)\n",
"Boer: MV 5.76 ± 0.81; FV 4.91 + 1.27 (29.4% cs)\n",
"Adamonis: MV 6.29 ± 0.83; FV 5.58 + 1.19 (47.6% cs)\n",
"Marfella: MV 5.53 ± 0.73; FV 3.04 + 2.09 (1.6% cs)\n",
"Zovko: MV 6.40 ± 0.73; FV 4.59 + 1.47 (4.5% cs)\n",
"Piana: MV 6.25 ± 0.83; FV 5.69 + 1.16 (59.2% cs)\n",
"Bagnolini: MV 6.34 ± 0.76; FV 4.54 + 1.48 (5.7% cs)\n",
"Svilar: MV 5.76 ± 0.81; FV 4.91 + 1.27 (29.4% cs)\n",
"Sorrentino A.: MV 5.97 ± 0.80; FV 3.94 + 1.62 (4.0% cs)\n",
"Ciezkowski: MV 6.31 ± 0.75; FV 4.43 + 1.52 (4.8% cs)\n",
"Micai: MV 6.42 ± 0.75; FV 4.91 + 1.39 (7.3% cs)\n",
"Chiesa M.: MV 6.36 ± 0.71; FV 4.81 + 1.41 (6.0% cs)\n",
"Saro: MV 6.31 ± 0.75; FV 4.43 + 1.52 (4.8% cs)\n",
"Smalling: MV 6.19 ± 1.11; FV 6.80 + 2.33\n",
"Hernandez T.: MV 6.31 ± 1.08; FV 6.97 + 2.36\n",
"Kim: MV 6.15 ± 1.09; FV 6.66 + 2.07\n",
"Bastoni S.: MV 6.10 ± 1.01; FV 6.62 + 2.04\n",
"Udogie: MV 6.18 ± 1.17; FV 7.11 + 3.06\n",
"Dumfries: MV 5.89 ± 0.87; FV 6.00 + 1.06\n",
"Romagnoli: MV 6.13 ± 0.81; FV 6.28 + 1.00\n",
"Rodrigo Becao: MV 6.18 ± 0.88; FV 6.48 + 1.42\n",
"Parisi: MV 6.14 ± 0.92; FV 6.58 + 1.80\n",
"Mazzocchi: MV 6.01 ± 0.97; FV 6.32 + 1.59\n",
"Bremer: MV 6.16 ± 0.78; FV 6.31 + 0.97\n",
"Demiral: MV 6.18 ± 0.96; FV 6.74 + 2.18\n",
"Valeri: MV 5.98 ± 0.64; FV 6.06 + 0.87\n",
"Dimarco: MV 6.03 ± 1.07; FV 6.49 + 1.98\n",
"Di Lorenzo: MV 6.05 ± 0.73; FV 6.16 + 0.87\n",
"Ibanez: MV 6.03 ± 0.93; FV 6.16 + 1.11\n",
"Tomori: MV 6.18 ± 0.83; FV 6.45 + 1.32\n",
"Toloi: MV 6.26 ± 0.91; FV 6.65 + 1.64\n",
"Gosens: MV 5.68 ± 0.67; FV 5.69 + 0.81\n",
"Rrahmani: MV 6.06 ± 0.94; FV 6.27 + 1.19\n",
"Kalulu: MV 6.04 ± 0.69; FV 6.06 + 0.69\n",
"Bijol: MV 6.10 ± 1.08; FV 6.63 + 2.18\n",
"Doig: MV 6.12 ± 1.00; FV 6.57 + 1.91\n",
"Mario Rui: MV 6.01 ± 0.88; FV 6.21 + 1.24\n",
"Spinazzola: MV 5.98 ± 0.65; FV 5.99 + 0.69\n",
"Lazzari: MV 5.98 ± 0.74; FV 6.01 + 0.71\n",
"Mancini: MV 6.04 ± 0.74; FV 6.09 + 0.70\n",
"Danilo: MV 6.13 ± 0.79; FV 6.22 + 0.72\n",
"Kyriakopoulos: MV 6.12 ± 0.87; FV 6.33 + 1.25\n",
"Vojvoda: MV 6.11 ± 0.78; FV 6.30 + 1.02\n",
"Scalvini: MV 6.19 ± 1.00; FV 6.68 + 2.04\n",
"Carlos Augusto: MV 5.88 ± 1.16; FV 6.21 + 1.84\n",
"Skriniar: MV 5.57 ± 0.80; FV 5.46 + 0.69\n",
"Schuurs: MV 6.13 ± 0.71; FV 6.24 + 0.76\n",
"Juan Jesus: MV 6.10 ± 0.74; FV 6.29 + 1.10\n",
"Bonucci: MV 6.17 ± 0.93; FV 6.62 + 1.84\n",
"Calabria: MV 6.10 ± 0.67; FV 6.27 + 0.96\n",
"Bastoni: MV 5.76 ± 1.12; FV 5.75 + 1.07\n",
"Depaoli: MV 5.92 ± 0.92; FV 6.23 + 1.57\n",
"Darmian: MV 5.82 ± 0.66; FV 5.81 + 0.67\n",
"Sernicola: MV 5.86 ± 0.73; FV 5.95 + 0.93\n",
"Mari': MV 5.69 ± 1.16; FV 5.84 + 1.54\n",
"Martinez Quarta: MV 6.10 ± 1.05; FV 6.24 + 1.24\n",
"Maehle: MV 6.04 ± 0.66; FV 6.19 + 0.96\n",
"Olivera: MV 6.04 ± 0.70; FV 6.30 + 1.29\n",
"Biraghi: MV 5.99 ± 0.79; FV 6.16 + 1.08\n",
"Medel: MV 5.85 ± 0.80; FV 5.82 + 0.64\n",
"Patric: MV 5.97 ± 0.74; FV 5.99 + 0.63\n",
"Rodriguez R.: MV 6.05 ± 0.73; FV 6.11 + 0.72\n",
"Aina: MV 6.18 ± 0.97; FV 6.78 + 2.20\n",
"Cambiaso: MV 5.74 ± 0.96; FV 5.69 + 0.78\n",
"Perez N.: MV 6.09 ± 0.99; FV 6.18 + 1.03\n",
"Holm: MV 5.92 ± 0.78; FV 6.01 + 0.99\n",
"Baschirotto: MV 6.08 ± 0.89; FV 6.37 + 1.44\n",
"Dodo': MV 5.84 ± 0.81; FV 5.85 + 0.81\n",
"Hysaj: MV 5.87 ± 0.62; FV 5.87 + 0.63\n",
"Faraoni: MV 5.94 ± 0.77; FV 6.11 + 1.16\n",
"Bianchetti: MV 5.75 ± 0.80; FV 5.77 + 0.84\n",
"Milenkovic: MV 6.04 ± 1.16; FV 6.30 + 1.83\n",
"Marusic: MV 5.84 ± 0.72; FV 5.84 + 0.72\n",
"Colley: MV 5.64 ± 1.07; FV 5.71 + 1.30\n",
"Toljan: MV 5.88 ± 0.77; FV 5.88 + 0.67\n",
"Celik: MV 5.91 ± 0.68; FV 5.90 + 0.67\n",
"Ampadu: MV 5.82 ± 1.04; FV 5.76 + 0.82\n",
"Singo: MV 6.16 ± 0.86; FV 6.43 + 1.22\n",
"Casale: MV 5.88 ± 0.73; FV 5.86 + 0.62\n",
"Daniliuc: MV 5.70 ± 1.17; FV 5.64 + 1.09\n",
"Pongracic: MV 5.90 ± 0.79; FV 5.89 + 0.66\n",
"Soppy: MV 5.94 ± 0.79; FV 6.00 + 0.96\n",
"Kiwior: MV 5.82 ± 0.98; FV 5.76 + 0.73\n",
"Posch: MV 5.94 ± 1.17; FV 6.29 + 1.88\n",
"Masina: MV 6.22 ± 0.92; FV 6.70 + 1.93\n",
"Ghiglione: MV 5.84 ± 0.71; FV 5.85 + 0.71\n",
"De Vrij: MV 5.60 ± 0.89; FV 5.51 + 0.86\n",
"Alex Sandro: MV 5.81 ± 0.97; FV 5.77 + 0.74\n",
"Ceccherini: MV 5.77 ± 1.06; FV 5.91 + 1.39\n",
"Fazio: MV 5.77 ± 1.15; FV 5.75 + 1.10\n",
"Rogerio: MV 5.87 ± 0.83; FV 5.88 + 0.75\n",
"Reca: MV 6.00 ± 0.96; FV 6.38 + 1.70\n",
"Gunter: MV 5.74 ± 0.89; FV 5.77 + 0.96\n",
"Djidji: MV 6.01 ± 0.82; FV 6.27 + 1.34\n",
"Augello: MV 5.69 ± 0.69; FV 5.67 + 0.62\n",
"Bellanova: MV 5.90 ± 0.67; FV 5.92 + 0.71\n",
"Erlic: MV 5.96 ± 0.84; FV 5.97 + 0.76\n",
"Ismajli: MV 5.96 ± 0.86; FV 5.98 + 0.68\n",
"Ebuehi: MV 5.82 ± 0.69; FV 5.77 + 0.59\n",
"Kasius: MV 5.94 ± 0.86; FV 6.02 + 0.84\n",
"Lucumi': MV 5.72 ± 0.91; FV 5.67 + 0.74\n",
"Hien: MV 5.65 ± 0.94; FV 5.60 + 0.74\n",
"Acerbi: MV 5.82 ± 0.92; FV 5.85 + 0.84\n",
"Zappacosta: MV 6.12 ± 0.76; FV 6.41 + 1.37\n",
"Chiriches: MV 5.77 ± 1.21; FV 5.68 + 0.89\n",
"Gyomber: MV 5.72 ± 1.17; FV 5.62 + 0.98\n",
"Pezzella Giu.: MV 5.85 ± 0.67; FV 5.81 + 0.59\n",
"Ferrari G.: MV 5.91 ± 0.78; FV 5.87 + 0.67\n",
"Bereszynski: MV 5.67 ± 0.68; FV 5.60 + 0.56\n",
"Hateboer: MV 5.84 ± 0.98; FV 6.17 + 1.81\n",
"Karsdorp: MV 5.83 ± 0.74; FV 5.82 + 0.67\n",
"Nuytinck: MV 6.03 ± 0.79; FV 6.07 + 0.69\n",
"Lykogiannis: MV 5.82 ± 0.69; FV 5.89 + 0.85\n",
"Buongiorno: MV 5.96 ± 0.79; FV 5.95 + 0.68\n",
"Nikolaou: MV 5.70 ± 0.95; FV 5.67 + 0.73\n",
"Lazaro: MV 6.01 ± 0.89; FV 6.20 + 1.13\n",
"Gallo: MV 5.82 ± 0.73; FV 5.75 + 0.63\n",
"Ayhan: MV 5.84 ± 0.92; FV 5.81 + 0.80\n",
"Dest: MV 5.93 ± 0.70; FV 5.96 + 0.65\n",
"Stojanovic: MV 5.62 ± 0.92; FV 5.55 + 0.85\n",
"Birindelli: MV 5.71 ± 0.66; FV 5.68 + 0.58\n",
"Gendrey: MV 5.76 ± 0.69; FV 5.69 + 0.59\n",
"Ebosse: MV 5.91 ± 0.66; FV 5.88 + 0.58\n",
"Lochoshvili: MV 5.80 ± 0.71; FV 5.76 + 0.60\n",
"Bronn: MV 5.71 ± 0.78; FV 5.64 + 0.63\n",
"Thiaw: MV 6.00 ± 0.81; FV 6.08 + 0.85\n",
"Izzo: MV 5.94 ± 0.83; FV 5.97 + 0.69\n",
"D'ambrosio: MV 5.93 ± 0.72; FV 5.96 + 0.72\n",
"Rugani: MV 6.02 ± 0.71; FV 6.04 + 0.61\n",
"De Sciglio: MV 5.88 ± 0.63; FV 5.86 + 0.56\n",
"Luperto: MV 5.66 ± 1.17; FV 5.64 + 0.96\n",
"De Silvestri: MV 5.71 ± 0.87; FV 5.69 + 0.85\n",
"Djimsiti: MV 6.02 ± 0.78; FV 6.12 + 0.93\n",
"Palomino: MV 6.16 ± 0.92; FV 6.36 + 1.19\n",
"Bonifazi: MV 5.60 ± 0.94; FV 5.57 + 0.72\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Hristov: MV 5.76 ± 0.69; FV 5.67 + 0.58\n",
"Donati: MV 5.65 ± 0.97; FV 5.58 + 0.83\n",
"Umtiti: MV 5.86 ± 1.13; FV 5.83 + 0.91\n",
"Kjaer: MV 6.03 ± 0.63; FV 6.03 + 0.64\n",
"Igor: MV 5.70 ± 0.97; FV 5.68 + 0.78\n",
"Okoli: MV 5.74 ± 0.81; FV 5.70 + 0.67\n",
"Soumaoro: MV 5.67 ± 1.14; FV 5.60 + 0.93\n",
"Caldirola: MV 5.67 ± 0.95; FV 5.61 + 0.76\n",
"Ballo-Toure': MV 6.13 ± 0.74; FV 6.44 + 1.33\n",
"Bradaric: MV 5.66 ± 0.86; FV 5.60 + 0.76\n",
"De Winter: MV 5.72 ± 1.10; FV 5.64 + 0.89\n",
"Quagliata: MV 5.89 ± 0.61; FV 5.86 + 0.58\n",
"Ferrari A.: MV 5.53 ± 0.90; FV 5.48 + 0.73\n",
"Florenzi: MV 6.09 ± 0.78; FV 6.29 + 1.11\n",
"Sala: MV 5.93 ± 0.77; FV 5.97 + 0.75\n",
"Caldara: MV 5.79 ± 1.09; FV 5.71 + 0.87\n",
"Murru: MV 5.62 ± 0.75; FV 5.59 + 0.76\n",
"Marlon: MV 5.55 ± 0.83; FV 5.46 + 0.69\n",
"Walukiewicz: MV 5.71 ± 1.02; FV 5.65 + 0.88\n",
"Kumbulla: MV 5.80 ± 0.66; FV 5.75 + 0.58\n",
"Amian: MV 5.76 ± 0.93; FV 5.69 + 0.78\n",
"Ostigard: MV 5.65 ± 1.19; FV 5.64 + 1.22\n",
"Sambia: MV 5.67 ± 0.89; FV 5.58 + 0.74\n",
"Aiwu: MV 5.87 ± 0.82; FV 5.90 + 0.78\n",
"Ehizibue: MV 5.87 ± 0.63; FV 5.77 + 0.55\n",
"Hendry: MV 5.86 ± 0.80; FV 5.88 + 0.71\n",
"Marrone: MV 5.48 ± 0.93; FV 5.37 + 0.82\n",
"Radovanovic: MV 5.52 ± 0.88; FV 5.51 + 0.74\n",
"Murillo: MV 5.61 ± 0.71; FV 5.51 + 0.58\n",
"Venuti: MV 5.75 ± 0.76; FV 5.73 + 0.73\n",
"Magnani: MV 5.78 ± 1.02; FV 5.73 + 0.76\n",
"Terzic: MV 6.05 ± 0.56; FV 5.97 + 0.58\n",
"Gabbia: MV 5.86 ± 0.69; FV 5.81 + 0.59\n",
"Zortea: MV 5.84 ± 0.64; FV 5.86 + 0.80\n",
"Dawidowicz: MV 5.53 ± 0.71; FV 5.42 + 0.59\n",
"Pirola: MV 5.68 ± 0.83; FV 5.61 + 0.66\n",
"Carboni: MV 5.56 ± 0.92; FV 5.46 + 0.80\n",
"Lovato: MV 5.75 ± 1.17; FV 5.65 + 0.98\n",
"Tuia: MV 5.70 ± 0.81; FV 5.70 + 0.84\n",
"Amione: MV 5.52 ± 0.69; FV 5.42 + 0.56\n",
"Vasquez: MV 5.77 ± 0.79; FV 5.74 + 0.66\n",
"Zima: MV 5.93 ± 0.74; FV 5.93 + 0.66\n",
"Coppola D.: MV 5.67 ± 0.92; FV 5.61 + 0.75\n",
"Gatti: MV 6.02 ± 0.83; FV 6.06 + 0.70\n",
"Gila: MV 5.87 ± 0.83; FV 5.87 + 0.69\n",
"Cabal: MV 5.77 ± 0.90; FV 5.78 + 0.80\n",
"Sosa: MV 5.72 ± 1.19; FV 5.66 + 1.12\n",
"Conti: MV 6.05 ± 1.04; FV 6.47 + 1.82\n",
"Dermaku: MV 5.88 ± 0.76; FV 5.90 + 0.72\n",
"Tonelli: MV 5.58 ± 0.91; FV 5.52 + 0.79\n",
"Radu: MV 5.62 ± 0.88; FV 5.58 + 0.76\n",
"Paletta: MV 5.71 ± 0.91; FV 5.66 + 0.84\n",
"Fares: MV 5.74 ± 0.67; FV 5.69 + 0.60\n",
"Marchizza: MV 5.89 ± 0.75; FV 5.90 + 0.69\n",
"Romagna: MV 6.05 ± 0.81; FV 6.14 + 0.89\n",
"Ranieri L.: MV 5.77 ± 0.75; FV 5.77 + 0.82\n",
"Cetin: MV 5.78 ± 1.02; FV 5.73 + 0.80\n",
"Muldur: MV 5.90 ± 0.77; FV 5.91 + 0.68\n",
"Adopo: MV 5.99 ± 0.70; FV 6.03 + 0.72\n",
"Ferrer: MV 5.87 ± 0.87; FV 5.86 + 0.70\n",
"Ruggeri: MV 5.81 ± 0.67; FV 5.80 + 0.60\n",
"Antov: MV 5.56 ± 1.10; FV 5.47 + 1.08\n",
"Amey: MV 5.89 ± 0.86; FV 5.93 + 0.77\n",
"Ferrarini: MV 5.71 ± 0.91; FV 5.66 + 0.84\n",
"Kamenovic: MV 5.92 ± 0.74; FV 5.94 + 0.73\n",
"Vina: MV 5.67 ± 0.86; FV 5.63 + 0.72\n",
"Zanoli: MV 5.82 ± 0.66; FV 5.83 + 0.60\n",
"Zanotti: MV 5.70 ± 0.90; FV 5.66 + 0.88\n",
"Ruan: MV 5.84 ± 0.75; FV 5.71 + 0.67\n",
"Motoc: MV 5.78 ± 0.88; FV 5.77 + 0.82\n",
"Cacace: MV 5.73 ± 0.67; FV 5.64 + 0.55\n",
"Bayeye: MV 6.07 ± 0.80; FV 6.21 + 0.95\n",
"Ebosele: MV 5.99 ± 0.78; FV 6.05 + 0.74\n",
"Buta: MV 6.00 ± 0.78; FV 6.05 + 0.74\n",
"Ndiaye: MV 5.87 ± 0.82; FV 5.90 + 0.78\n",
"Abankwah: MV 6.00 ± 0.78; FV 6.05 + 0.74\n",
"Guessand A.: MV 6.00 ± 0.78; FV 6.05 + 0.74\n",
"Guarino: MV 5.80 ± 0.82; FV 5.81 + 0.78\n",
"Milinkovic-Savic: MV 6.35 ± 1.24; FV 7.63 + 3.95\n",
"Barella: MV 6.27 ± 1.18; FV 7.27 + 3.23\n",
"Kvaratskhelia: MV 6.56 ± 1.40; FV 8.39 + 5.55\n",
"Zaccagni: MV 6.42 ± 1.20; FV 7.72 + 4.09\n",
"Zielinski: MV 6.41 ± 1.17; FV 7.37 + 3.20\n",
"Luis Alberto: MV 6.30 ± 1.02; FV 6.97 + 2.45\n",
"Frattesi: MV 6.37 ± 1.22; FV 7.59 + 3.93\n",
"Politano: MV 6.20 ± 0.86; FV 6.73 + 1.84\n",
"Koopmeiners: MV 6.40 ± 1.21; FV 7.62 + 3.90\n",
"Vlasic: MV 6.42 ± 1.22; FV 7.86 + 4.42\n",
"Pereyra: MV 6.28 ± 1.17; FV 7.14 + 2.92\n",
"Felipe Anderson: MV 6.19 ± 1.02; FV 6.98 + 2.70\n",
"Calhanoglu: MV 6.26 ± 1.07; FV 6.97 + 2.52\n",
"Strefezza: MV 6.21 ± 0.85; FV 6.70 + 1.78\n",
"Diaz B.: MV 6.34 ± 1.32; FV 7.77 + 4.35\n",
"Pellegrini Lo.: MV 6.18 ± 1.22; FV 7.13 + 3.14\n",
"Zambo Anguissa: MV 6.36 ± 1.19; FV 7.33 + 3.20\n",
"Lobotka: MV 6.17 ± 0.77; FV 6.47 + 1.32\n",
"Malinovskyi: MV 6.16 ± 0.85; FV 6.52 + 1.58\n",
"Candreva: MV 6.03 ± 1.10; FV 6.55 + 2.09\n",
"Pasalic: MV 6.23 ± 1.11; FV 7.28 + 3.34\n",
"Bennacer: MV 6.16 ± 0.70; FV 6.43 + 1.12\n",
"Kostic: MV 6.25 ± 0.97; FV 6.80 + 2.05\n",
"Radonjic: MV 6.41 ± 1.12; FV 7.44 + 3.51\n",
"Samardzic: MV 6.33 ± 1.14; FV 7.32 + 3.25\n",
"Chiesa: MV 6.24 ± 0.91; FV 6.81 + 2.09\n",
"Lovric: MV 6.21 ± 0.82; FV 6.58 + 1.47\n",
"De Ketelaere: MV 5.94 ± 0.68; FV 5.97 + 0.78\n",
"Brozovic: MV 6.02 ± 0.91; FV 6.25 + 1.34\n",
"Pogba: MV 5.99 ± 0.79; FV 6.06 + 0.78\n",
"Bonaventura: MV 6.27 ± 1.09; FV 7.08 + 2.80\n",
"Sensi: MV 5.92 ± 1.06; FV 6.31 + 1.86\n",
"Bandinelli: MV 5.84 ± 0.84; FV 6.05 + 1.36\n",
"Ikone': MV 6.24 ± 1.04; FV 6.99 + 2.60\n",
"Barak: MV 6.03 ± 1.00; FV 6.60 + 2.09\n",
"Mkhitaryan: MV 6.03 ± 0.83; FV 6.28 + 1.39\n",
"Pessina: MV 5.95 ± 0.94; FV 6.25 + 1.60\n",
"Tonali: MV 6.24 ± 0.97; FV 6.82 + 2.08\n",
"Arslan: MV 6.05 ± 0.76; FV 6.20 + 1.04\n",
"Lazovic: MV 6.01 ± 0.76; FV 6.19 + 1.11\n",
"Cristante: MV 6.03 ± 0.94; FV 6.34 + 1.55\n",
"Elmas: MV 6.12 ± 1.04; FV 6.76 + 2.27\n",
"Bajrami: MV 5.76 ± 0.77; FV 5.84 + 1.04\n",
"Vecino: MV 5.86 ± 0.79; FV 5.94 + 1.02\n",
"Paredes: MV 5.80 ± 0.70; FV 5.74 + 0.59\n",
"Mandragora: MV 6.02 ± 0.88; FV 6.31 + 1.49\n",
"Djuricic: MV 5.73 ± 0.94; FV 5.93 + 1.47\n",
"Lukic: MV 6.28 ± 1.16; FV 7.25 + 3.18\n",
"Soriano: MV 5.93 ± 0.73; FV 5.98 + 0.75\n",
"Zaniolo: MV 5.88 ± 1.00; FV 6.39 + 2.08\n",
"Sottil: MV 6.18 ± 1.16; FV 7.03 + 2.81\n",
"Traore' Hj.: MV 6.26 ± 1.14; FV 7.23 + 3.26\n",
"Messias: MV 6.15 ± 1.18; FV 7.20 + 3.27\n",
"Thorstvedt: MV 6.11 ± 0.93; FV 6.59 + 2.00\n",
"Cuadrado: MV 5.94 ± 0.99; FV 5.95 + 0.85\n",
"Locatelli: MV 6.11 ± 0.74; FV 6.21 + 0.83\n",
"Rabiot: MV 6.26 ± 1.05; FV 6.89 + 2.37\n",
"Dominguez: MV 6.00 ± 0.85; FV 6.21 + 1.27\n",
"Tameze: MV 5.83 ± 0.83; FV 5.88 + 0.81\n",
"Miranchuk: MV 6.36 ± 1.26; FV 7.80 + 4.34\n",
"Vilhena: MV 5.71 ± 0.71; FV 5.71 + 0.78\n",
"De Roon: MV 6.07 ± 0.72; FV 6.19 + 0.89\n",
"Verdi: MV 6.12 ± 0.75; FV 6.50 + 1.53\n",
"Walace: MV 5.99 ± 0.70; FV 6.00 + 0.64\n",
"Wijnaldum: MV 5.92 ± 0.76; FV 5.96 + 0.81\n",
"Mckennie: MV 5.87 ± 0.76; FV 6.01 + 1.15\n",
"Makengo: MV 6.00 ± 0.69; FV 6.03 + 0.68\n",
"Ricci S.: MV 6.19 ± 0.77; FV 6.43 + 1.00\n",
"Coulibaly L.: MV 5.86 ± 0.92; FV 5.99 + 1.19\n",
"Sabiri: MV 5.73 ± 0.87; FV 5.82 + 1.23\n",
"Miretti: MV 6.01 ± 0.69; FV 6.08 + 0.81\n",
"Colpani: MV 6.11 ± 0.81; FV 6.53 + 1.76\n",
"Haas: MV 5.80 ± 0.72; FV 5.93 + 1.12\n",
"Orsolini: MV 5.87 ± 1.13; FV 6.32 + 2.03\n",
"Matic: MV 6.15 ± 0.76; FV 6.41 + 1.27\n",
"Ascacibar: MV 5.89 ± 0.69; FV 5.88 + 0.62\n",
"Ederson D.s.: MV 5.99 ± 0.68; FV 6.05 + 0.87\n",
"Ciurria: MV 5.87 ± 0.86; FV 6.02 + 1.18\n",
"Gonzalez J.: MV 5.94 ± 0.83; FV 6.15 + 1.28\n",
"El Shaarawy: MV 6.18 ± 0.85; FV 6.71 + 1.96\n",
"Meite': MV 5.83 ± 0.69; FV 5.82 + 0.62\n",
"Bourabia: MV 5.92 ± 0.70; FV 5.94 + 0.64\n",
"Ndombele': MV 5.78 ± 0.66; FV 5.75 + 0.60\n",
"Henderson L.: MV 5.73 ± 0.68; FV 5.73 + 0.77\n",
"Maggiore: MV 5.81 ± 0.69; FV 5.81 + 0.68\n",
"Ilic: MV 5.85 ± 0.76; FV 5.88 + 0.76\n",
"Kovalenko: MV 5.93 ± 0.73; FV 5.99 + 0.84\n",
"Zalewski: MV 6.01 ± 0.66; FV 6.07 + 0.81\n",
"Pickel: MV 5.83 ± 0.67; FV 5.85 + 0.76\n",
"Ferguson: MV 6.06 ± 1.02; FV 6.52 + 1.94\n",
"Camara Ma.: MV 6.11 ± 0.72; FV 6.19 + 0.75\n",
"Saponara: MV 6.06 ± 0.95; FV 6.47 + 1.70\n",
"Rincon: MV 5.71 ± 0.73; FV 5.72 + 0.72\n",
"Cataldi: MV 5.90 ± 0.69; FV 5.89 + 0.67\n",
"Zurkowski: MV 6.16 ± 1.04; FV 6.77 + 2.28\n",
"Rovella: MV 5.73 ± 1.09; FV 5.69 + 0.88\n",
"Agudelo: MV 5.87 ± 0.65; FV 5.87 + 0.63\n",
"Amrabat: MV 6.01 ± 0.89; FV 6.10 + 0.96\n",
"Lopez M.: MV 6.05 ± 0.78; FV 6.14 + 0.89\n",
"Gyasi: MV 5.80 ± 0.86; FV 5.86 + 1.02\n",
"Pobega: MV 6.03 ± 0.69; FV 6.14 + 0.97\n",
"Harroui: MV 6.04 ± 0.76; FV 6.31 + 1.51\n",
"Ceide: MV 6.02 ± 0.69; FV 6.09 + 0.78\n",
"Baldanzi: MV 6.17 ± 0.83; FV 6.79 + 2.20\n",
"Blin: MV 5.95 ± 0.59; FV 5.89 + 0.55\n",
"Hjulmand: MV 5.92 ± 1.10; FV 5.86 + 0.84\n",
"D'alessandro: MV 5.95 ± 0.62; FV 5.96 + 0.71\n",
"Grassi: MV 5.86 ± 0.62; FV 5.83 + 0.54\n",
"Krunic: MV 6.01 ± 0.65; FV 6.04 + 0.72\n",
"Linetty: MV 6.11 ± 1.02; FV 6.66 + 2.12\n",
"Miguel Veloso: MV 5.89 ± 0.75; FV 5.91 + 0.76\n",
"Ekdal: MV 5.78 ± 0.72; FV 5.72 + 0.62\n",
"Schouten: MV 5.78 ± 0.84; FV 5.72 + 0.66\n",
"Villar: MV 5.71 ± 0.68; FV 5.63 + 0.57\n",
"Saelemaekers: MV 5.99 ± 0.74; FV 6.12 + 0.98\n",
"Vranckx: MV 6.02 ± 0.80; FV 6.10 + 0.80\n",
"Basic: MV 5.94 ± 0.61; FV 5.93 + 0.70\n",
"Aebischer: MV 5.88 ± 0.90; FV 6.01 + 1.20\n",
"Marcos Antonio: MV 5.88 ± 0.60; FV 5.84 + 0.54\n",
"Ranocchia F.: MV 5.89 ± 0.82; FV 6.06 + 1.23\n",
"Bistrovic: MV 5.81 ± 0.62; FV 5.82 + 0.61\n",
"Verre: MV 5.69 ± 0.66; FV 5.66 + 0.55\n",
"Gagliardini: MV 5.82 ± 0.70; FV 5.82 + 0.80\n",
"Barberis: MV 5.62 ± 0.84; FV 5.55 + 0.75\n",
"Leris: MV 5.67 ± 0.72; FV 5.67 + 0.79\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Vieira: MV 5.66 ± 0.70; FV 5.64 + 0.65\n",
"Winks: MV 5.84 ± 0.85; FV 5.89 + 0.89\n",
"Castrovilli: MV 6.07 ± 0.88; FV 6.32 + 1.35\n",
"Maldini: MV 6.08 ± 0.86; FV 6.56 + 1.87\n",
"Marin: MV 5.69 ± 0.74; FV 5.64 + 0.64\n",
"Maleh: MV 5.98 ± 0.72; FV 6.16 + 1.17\n",
"Matheus Henrique: MV 5.99 ± 0.70; FV 6.03 + 0.80\n",
"Asllani: MV 5.80 ± 0.65; FV 5.78 + 0.65\n",
"Moro N.: MV 5.66 ± 0.78; FV 5.61 + 0.65\n",
"Oudin: MV 5.98 ± 0.76; FV 6.03 + 0.80\n",
"Duncan: MV 5.98 ± 0.78; FV 6.14 + 1.17\n",
"Molina S.: MV 5.67 ± 0.77; FV 5.63 + 0.74\n",
"Kastanos: MV 5.71 ± 0.69; FV 5.67 + 0.60\n",
"Valoti: MV 5.75 ± 0.82; FV 5.71 + 0.69\n",
"Gaetano: MV 5.78 ± 0.70; FV 5.79 + 0.71\n",
"Escalante: MV 5.76 ± 0.78; FV 5.70 + 0.66\n",
"Bohinen: MV 5.84 ± 0.65; FV 5.81 + 0.57\n",
"Terracciano F.: MV 6.00 ± 0.59; FV 5.99 + 0.67\n",
"Milanese: MV 5.87 ± 0.82; FV 5.90 + 0.79\n",
"Castagnetti: MV 5.89 ± 0.60; FV 5.86 + 0.56\n",
"Listkowski: MV 5.80 ± 0.72; FV 5.76 + 0.62\n",
"Adli: MV 5.86 ± 0.83; FV 5.92 + 0.88\n",
"Hrustic: MV 5.68 ± 0.68; FV 5.64 + 0.57\n",
"D'andrea: MV 6.05 ± 0.74; FV 6.20 + 1.13\n",
"Benassi: MV 5.97 ± 0.68; FV 6.03 + 0.86\n",
"Baez: MV 5.85 ± 0.74; FV 5.86 + 0.69\n",
"Vignato: MV 5.80 ± 0.75; FV 5.82 + 0.76\n",
"Obiang: MV 6.01 ± 0.75; FV 6.02 + 0.66\n",
"Askildsen: MV 5.66 ± 0.63; FV 5.63 + 0.53\n",
"Hongla: MV 5.71 ± 0.65; FV 5.72 + 0.59\n",
"Yepes: MV 5.57 ± 0.86; FV 5.49 + 0.74\n",
"Helgason: MV 5.78 ± 0.64; FV 5.74 + 0.56\n",
"Bondo: MV 5.63 ± 0.74; FV 5.55 + 0.63\n",
"Ellertsson: MV 5.85 ± 0.70; FV 5.83 + 0.62\n",
"Capezzi: MV 5.86 ± 0.71; FV 5.86 + 0.63\n",
"Jajalo: MV 5.96 ± 0.63; FV 5.93 + 0.58\n",
"Machin: MV 5.73 ± 0.87; FV 5.70 + 0.84\n",
"Bakayoko: MV 5.84 ± 0.74; FV 5.80 + 0.63\n",
"Scozzarella: MV 5.73 ± 0.87; FV 5.70 + 0.84\n",
"Fagioli: MV 6.16 ± 1.03; FV 6.82 + 2.37\n",
"Demme: MV 5.85 ± 0.87; FV 6.03 + 1.33\n",
"Akpa Akpro: MV 5.81 ± 0.80; FV 5.82 + 0.79\n",
"Darboe: MV 6.02 ± 0.92; FV 6.09 + 0.86\n",
"Bove: MV 5.70 ± 0.65; FV 5.71 + 0.62\n",
"Urbanski: MV 5.85 ± 0.82; FV 5.87 + 0.76\n",
"Bertini: MV 5.87 ± 0.73; FV 5.88 + 0.75\n",
"Cortinovis: MV 5.87 ± 0.86; FV 5.93 + 0.89\n",
"Romero L.: MV 5.84 ± 0.89; FV 6.10 + 1.47\n",
"Bianco: MV 6.01 ± 0.81; FV 6.11 + 0.95\n",
"Sher: MV 5.91 ± 0.78; FV 5.95 + 0.75\n",
"Nguiamba: MV 5.98 ± 0.81; FV 6.04 + 0.79\n",
"Volpato: MV 6.00 ± 1.21; FV 6.66 + 2.54\n",
"Praszelik: MV 5.94 ± 0.79; FV 5.98 + 0.83\n",
"Trimboli: MV 5.84 ± 0.85; FV 5.89 + 0.89\n",
"Pafundi: MV 6.00 ± 0.77; FV 6.05 + 0.75\n",
"Bjorkengren: MV 5.88 ± 0.77; FV 5.90 + 0.76\n",
"Vignato S.: MV 5.74 ± 0.91; FV 5.70 + 0.86\n",
"Samek: MV 5.88 ± 0.77; FV 5.90 + 0.76\n",
"Zerbin: MV 5.69 ± 0.71; FV 5.66 + 0.69\n",
"Ilkhan: MV 5.92 ± 0.71; FV 5.94 + 0.69\n",
"Degli Innocenti: MV 5.82 ± 0.86; FV 5.84 + 0.83\n",
"Fazzini: MV 5.63 ± 0.68; FV 5.51 + 0.55\n",
"Acella: MV 5.87 ± 0.79; FV 5.90 + 0.78\n",
"Tripi: MV 5.95 ± 0.78; FV 6.00 + 0.87\n",
"Garbett: MV 6.08 ± 0.80; FV 6.25 + 1.03\n",
"Iling-Junior: MV 5.99 ± 0.76; FV 6.05 + 0.75\n",
"Immobile: MV 6.44 ± 1.42; FV 8.38 + 5.62\n",
"Vlahovic: MV 6.37 ± 1.42; FV 8.24 + 5.37\n",
"Rafael Leao: MV 6.42 ± 1.42; FV 8.07 + 4.99\n",
"Martinez L.: MV 6.27 ± 1.42; FV 7.92 + 4.77\n",
"Dybala: MV 6.51 ± 1.31; FV 8.09 + 4.86\n",
"Arnautovic: MV 6.27 ± 1.34; FV 7.84 + 4.55\n",
"Beto: MV 6.32 ± 1.32; FV 8.04 + 4.93\n",
"Giroud: MV 6.30 ± 1.38; FV 7.81 + 4.54\n",
"Osimhen: MV 6.43 ± 1.47; FV 8.28 + 5.49\n",
"Deulofeu: MV 6.42 ± 1.30; FV 7.85 + 4.42\n",
"Lukaku: MV 6.38 ± 1.43; FV 8.22 + 5.32\n",
"Milik: MV 6.32 ± 1.22; FV 7.62 + 3.98\n",
"Pedro: MV 6.23 ± 0.98; FV 6.83 + 2.22\n",
"Abraham: MV 6.22 ± 1.31; FV 7.69 + 4.30\n",
"Berardi: MV 6.47 ± 1.37; FV 8.28 + 5.38\n",
"Dia: MV 6.11 ± 1.36; FV 7.34 + 3.78\n",
"Lookman: MV 6.50 ± 1.33; FV 8.22 + 5.22\n",
"Simeone: MV 6.25 ± 1.44; FV 7.77 + 4.57\n",
"Correa: MV 6.14 ± 0.85; FV 6.73 + 2.09\n",
"Zapata D.: MV 6.22 ± 1.23; FV 7.60 + 4.08\n",
"Dzeko: MV 6.17 ± 1.40; FV 7.56 + 4.13\n",
"Nzola: MV 6.14 ± 1.28; FV 7.44 + 3.89\n",
"Sanabria: MV 6.24 ± 1.27; FV 7.77 + 4.40\n",
"Muriel: MV 6.32 ± 1.31; FV 7.79 + 4.41\n",
"Rebic: MV 6.28 ± 1.36; FV 7.69 + 4.32\n",
"Bonazzoli: MV 5.97 ± 0.93; FV 6.23 + 1.51\n",
"Caprari: MV 5.84 ± 0.78; FV 5.94 + 1.13\n",
"Di Maria: MV 6.11 ± 1.27; FV 6.95 + 2.95\n",
"Lozano: MV 6.25 ± 1.30; FV 7.30 + 3.50\n",
"Ceesay: MV 5.97 ± 0.89; FV 6.35 + 1.66\n",
"Pinamonti: MV 6.11 ± 1.20; FV 7.21 + 3.42\n",
"Kouame': MV 6.28 ± 1.24; FV 7.52 + 3.82\n",
"Lauriente': MV 6.41 ± 1.37; FV 7.98 + 4.74\n",
"Jovic: MV 6.07 ± 1.29; FV 7.12 + 3.36\n",
"Barrow: MV 5.98 ± 1.19; FV 6.62 + 2.43\n",
"Henry: MV 5.91 ± 1.08; FV 6.39 + 2.07\n",
"Piatek: MV 6.00 ± 1.18; FV 6.81 + 2.78\n",
"Gonzalez N.: MV 6.24 ± 1.29; FV 7.55 + 3.93\n",
"Dessers: MV 5.91 ± 0.77; FV 6.15 + 1.40\n",
"Caputo: MV 5.74 ± 0.82; FV 5.93 + 1.30\n",
"Raspadori: MV 5.85 ± 0.99; FV 6.26 + 1.80\n",
"Lammers: MV 5.82 ± 0.73; FV 5.91 + 1.04\n",
"Okereke: MV 5.88 ± 0.91; FV 6.16 + 1.54\n",
"Cabral: MV 6.13 ± 1.05; FV 7.06 + 2.97\n",
"Gabbiadini: MV 5.77 ± 0.84; FV 6.02 + 1.47\n",
"Belotti: MV 5.71 ± 0.64; FV 5.73 + 0.69\n",
"Origi: MV 6.07 ± 1.14; FV 6.84 + 2.69\n",
"Botheim: MV 5.84 ± 0.82; FV 6.10 + 1.42\n",
"Alvarez A.: MV 6.29 ± 1.26; FV 7.59 + 4.01\n",
"Verde: MV 6.10 ± 0.90; FV 6.63 + 1.99\n",
"Destro: MV 5.85 ± 1.16; FV 6.41 + 2.30\n",
"Kean: MV 6.18 ± 1.30; FV 7.53 + 4.05\n",
"Pellegri: MV 6.08 ± 0.96; FV 6.90 + 2.65\n",
"Satriano: MV 5.79 ± 0.77; FV 5.96 + 1.28\n",
"Success: MV 6.02 ± 0.65; FV 6.03 + 0.70\n",
"Mota: MV 5.99 ± 1.29; FV 6.86 + 2.99\n",
"Banda: MV 5.99 ± 0.75; FV 6.14 + 1.09\n",
"Hojlund: MV 6.05 ± 0.88; FV 6.79 + 2.48\n",
"Lasagna: MV 5.82 ± 0.82; FV 6.06 + 1.44\n",
"Pjaca: MV 5.82 ± 0.76; FV 5.91 + 1.02\n",
"Gytkjaer: MV 5.78 ± 0.75; FV 5.98 + 1.33\n",
"Petagna: MV 5.73 ± 0.77; FV 5.76 + 0.95\n",
"Nestorovski: MV 6.29 ± 0.86; FV 6.97 + 2.47\n",
"Zanimacchia: MV 5.87 ± 0.66; FV 5.86 + 0.69\n",
"Piccoli: MV 5.88 ± 0.76; FV 6.09 + 1.38\n",
"Kallon: MV 5.90 ± 0.69; FV 6.02 + 1.16\n",
"Ciofani D.: MV 5.87 ± 1.08; FV 6.31 + 1.90\n",
"Di Francesco F.: MV 5.82 ± 0.77; FV 5.94 + 1.09\n",
"Boga: MV 5.99 ± 0.69; FV 6.10 + 1.06\n",
"Zirkzee: MV 5.94 ± 0.99; FV 6.42 + 1.98\n",
"Quagliarella: MV 5.77 ± 0.73; FV 5.90 + 1.16\n",
"Ibrahimovic: MV 6.40 ± 1.36; FV 8.08 + 4.98\n",
"Shomurodov: MV 6.00 ± 0.76; FV 6.48 + 1.93\n",
"Djuric: MV 5.88 ± 0.61; FV 5.86 + 0.58\n",
"Strelec: MV 5.95 ± 0.59; FV 5.92 + 0.63\n",
"Antiste: MV 6.08 ± 0.86; FV 6.68 + 2.23\n",
"Seck: MV 6.13 ± 0.78; FV 6.37 + 1.09\n",
"Buonaiuto: MV 5.97 ± 0.66; FV 6.00 + 0.73\n",
"Sansone: MV 5.76 ± 0.74; FV 5.77 + 0.83\n",
"Pussetto: MV 5.88 ± 0.91; FV 6.32 + 1.89\n",
"Cambiaghi: MV 5.99 ± 0.90; FV 6.36 + 1.71\n",
"Colombo: MV 6.04 ± 1.06; FV 6.79 + 2.54\n",
"Afena-Gyan: MV 5.79 ± 0.66; FV 5.74 + 0.58\n",
"Defrel: MV 6.01 ± 0.79; FV 6.35 + 1.65\n",
"Karamoh: MV 6.02 ± 0.65; FV 6.10 + 0.81\n",
"Cancellieri: MV 5.81 ± 0.62; FV 5.76 + 0.55\n",
"Tsadjout: MV 5.90 ± 0.75; FV 5.94 + 0.83\n",
"Rodriguez P.: MV 5.97 ± 0.68; FV 6.00 + 0.72\n",
"Valencia D.: MV 5.68 ± 0.62; FV 5.71 + 0.56\n",
"Edera: MV 6.07 ± 0.83; FV 6.25 + 1.07\n",
"Oddei: MV 6.12 ± 0.77; FV 6.25 + 0.90\n",
"Raimondo: MV 5.89 ± 0.85; FV 5.94 + 0.84\n",
"Kristoffersen: MV 5.82 ± 0.83; FV 5.84 + 0.81\n",
"Kaio Jorge: MV 6.00 ± 0.69; FV 6.04 + 0.77\n",
"De Luca: MV 5.85 ± 0.89; FV 5.92 + 0.94\n",
"Soule': MV 5.85 ± 0.76; FV 5.84 + 0.64\n",
"Lazetic: MV 5.99 ± 0.85; FV 6.10 + 0.99\n",
"Voelkerling Persson: MV 5.89 ± 0.81; FV 5.93 + 0.83\n",
"Sanca: MV 5.91 ± 0.80; FV 5.94 + 0.73\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>Spezia</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>90</td>\n",
" <td>6.169508</td>\n",
" <td>0.414944</td>\n",
" <td>5.607404</td>\n",
" <td>0.578464</td>\n",
" <td>5.935463</td>\n",
" <td>0.330516</td>\n",
" <td>0.490833</td>\n",
" <td>1.351391</td>\n",
" <td>5.875480</td>\n",
" <td>0.805572</td>\n",
" <td>-0.241967</td>\n",
" <td>0.652504</td>\n",
" <td>58.271468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Rossi F.</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Spezia</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>6.169508</td>\n",
" <td>0.414944</td>\n",
" <td>5.607404</td>\n",
" <td>0.578464</td>\n",
" <td>5.935463</td>\n",
" <td>0.330516</td>\n",
" <td>0.490833</td>\n",
" <td>1.351391</td>\n",
" <td>5.875480</td>\n",
" <td>0.805572</td>\n",
" <td>-0.241967</td>\n",
" <td>0.652504</td>\n",
" <td>58.271468</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Sportiello</th>\n",
" <td>P</td>\n",
" <td>Atalanta</td>\n",
" <td>Spezia</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5</td>\n",
" <td>6.202984</td>\n",
" <td>0.407806</td>\n",
" <td>5.605722</td>\n",
" <td>0.578926</td>\n",
" <td>5.972722</td>\n",
" <td>0.323867</td>\n",
" <td>0.492449</td>\n",
" <td>1.354529</td>\n",
" <td>5.887470</td>\n",
" <td>0.803689</td>\n",
" <td>-0.254755</td>\n",
" <td>0.644404</td>\n",
" <td>53.745633</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Demiral</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Spezia</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" <td>6.177092</td>\n",
" <td>0.481583</td>\n",
" <td>6.736176</td>\n",
" <td>1.088402</td>\n",
" <td>6.100125</td>\n",
" <td>0.549372</td>\n",
" <td>0.103643</td>\n",
" <td>1.149857</td>\n",
" <td>5.710147</td>\n",
" <td>1.074529</td>\n",
" <td>0.582604</td>\n",
" <td>1.925527</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Scalvini</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Spezia</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>40</td>\n",
" <td>6.186374</td>\n",
" <td>0.499042</td>\n",
" <td>6.683710</td>\n",
" <td>1.018305</td>\n",
" <td>6.105365</td>\n",
" <td>0.568622</td>\n",
" <td>0.105372</td>\n",
" <td>1.144671</td>\n",
" <td>5.748382</td>\n",
" <td>1.069886</td>\n",
" <td>0.546409</td>\n",
" <td>1.922284</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>Henry</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" <td>5.911743</td>\n",
" <td>0.541986</td>\n",
" <td>6.387591</td>\n",
" <td>1.036717</td>\n",
" <td>5.904483</td>\n",
" <td>0.646638</td>\n",
" <td>0.008315</td>\n",
" <td>1.105863</td>\n",
" <td>5.451748</td>\n",
" <td>1.129918</td>\n",
" <td>0.526070</td>\n",
" <td>1.902688</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Piccoli</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>5.877006</td>\n",
" <td>0.382436</td>\n",
" <td>6.085645</td>\n",
" <td>0.688296</td>\n",
" <td>5.875045</td>\n",
" <td>0.459995</td>\n",
" <td>0.003163</td>\n",
" <td>1.157146</td>\n",
" <td>5.512599</td>\n",
" <td>0.853154</td>\n",
" <td>0.446097</td>\n",
" <td>1.901161</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Lasagna</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>40</td>\n",
" <td>5.820930</td>\n",
" <td>0.410638</td>\n",
" <td>6.059560</td>\n",
" <td>0.718429</td>\n",
" <td>5.832848</td>\n",
" <td>0.497604</td>\n",
" <td>-0.017754</td>\n",
" <td>1.140577</td>\n",
" <td>5.459760</td>\n",
" <td>0.887142</td>\n",
" <td>0.448554</td>\n",
" <td>1.899754</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Kallon</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>55</td>\n",
" <td>5.896462</td>\n",
" <td>0.342581</td>\n",
" <td>6.023147</td>\n",
" <td>0.582220</td>\n",
" <td>5.889823</td>\n",
" <td>0.411197</td>\n",
" <td>0.011980</td>\n",
" <td>1.176256</td>\n",
" <td>5.571085</td>\n",
" <td>0.781365</td>\n",
" <td>0.394154</td>\n",
" <td>1.899134</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Djuric</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Torino</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>40</td>\n",
" <td>5.881489</td>\n",
" <td>0.304333</td>\n",
" <td>5.861824</td>\n",
" <td>0.292093</td>\n",
" <td>5.877410</td>\n",
" <td>0.366648</td>\n",
" <td>0.008258</td>\n",
" <td>1.192858</td>\n",
" <td>5.773598</td>\n",
" <td>0.549621</td>\n",
" <td>0.118900</td>\n",
" <td>1.880062</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>554 rows × 19 columns</p>\n",
"</div>"
],
"text/plain": [
" role team oppteam home starter vote% MV MV std \\\n",
"player \n",
"Musso P Atalanta Spezia 0 1 90 6.169508 0.414944 \n",
"Rossi F. P Atalanta Spezia 0 0 1 6.169508 0.414944 \n",
"Sportiello P Atalanta Spezia 0 0 5 6.202984 0.407806 \n",
"Demiral D Atalanta Spezia 0 1 80 6.177092 0.481583 \n",
"Scalvini D Atalanta Spezia 0 0 40 6.186374 0.499042 \n",
"... ... ... ... ... ... ... ... ... \n",
"Henry A Verona Torino 0 1 80 5.911743 0.541986 \n",
"Piccoli A Verona Torino 0 0 0 5.877006 0.382436 \n",
"Lasagna A Verona Torino 0 0 40 5.820930 0.410638 \n",
"Kallon A Verona Torino 0 0 55 5.896462 0.342581 \n",
"Djuric A Verona Torino 0 0 40 5.881489 0.304333 \n",
"\n",
" FV FV std MV loc MV scale MV skewness \\\n",
"player \n",
"Musso 5.607404 0.578464 5.935463 0.330516 0.490833 \n",
"Rossi F. 5.607404 0.578464 5.935463 0.330516 0.490833 \n",
"Sportiello 5.605722 0.578926 5.972722 0.323867 0.492449 \n",
"Demiral 6.736176 1.088402 6.100125 0.549372 0.103643 \n",
"Scalvini 6.683710 1.018305 6.105365 0.568622 0.105372 \n",
"... ... ... ... ... ... \n",
"Henry 6.387591 1.036717 5.904483 0.646638 0.008315 \n",
"Piccoli 6.085645 0.688296 5.875045 0.459995 0.003163 \n",
"Lasagna 6.059560 0.718429 5.832848 0.497604 -0.017754 \n",
"Kallon 6.023147 0.582220 5.889823 0.411197 0.011980 \n",
"Djuric 5.861824 0.292093 5.877410 0.366648 0.008258 \n",
"\n",
" MV tailweight FV loc FV scale FV skewness FV tailweight \\\n",
"player \n",
"Musso 1.351391 5.875480 0.805572 -0.241967 0.652504 \n",
"Rossi F. 1.351391 5.875480 0.805572 -0.241967 0.652504 \n",
"Sportiello 1.354529 5.887470 0.803689 -0.254755 0.644404 \n",
"Demiral 1.149857 5.710147 1.074529 0.582604 1.925527 \n",
"Scalvini 1.144671 5.748382 1.069886 0.546409 1.922284 \n",
"... ... ... ... ... ... \n",
"Henry 1.105863 5.451748 1.129918 0.526070 1.902688 \n",
"Piccoli 1.157146 5.512599 0.853154 0.446097 1.901161 \n",
"Lasagna 1.140577 5.459760 0.887142 0.448554 1.899754 \n",
"Kallon 1.176256 5.571085 0.781365 0.394154 1.899134 \n",
"Djuric 1.192858 5.773598 0.549621 0.118900 1.880062 \n",
"\n",
" Clean Sheet % \n",
"player \n",
"Musso 58.271468 \n",
"Rossi F. 58.271468 \n",
"Sportiello 53.745633 \n",
"Demiral 0.000000 \n",
"Scalvini 0.000000 \n",
"... ... \n",
"Henry 0.000000 \n",
"Piccoli 0.000000 \n",
"Lasagna 0.000000 \n",
"Kallon 0.000000 \n",
"Djuric 0.000000 \n",
"\n",
"[554 rows x 19 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"matchday_out = 16\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": 48,
"id": "2b637a15",
"metadata": {},
"outputs": [],
"source": [
"gk_starters = ['Maignan', 'Sepe', 'Silvestri', 'Consigli', 'Provedel', 'Di Gregorio', 'Meret', 'Milinkovic-Savic V.',\n",
" 'Terracciano', 'Handanovic', 'Szczesny', 'Skorupski', 'Vicario', 'Musso', 'Radu I.', 'Rui Patricio',\n",
" 'Montipo\\'', 'Falcone', 'Dragowski', 'Audero']"
]
},
{
"cell_type": "code",
"execution_count": 51,
"id": "60d73507",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Meret (6.32, 0.39); (5.31, 0.63)\n",
"Provedel (6.35, 0.45); (5.57, 0.59)\n",
"Maignan (6.23, 0.38); (5.51, 0.60)\n",
"Silvestri (6.34, 0.40); (5.34, 0.63)\n",
"Sepe (6.42, 0.37); (4.80, 0.71)\n",
"Szczesny (6.26, 0.43); (5.75, 0.57)\n",
"Consigli (6.19, 0.36); (4.99, 0.66)\n",
"Falcone (6.40, 0.37); (4.83, 0.70)\n",
"Musso (6.27, 0.43); (5.71, 0.57)\n",
"Vicario (6.45, 0.41); (5.30, 0.63)\n",
"Rui Patricio (6.26, 0.39); (5.32, 0.61)\n",
"Milinkovic-Savic V. (6.25, 0.37); (4.97, 0.68)\n",
"Audero (6.18, 0.34); (4.22, 0.80)\n",
"Montipo' (6.28, 0.34); (4.42, 0.76)\n",
"Sportiello (6.26, 0.40); (5.62, 0.58)\n",
"Skorupski (6.24, 0.37); (4.32, 0.77)\n",
"Di Gregorio (6.06, 0.39); (4.14, 0.79)\n",
"Perin (6.35, 0.47); (5.80, 0.57)\n",
"Handanovic (5.83, 0.36); (3.75, 0.85)\n",
"Tatarusanu (6.17, 0.36); (5.40, 0.61)\n",
"Gollini (6.01, 0.41); (5.35, 0.60)\n",
"Dragowski (6.28, 0.36); (4.19, 0.79)\n",
"Terracciano (6.12, 0.34); (4.47, 0.75)\n",
"Berisha (6.25, 0.37); (4.97, 0.68)\n",
"Radu I. (6.23, 0.42); (4.50, 0.74)\n",
"Cragno (6.06, 0.39); (4.14, 0.79)\n",
"Luis Maximiano (5.18, 0.46); (4.03, 0.73)\n",
"Onana (6.29, 0.37); (5.20, 0.64)\n",
"Carnesecchi (6.25, 0.45); (5.48, 0.60)\n",
"Mirante (6.23, 0.38); (5.51, 0.60)\n",
"Sarr M. (6.23, 0.42); (4.50, 0.74)\n",
"Lamanna (6.06, 0.39); (4.14, 0.79)\n",
"Ujkani (6.45, 0.41); (5.30, 0.63)\n",
"Pegolo (6.19, 0.36); (4.99, 0.66)\n",
"Perilli (6.28, 0.34); (4.42, 0.76)\n",
"Padelli (6.34, 0.40); (5.34, 0.63)\n",
"Perisan (6.45, 0.41); (5.30, 0.63)\n",
"Bardi (6.24, 0.37); (4.32, 0.77)\n",
"Cordaz (5.83, 0.36); (3.75, 0.85)\n",
"Pinsoglio (6.26, 0.43); (5.75, 0.57)\n",
"Fiorillo (6.42, 0.37); (4.80, 0.71)\n",
"Sirigu (6.32, 0.39); (5.31, 0.63)\n",
"Cerofolini (6.12, 0.34); (4.47, 0.75)\n",
"Rossi F. (6.27, 0.43); (5.71, 0.57)\n",
"Contini (6.18, 0.34); (4.22, 0.80)\n",
"Brancolini (6.40, 0.37); (4.83, 0.70)\n",
"Bleve (6.40, 0.37); (4.83, 0.70)\n",
"Berardi A. (6.28, 0.34); (4.42, 0.76)\n",
"Russo A. (6.19, 0.36); (4.99, 0.66)\n",
"Gemello (6.25, 0.37); (4.97, 0.68)\n",
"Ravaglia (6.18, 0.34); (4.22, 0.80)\n",
"Zoet (6.40, 0.38); (4.78, 0.71)\n",
"Boer (6.26, 0.39); (5.32, 0.61)\n",
"Adamonis (6.35, 0.45); (5.57, 0.59)\n",
"Marfella (6.32, 0.39); (5.31, 0.63)\n",
"Zovko (6.28, 0.36); (4.19, 0.79)\n",
"Piana (6.34, 0.40); (5.34, 0.63)\n",
"Bagnolini (6.24, 0.37); (4.32, 0.77)\n",
"Svilar (6.26, 0.39); (5.32, 0.61)\n",
"Sorrentino A. (6.06, 0.39); (4.14, 0.79)\n",
"Ciezkowski (6.23, 0.42); (4.50, 0.74)\n",
"Micai (6.42, 0.37); (4.80, 0.71)\n",
"Chiesa M. (6.28, 0.34); (4.42, 0.76)\n",
"Saro (6.23, 0.42); (4.50, 0.74)\n",
"Smalling (6.13, 0.54); (6.57, 0.98)\n",
"Hernandez T. (6.26, 0.52); (6.81, 1.03)\n",
"Kim (6.26, 0.49); (6.64, 0.82)\n",
"Bastoni S. (6.11, 0.51); (6.62, 1.02)\n",
"Udogie (6.09, 0.58); (6.81, 1.29)\n",
"Dumfries (6.08, 0.50); (6.59, 1.01)\n",
"Romagnoli (6.17, 0.44); (6.35, 0.53)\n",
"Rodrigo Becao (6.13, 0.44); (6.41, 0.70)\n",
"Parisi (6.21, 0.47); (6.71, 0.98)\n",
"Mazzocchi (6.12, 0.50); (6.61, 0.99)\n",
"Bremer (6.16, 0.42); (6.32, 0.49)\n",
"Demiral (6.08, 0.49); (6.48, 0.89)\n",
"Valeri (6.08, 0.35); (6.38, 0.66)\n",
"Dimarco (6.25, 0.55); (6.93, 1.24)\n",
"Di Lorenzo (6.12, 0.35); (6.22, 0.41)\n",
"Ibanez (5.98, 0.48); (6.05, 0.49)\n",
"Tomori (6.16, 0.42); (6.41, 0.64)\n",
"Toloi (6.21, 0.45); (6.52, 0.70)\n",
"Gosens (5.85, 0.33); (5.93, 0.49)\n",
"Rrahmani (6.17, 0.42); (6.32, 0.50)\n",
"Kalulu (6.01, 0.35); (6.04, 0.33)\n",
"Bijol (5.96, 0.53); (6.30, 0.90)\n",
"Doig (6.17, 0.50); (6.72, 1.05)\n",
"Mario Rui (6.13, 0.41); (6.29, 0.51)\n",
"Spinazzola (5.95, 0.33); (5.95, 0.33)\n",
"Lazzari (6.01, 0.41); (6.08, 0.37)\n",
"Mancini (6.00, 0.38); (6.05, 0.34)\n",
"Danilo (6.13, 0.45); (6.24, 0.40)\n",
"Kyriakopoulos (5.88, 0.43); (5.97, 0.52)\n",
"Vojvoda (5.98, 0.39); (6.06, 0.45)\n",
"Scalvini (6.09, 0.52); (6.49, 0.91)\n",
"Carlos Augusto (5.99, 0.59); (6.57, 1.15)\n",
"Skriniar (5.81, 0.34); (5.78, 0.30)\n",
"Schuurs (6.03, 0.36); (6.08, 0.34)\n",
"Juan Jesus (6.18, 0.38); (6.41, 0.57)\n",
"Bonucci (6.07, 0.48); (6.41, 0.81)\n",
"Calabria (6.07, 0.33); (6.22, 0.46)\n",
"Bastoni (5.95, 0.43); (6.02, 0.41)\n",
"Depaoli (5.94, 0.44); (6.26, 0.78)\n",
"Darmian (5.94, 0.33); (5.97, 0.36)\n",
"Sernicola (5.95, 0.39); (6.20, 0.69)\n",
"Mari' (5.81, 0.57); (6.07, 0.87)\n",
"Martinez Quarta (6.00, 0.50); (6.09, 0.54)\n",
"Maehle (5.96, 0.33); (6.00, 0.37)\n",
"Olivera (6.16, 0.37); (6.46, 0.64)\n",
"Biraghi (5.89, 0.38); (5.98, 0.48)\n",
"Medel (5.91, 0.38); (5.91, 0.32)\n",
"Patric (5.98, 0.43); (6.01, 0.34)\n",
"Rodriguez R. (5.93, 0.40); (5.95, 0.34)\n",
"Aina (6.00, 0.46); (6.28, 0.74)\n",
"Cambiaso (5.85, 0.43); (5.85, 0.36)\n",
"Perez N. (5.95, 0.52); (6.02, 0.61)\n",
"Holm (5.91, 0.40); (6.05, 0.55)\n",
"Baschirotto (6.16, 0.48); (6.58, 0.88)\n",
"Dodo' (5.74, 0.40); (5.73, 0.38)\n",
"Hysaj (5.90, 0.33); (5.90, 0.32)\n",
"Faraoni (5.95, 0.38); (6.17, 0.62)\n",
"Bianchetti (5.74, 0.41); (5.78, 0.48)\n",
"Milenkovic (5.93, 0.57); (6.20, 0.87)\n",
"Marusic (5.86, 0.41); (5.89, 0.37)\n",
"Colley (5.65, 0.54); (5.73, 0.66)\n",
"Toljan (5.63, 0.43); (5.56, 0.36)\n",
"Celik (5.87, 0.34); (5.85, 0.32)\n",
"Ampadu (5.80, 0.50); (5.75, 0.41)\n",
"Singo (6.00, 0.40); (6.08, 0.44)\n",
"Casale (5.88, 0.43); (5.86, 0.34)\n",
"Daniliuc (5.74, 0.57); (5.68, 0.50)\n",
"Pongracic (5.92, 0.42); (5.92, 0.34)\n",
"Soppy (5.87, 0.40); (5.89, 0.38)\n",
"Kiwior (5.80, 0.47); (5.76, 0.36)\n",
"Posch (6.02, 0.59); (6.56, 1.13)\n",
"Masina (6.14, 0.45); (6.52, 0.84)\n",
"Ghiglione (5.86, 0.38); (5.91, 0.43)\n",
"De Vrij (5.76, 0.38); (5.76, 0.38)\n",
"Alex Sandro (5.76, 0.52); (5.74, 0.40)\n",
"Ceccherini (5.81, 0.52); (5.97, 0.72)\n",
"Fazio (5.90, 0.55); (5.87, 0.50)\n",
"Rogerio (5.64, 0.52); (5.58, 0.47)\n",
"Reca (6.01, 0.48); (6.38, 0.83)\n",
"Gunter (5.76, 0.42); (5.80, 0.48)\n",
"Djidji (5.83, 0.43); (5.95, 0.56)\n",
"Augello (5.71, 0.33); (5.70, 0.30)\n",
"Bellanova (6.01, 0.33); (6.05, 0.36)\n",
"Erlic (5.70, 0.53); (5.64, 0.45)\n",
"Ismajli (6.01, 0.41); (6.04, 0.34)\n",
"Ebuehi (5.89, 0.36); (5.87, 0.30)\n",
"Kasius (6.00, 0.42); (6.09, 0.43)\n",
"Lucumi' (5.82, 0.41); (5.82, 0.34)\n",
"Hien (5.67, 0.42); (5.62, 0.35)\n",
"Acerbi (6.01, 0.38); (6.06, 0.38)\n",
"Zappacosta (6.07, 0.38); (6.25, 0.55)\n",
"Chiriches (5.77, 0.57); (5.70, 0.44)\n",
"Gyomber (5.72, 0.52); (5.67, 0.39)\n",
"Pezzella Giu. (5.91, 0.35); (5.91, 0.32)\n",
"Ferrari G. (5.66, 0.53); (5.60, 0.43)\n",
"Bereszynski (5.70, 0.33); (5.62, 0.27)\n",
"Hateboer (5.73, 0.47); (5.93, 0.73)\n",
"Karsdorp (5.80, 0.38); (5.76, 0.33)\n",
"Nuytinck (5.98, 0.43); (6.03, 0.37)\n",
"Lykogiannis (5.91, 0.35); (6.04, 0.51)\n",
"Buongiorno (5.84, 0.45); (5.79, 0.35)\n",
"Nikolaou (5.68, 0.46); (5.65, 0.36)\n",
"Lazaro (5.86, 0.44); (5.91, 0.44)\n",
"Gallo (5.88, 0.39); (5.85, 0.33)\n",
"Ayhan (5.65, 0.57); (5.60, 0.52)\n",
"Dest (5.89, 0.35); (5.89, 0.31)\n",
"Stojanovic (5.68, 0.51); (5.62, 0.44)\n",
"Birindelli (5.75, 0.32); (5.73, 0.29)\n",
"Gendrey (5.79, 0.37); (5.75, 0.31)\n",
"Ebosse (5.81, 0.33); (5.76, 0.29)\n",
"Lochoshvili (5.80, 0.36); (5.79, 0.31)\n",
"Bronn (5.80, 0.36); (5.75, 0.29)\n",
"Thiaw (5.97, 0.41); (6.03, 0.40)\n",
"Izzo (6.01, 0.40); (6.05, 0.34)\n",
"D'ambrosio (6.04, 0.35); (6.10, 0.36)\n",
"Rugani (6.02, 0.39); (6.05, 0.32)\n",
"De Sciglio (5.84, 0.32); (5.81, 0.29)\n",
"Luperto (5.71, 0.58); (5.67, 0.44)\n",
"De Silvestri (5.78, 0.41); (5.80, 0.43)\n",
"Djimsiti (5.92, 0.40); (5.96, 0.38)\n",
"Palomino (6.07, 0.47); (6.16, 0.46)\n",
"Bonifazi (5.65, 0.45); (5.62, 0.35)\n",
"Hristov (5.76, 0.35); (5.69, 0.29)\n",
"Donati (5.75, 0.44); (5.70, 0.36)\n",
"Umtiti (5.90, 0.55); (5.88, 0.45)\n",
"Kjaer (6.01, 0.31); (5.99, 0.31)\n",
"Igor (5.64, 0.52); (5.61, 0.41)\n",
"Okoli (5.66, 0.47); (5.63, 0.38)\n",
"Soumaoro (5.72, 0.56); (5.65, 0.46)\n",
"Caldirola (5.77, 0.46); (5.72, 0.36)\n",
"Ballo-Toure' (6.11, 0.36); (6.41, 0.67)\n",
"Bradaric (5.73, 0.41); (5.70, 0.35)\n",
"De Winter (5.77, 0.52); (5.71, 0.39)\n",
"Quagliata (5.94, 0.31); (5.95, 0.33)\n",
"Ferrari A. (5.55, 0.45); (5.50, 0.37)\n",
"Florenzi (6.05, 0.39); (6.22, 0.52)\n",
"Sala (5.93, 0.39); (5.98, 0.40)\n",
"Caldara (5.77, 0.54); (5.70, 0.44)\n",
"Murru (5.65, 0.36); (5.62, 0.37)\n",
"Marlon (5.65, 0.38); (5.58, 0.31)\n",
"Walukiewicz (5.75, 0.50); (5.70, 0.40)\n",
"Kumbulla (5.80, 0.33); (5.74, 0.29)\n",
"Amian (5.73, 0.46); (5.68, 0.39)\n",
"Ostigard (5.72, 0.49); (5.69, 0.42)\n",
"Sambia (5.75, 0.38); (5.68, 0.31)\n",
"Aiwu (5.92, 0.42); (5.97, 0.44)\n",
"Ehizibue (5.74, 0.32); (5.63, 0.27)\n",
"Hendry (5.88, 0.41); (5.92, 0.38)\n",
"Marrone (5.52, 0.47); (5.45, 0.40)\n",
"Radovanovic (5.53, 0.44); (5.56, 0.36)\n",
"Murillo (5.66, 0.34); (5.53, 0.28)\n",
"Venuti (5.67, 0.37); (5.62, 0.34)\n",
"Magnani (5.82, 0.47); (5.77, 0.37)\n",
"Terzic (6.00, 0.28); (5.93, 0.28)\n",
"Gabbia (5.82, 0.34); (5.74, 0.29)\n",
"Zortea (5.77, 0.33); (5.78, 0.34)\n",
"Dawidowicz (5.58, 0.34); (5.47, 0.28)\n",
"Pirola (5.77, 0.36); (5.68, 0.30)\n",
"Carboni (5.63, 0.47); (5.57, 0.39)\n",
"Lovato (5.77, 0.53); (5.71, 0.40)\n",
"Tuia (5.72, 0.44); (5.74, 0.46)\n",
"Amione (5.56, 0.33); (5.47, 0.27)\n",
"Vasquez (5.76, 0.41); (5.74, 0.34)\n",
"Zima (5.82, 0.38); (5.79, 0.32)\n",
"Coppola D. (5.69, 0.42); (5.64, 0.35)\n",
"Gatti (5.98, 0.49); (5.99, 0.40)\n",
"Gila (5.86, 0.50); (5.83, 0.40)\n",
"Cabal (5.80, 0.42); (5.81, 0.38)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sosa (5.78, 0.56); (5.75, 0.50)\n",
"Conti (6.03, 0.50); (6.42, 0.86)\n",
"Dermaku (5.94, 0.41); (6.00, 0.40)\n",
"Tonelli (5.61, 0.47); (5.58, 0.38)\n",
"Radu (5.63, 0.48); (5.56, 0.43)\n",
"Paletta (5.83, 0.41); (5.84, 0.38)\n",
"Fares (5.74, 0.36); (5.68, 0.31)\n",
"Marchizza (5.65, 0.40); (5.58, 0.35)\n",
"Romagna (5.84, 0.43); (5.85, 0.41)\n",
"Ranieri L. (5.71, 0.37); (5.70, 0.37)\n",
"Cetin (5.82, 0.50); (5.77, 0.39)\n",
"Muldur (5.65, 0.42); (5.59, 0.36)\n",
"Adopo (5.87, 0.35); (5.87, 0.32)\n",
"Ferrer (5.86, 0.43); (5.87, 0.36)\n",
"Ruggeri (5.76, 0.34); (5.71, 0.29)\n",
"Antov (5.59, 0.54); (5.51, 0.49)\n",
"Amey (5.96, 0.42); (6.02, 0.40)\n",
"Ferrarini (5.83, 0.41); (5.84, 0.38)\n",
"Kamenovic (5.94, 0.42); (5.99, 0.38)\n",
"Vina (5.67, 0.46); (5.62, 0.38)\n",
"Zanoli (5.96, 0.32); (5.96, 0.30)\n",
"Zanotti (5.89, 0.38); (5.93, 0.39)\n",
"Ruan (5.61, 0.53); (5.68, 0.37)\n",
"Motoc (5.86, 0.41); (5.89, 0.37)\n",
"Cacace (5.80, 0.34); (5.73, 0.29)\n",
"Bayeye (5.92, 0.41); (5.97, 0.41)\n",
"Ebosele (5.90, 0.40); (5.95, 0.39)\n",
"Buta (5.91, 0.40); (5.95, 0.38)\n",
"Ndiaye (5.92, 0.42); (5.97, 0.44)\n",
"Abankwah (5.91, 0.40); (5.95, 0.38)\n",
"Guessand A. (5.91, 0.40); (5.95, 0.38)\n",
"Guarino (5.89, 0.43); (5.93, 0.39)\n",
"Milinkovic-Savic (6.40, 0.65); (7.77, 2.11)\n",
"Barella (6.39, 0.62); (7.62, 1.94)\n",
"Kvaratskhelia (6.59, 0.70); (8.44, 2.83)\n",
"Zaccagni (6.47, 0.65); (7.98, 2.32)\n",
"Zielinski (6.44, 0.57); (7.32, 1.51)\n",
"Luis Alberto (6.35, 0.55); (7.15, 1.40)\n",
"Frattesi (6.16, 0.60); (7.18, 1.65)\n",
"Politano (6.25, 0.43); (6.74, 0.90)\n",
"Koopmeiners (6.32, 0.59); (7.28, 1.59)\n",
"Vlasic (6.27, 0.55); (7.34, 1.68)\n",
"Pereyra (6.20, 0.56); (6.94, 1.29)\n",
"Felipe Anderson (6.25, 0.58); (7.31, 1.69)\n",
"Calhanoglu (6.38, 0.57); (7.21, 1.45)\n",
"Strefezza (6.34, 0.51); (7.11, 1.36)\n",
"Diaz B. (6.29, 0.63); (7.57, 1.96)\n",
"Pellegrini Lo. (6.11, 0.59); (6.92, 1.40)\n",
"Zambo Anguissa (6.39, 0.56); (7.19, 1.40)\n",
"Lobotka (6.20, 0.38); (6.48, 0.60)\n",
"Malinovskyi (6.11, 0.42); (6.37, 0.67)\n",
"Candreva (6.14, 0.56); (6.76, 1.17)\n",
"Pasalic (6.13, 0.55); (6.91, 1.34)\n",
"Bennacer (6.15, 0.35); (6.42, 0.58)\n",
"Kostic (6.21, 0.48); (6.75, 1.00)\n",
"Radonjic (6.27, 0.48); (7.02, 1.29)\n",
"Samardzic (6.27, 0.56); (7.09, 1.41)\n",
"Chiesa (6.20, 0.44); (6.73, 0.98)\n",
"Lovric (6.17, 0.40); (6.53, 0.74)\n",
"De Ketelaere (5.90, 0.34); (5.91, 0.36)\n",
"Brozovic (6.21, 0.48); (6.55, 0.78)\n",
"Pogba (5.94, 0.41); (6.00, 0.39)\n",
"Bonaventura (6.16, 0.50); (6.82, 1.17)\n",
"Sensi (6.00, 0.53); (6.43, 0.96)\n",
"Bandinelli (5.99, 0.47); (6.38, 0.90)\n",
"Ikone' (6.13, 0.47); (6.75, 1.11)\n",
"Barak (5.94, 0.46); (6.31, 0.84)\n",
"Mkhitaryan (6.17, 0.45); (6.61, 0.88)\n",
"Pessina (6.01, 0.48); (6.38, 0.87)\n",
"Tonali (6.18, 0.45); (6.60, 0.84)\n",
"Arslan (5.98, 0.39); (6.15, 0.57)\n",
"Lazovic (6.04, 0.38); (6.29, 0.63)\n",
"Cristante (5.97, 0.47); (6.19, 0.68)\n",
"Elmas (6.24, 0.52); (6.96, 1.24)\n",
"Bajrami (5.83, 0.42); (5.95, 0.58)\n",
"Vecino (5.93, 0.45); (6.02, 0.51)\n",
"Paredes (5.73, 0.35); (5.66, 0.30)\n",
"Mandragora (5.92, 0.43); (6.12, 0.64)\n",
"Djuricic (5.75, 0.46); (5.97, 0.74)\n",
"Lukic (6.09, 0.55); (6.59, 1.04)\n",
"Soriano (5.99, 0.36); (6.05, 0.39)\n",
"Zaniolo (5.84, 0.47); (6.19, 0.88)\n",
"Sottil (6.07, 0.54); (6.71, 1.16)\n",
"Traore' Hj. (6.02, 0.55); (6.72, 1.27)\n",
"Messias (6.08, 0.56); (6.85, 1.32)\n",
"Thorstvedt (5.90, 0.44); (6.16, 0.75)\n",
"Cuadrado (5.89, 0.53); (5.86, 0.50)\n",
"Locatelli (6.10, 0.39); (6.20, 0.42)\n",
"Rabiot (6.22, 0.56); (6.93, 1.26)\n",
"Dominguez (6.08, 0.46); (6.41, 0.77)\n",
"Tameze (5.85, 0.40); (5.89, 0.41)\n",
"Miranchuk (6.19, 0.59); (7.18, 1.59)\n",
"Vilhena (5.73, 0.36); (5.75, 0.43)\n",
"De Roon (6.01, 0.36); (6.04, 0.37)\n",
"Verdi (6.14, 0.38); (6.57, 0.80)\n",
"Walace (5.93, 0.36); (5.96, 0.34)\n",
"Wijnaldum (5.88, 0.39); (5.90, 0.38)\n",
"Mckennie (5.81, 0.39); (5.92, 0.56)\n",
"Makengo (5.96, 0.36); (6.00, 0.37)\n",
"Ricci S. (6.10, 0.36); (6.24, 0.45)\n",
"Coulibaly L. (5.97, 0.48); (6.21, 0.74)\n",
"Sabiri (5.73, 0.42); (5.80, 0.56)\n",
"Miretti (6.00, 0.36); (6.06, 0.41)\n",
"Colpani (6.13, 0.40); (6.57, 0.89)\n",
"Haas (5.91, 0.38); (6.12, 0.66)\n",
"Orsolini (5.95, 0.57); (6.57, 1.19)\n",
"Matic (6.12, 0.38); (6.37, 0.62)\n",
"Ascacibar (5.98, 0.37); (6.01, 0.37)\n",
"Ederson D.s. (5.89, 0.34); (5.89, 0.34)\n",
"Ciurria (5.92, 0.41); (6.08, 0.60)\n",
"Gonzalez J. (6.04, 0.46); (6.42, 0.84)\n",
"El Shaarawy (6.14, 0.41); (6.55, 0.85)\n",
"Meite' (5.83, 0.36); (5.84, 0.34)\n",
"Bourabia (5.92, 0.35); (5.95, 0.33)\n",
"Ndombele' (5.93, 0.32); (5.92, 0.30)\n",
"Henderson L. (5.80, 0.35); (5.81, 0.41)\n",
"Maggiore (5.89, 0.34); (5.90, 0.36)\n",
"Ilic (5.83, 0.37); (5.86, 0.39)\n",
"Kovalenko (5.93, 0.37); (6.02, 0.45)\n",
"Zalewski (5.96, 0.33); (5.99, 0.37)\n",
"Pickel (5.83, 0.35); (5.91, 0.49)\n",
"Ferguson (6.13, 0.54); (6.78, 1.18)\n",
"Camara Ma. (6.07, 0.36); (6.12, 0.36)\n",
"Saponara (5.95, 0.43); (6.17, 0.67)\n",
"Rincon (5.73, 0.35); (5.73, 0.35)\n",
"Cataldi (5.94, 0.37); (5.97, 0.36)\n",
"Zurkowski (6.05, 0.48); (6.50, 0.94)\n",
"Rovella (5.83, 0.54); (5.79, 0.41)\n",
"Agudelo (5.87, 0.33); (5.87, 0.33)\n",
"Amrabat (5.92, 0.46); (5.97, 0.47)\n",
"Lopez M. (5.88, 0.41); (5.91, 0.41)\n",
"Gyasi (5.80, 0.45); (5.91, 0.61)\n",
"Pobega (6.00, 0.34); (6.08, 0.44)\n",
"Harroui (5.78, 0.36); (5.85, 0.50)\n",
"Ceide (5.86, 0.35); (5.85, 0.34)\n",
"Baldanzi (6.26, 0.47); (7.05, 1.37)\n",
"Blin (6.00, 0.30); (5.97, 0.30)\n",
"Hjulmand (5.98, 0.53); (5.93, 0.42)\n",
"D'alessandro (5.99, 0.31); (6.00, 0.36)\n",
"Grassi (5.95, 0.31); (5.91, 0.29)\n",
"Krunic (5.98, 0.32); (5.99, 0.34)\n",
"Linetty (5.91, 0.48); (6.13, 0.72)\n",
"Miguel Veloso (5.90, 0.37); (5.94, 0.41)\n",
"Ekdal (5.77, 0.37); (5.72, 0.32)\n",
"Schouten (5.86, 0.39); (5.83, 0.32)\n",
"Villar (5.73, 0.33); (5.65, 0.28)\n",
"Saelemaekers (5.94, 0.36); (6.02, 0.45)\n",
"Vranckx (5.99, 0.40); (6.06, 0.38)\n",
"Basic (5.98, 0.32); (6.01, 0.37)\n",
"Aebischer (5.96, 0.46); (6.22, 0.72)\n",
"Marcos Antonio (5.88, 0.31); (5.85, 0.28)\n",
"Ranocchia F. (5.96, 0.41); (6.20, 0.68)\n",
"Bistrovic (5.84, 0.31); (5.85, 0.33)\n",
"Verre (5.71, 0.32); (5.68, 0.27)\n",
"Gagliardini (5.99, 0.35); (6.14, 0.52)\n",
"Barberis (5.73, 0.38); (5.72, 0.33)\n",
"Leris (5.68, 0.35); (5.68, 0.39)\n",
"Vieira (5.67, 0.34); (5.65, 0.32)\n",
"Winks (5.85, 0.40); (5.89, 0.43)\n",
"Castrovilli (5.97, 0.42); (6.14, 0.61)\n",
"Maldini (6.11, 0.45); (6.67, 1.05)\n",
"Marin (5.74, 0.40); (5.72, 0.34)\n",
"Maleh (5.88, 0.35); (5.96, 0.48)\n",
"Matheus Henrique (5.79, 0.35); (5.79, 0.33)\n",
"Asllani (5.93, 0.32); (5.93, 0.33)\n",
"Moro N. (5.75, 0.37); (5.71, 0.31)\n",
"Oudin (6.04, 0.41); (6.15, 0.45)\n",
"Duncan (5.86, 0.38); (5.94, 0.48)\n",
"Molina S. (5.76, 0.37); (5.75, 0.35)\n",
"Kastanos (5.75, 0.34); (5.73, 0.31)\n",
"Valoti (5.86, 0.38); (5.85, 0.33)\n",
"Gaetano (5.93, 0.34); (5.95, 0.35)\n",
"Escalante (5.77, 0.42); (5.72, 0.35)\n",
"Bohinen (5.92, 0.32); (5.89, 0.29)\n",
"Terracciano F. (6.01, 0.29); (6.03, 0.36)\n",
"Milanese (5.96, 0.43); (6.03, 0.48)\n",
"Castagnetti (5.94, 0.30); (5.93, 0.31)\n",
"Listkowski (5.86, 0.38); (5.85, 0.33)\n",
"Adli (5.80, 0.41); (5.83, 0.40)\n",
"Hrustic (5.69, 0.33); (5.64, 0.28)\n",
"D'andrea (5.85, 0.36); (5.89, 0.44)\n",
"Benassi (5.88, 0.34); (5.90, 0.39)\n",
"Baez (5.91, 0.39); (5.95, 0.40)\n",
"Vignato (5.82, 0.38); (5.85, 0.39)\n",
"Obiang (5.83, 0.39); (5.80, 0.33)\n",
"Askildsen (5.67, 0.32); (5.63, 0.27)\n",
"Hongla (5.70, 0.32); (5.71, 0.29)\n",
"Yepes (5.59, 0.41); (5.52, 0.35)\n",
"Helgason (5.83, 0.33); (5.81, 0.30)\n",
"Bondo (5.73, 0.34); (5.68, 0.30)\n",
"Ellertsson (5.84, 0.35); (5.84, 0.32)\n",
"Capezzi (5.91, 0.35); (5.92, 0.32)\n",
"Jajalo (5.90, 0.32); (5.88, 0.30)\n",
"Machin (5.84, 0.40); (5.86, 0.39)\n",
"Bakayoko (5.79, 0.37); (5.73, 0.32)\n",
"Scozzarella (5.84, 0.40); (5.86, 0.39)\n",
"Fagioli (6.09, 0.51); (6.63, 1.04)\n",
"Demme (6.06, 0.41); (6.27, 0.61)\n",
"Akpa Akpro (5.90, 0.43); (5.94, 0.42)\n",
"Darboe (5.96, 0.47); (6.00, 0.41)\n",
"Bove (5.71, 0.32); (5.70, 0.30)\n",
"Urbanski (5.91, 0.41); (5.96, 0.40)\n",
"Bertini (5.91, 0.40); (5.96, 0.38)\n",
"Cortinovis (5.88, 0.41); (5.95, 0.46)\n",
"Romero L. (5.92, 0.52); (6.23, 0.88)\n",
"Bianco (5.91, 0.40); (5.97, 0.46)\n",
"Sher (5.91, 0.40); (5.96, 0.40)\n",
"Nguiamba (5.99, 0.41); (6.06, 0.42)\n",
"Volpato (5.95, 0.59); (6.46, 1.11)\n",
"Praszelik (5.96, 0.39); (6.06, 0.46)\n",
"Trimboli (5.85, 0.40); (5.89, 0.43)\n",
"Pafundi (5.91, 0.40); (5.96, 0.40)\n",
"Bjorkengren (5.95, 0.42); (6.02, 0.43)\n",
"Vignato S. (5.86, 0.42); (5.87, 0.38)\n",
"Samek (5.95, 0.42); (6.02, 0.43)\n",
"Zerbin (5.82, 0.35); (5.83, 0.34)\n",
"Ilkhan (5.79, 0.36); (5.77, 0.32)\n",
"Degli Innocenti (5.91, 0.45); (5.96, 0.42)\n",
"Fazzini (5.67, 0.35); (5.56, 0.29)\n",
"Acella (5.94, 0.42); (6.02, 0.48)\n",
"Tripi (5.91, 0.40); (5.94, 0.40)\n",
"Garbett (5.92, 0.41); (5.98, 0.43)\n",
"Iling-Junior (5.95, 0.40); (6.01, 0.37)\n",
"Immobile (6.47, 0.72); (8.40, 2.84)\n",
"Vlahovic (6.32, 0.72); (8.05, 2.52)\n",
"Rafael Leao (6.36, 0.71); (7.91, 2.36)\n",
"Martinez L. (6.37, 0.71); (8.20, 2.64)\n",
"Dybala (6.48, 0.64); (7.96, 2.30)\n",
"Arnautovic (6.31, 0.69); (7.98, 2.43)\n",
"Beto (6.23, 0.66); (7.82, 2.28)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Giroud (6.26, 0.67); (7.66, 2.12)\n",
"Osimhen (6.48, 0.72); (8.44, 2.88)\n",
"Deulofeu (6.35, 0.63); (7.64, 2.00)\n",
"Lukaku (6.46, 0.71); (8.41, 2.84)\n",
"Milik (6.24, 0.59); (7.33, 1.69)\n",
"Pedro (6.30, 0.56); (7.11, 1.40)\n",
"Abraham (6.16, 0.63); (7.49, 1.97)\n",
"Berardi (6.27, 0.69); (7.90, 2.36)\n",
"Dia (6.17, 0.70); (7.64, 2.17)\n",
"Lookman (6.44, 0.65); (8.00, 2.38)\n",
"Simeone (6.31, 0.71); (8.01, 2.48)\n",
"Correa (6.26, 0.48); (7.08, 1.40)\n",
"Zapata D. (6.10, 0.59); (7.14, 1.63)\n",
"Dzeko (6.26, 0.70); (7.93, 2.40)\n",
"Nzola (6.12, 0.66); (7.44, 1.97)\n",
"Sanabria (6.08, 0.58); (7.00, 1.50)\n",
"Muriel (6.20, 0.66); (7.37, 1.84)\n",
"Rebic (6.23, 0.66); (7.55, 2.01)\n",
"Bonazzoli (6.06, 0.49); (6.51, 0.95)\n",
"Caprari (5.93, 0.39); (6.16, 0.67)\n",
"Di Maria (6.02, 0.64); (6.54, 1.21)\n",
"Lozano (6.31, 0.65); (7.64, 2.04)\n",
"Ceesay (6.08, 0.55); (6.98, 1.43)\n",
"Pinamonti (5.93, 0.52); (6.59, 1.20)\n",
"Kouame' (6.18, 0.60); (7.26, 1.69)\n",
"Lauriente' (6.21, 0.69); (7.33, 1.85)\n",
"Jovic (6.00, 0.59); (6.80, 1.39)\n",
"Barrow (6.05, 0.61); (6.88, 1.43)\n",
"Henry (5.93, 0.52); (6.44, 1.05)\n",
"Piatek (6.05, 0.64); (7.14, 1.71)\n",
"Gonzalez N. (6.16, 0.63); (7.23, 1.70)\n",
"Dessers (6.08, 0.47); (6.83, 1.26)\n",
"Caputo (5.76, 0.38); (5.90, 0.59)\n",
"Raspadori (6.04, 0.53); (6.67, 1.16)\n",
"Lammers (5.90, 0.38); (6.04, 0.58)\n",
"Okereke (5.99, 0.53); (6.59, 1.16)\n",
"Cabral (6.02, 0.48); (6.74, 1.21)\n",
"Gabbiadini (5.78, 0.39); (5.96, 0.65)\n",
"Belotti (5.71, 0.32); (5.71, 0.32)\n",
"Origi (6.00, 0.53); (6.57, 1.09)\n",
"Botheim (5.92, 0.47); (6.43, 0.99)\n",
"Alvarez A. (6.04, 0.64); (7.00, 1.58)\n",
"Verde (6.12, 0.47); (6.71, 1.07)\n",
"Destro (5.93, 0.60); (6.64, 1.31)\n",
"Kean (6.13, 0.63); (7.20, 1.73)\n",
"Pellegri (5.90, 0.42); (6.24, 0.82)\n",
"Satriano (5.87, 0.43); (6.20, 0.82)\n",
"Success (5.97, 0.34); (5.99, 0.38)\n",
"Mota (6.04, 0.65); (7.07, 1.67)\n",
"Banda (6.07, 0.40); (6.32, 0.66)\n",
"Hojlund (5.98, 0.42); (6.45, 0.94)\n",
"Lasagna (5.84, 0.41); (6.19, 0.80)\n",
"Pjaca (5.91, 0.40); (6.02, 0.54)\n",
"Gytkjaer (5.85, 0.38); (6.16, 0.76)\n",
"Petagna (5.80, 0.38); (5.91, 0.53)\n",
"Nestorovski (6.24, 0.40); (6.87, 1.11)\n",
"Zanimacchia (5.95, 0.35); (6.03, 0.45)\n",
"Piccoli (5.89, 0.38); (6.12, 0.70)\n",
"Kallon (5.92, 0.34); (6.09, 0.62)\n",
"Ciofani D. (6.01, 0.64); (6.98, 1.58)\n",
"Di Francesco F. (5.89, 0.42); (6.12, 0.69)\n",
"Boga (5.88, 0.34); (5.87, 0.39)\n",
"Zirkzee (5.99, 0.54); (6.69, 1.23)\n",
"Quagliarella (5.78, 0.35); (5.88, 0.54)\n",
"Ibrahimovic (6.36, 0.66); (7.91, 2.31)\n",
"Shomurodov (5.94, 0.37); (6.27, 0.82)\n",
"Djuric (5.89, 0.30); (5.87, 0.29)\n",
"Strelec (5.95, 0.29); (5.92, 0.33)\n",
"Antiste (5.81, 0.38); (6.04, 0.71)\n",
"Seck (6.00, 0.37); (6.05, 0.39)\n",
"Buonaiuto (6.08, 0.36); (6.27, 0.50)\n",
"Sansone (5.81, 0.38); (5.90, 0.49)\n",
"Pussetto (5.86, 0.42); (6.19, 0.82)\n",
"Cambiaghi (6.09, 0.49); (6.64, 1.08)\n",
"Colombo (6.13, 0.62); (7.34, 1.82)\n",
"Afena-Gyan (5.74, 0.34); (5.72, 0.31)\n",
"Defrel (5.77, 0.37); (5.83, 0.52)\n",
"Karamoh (5.88, 0.33); (5.89, 0.34)\n",
"Cancellieri (5.82, 0.32); (5.74, 0.28)\n",
"Tsadjout (5.98, 0.41); (6.11, 0.52)\n",
"Rodriguez P. (6.02, 0.36); (6.11, 0.40)\n",
"Valencia D. (5.69, 0.31); (5.74, 0.29)\n",
"Edera (5.92, 0.43); (5.98, 0.46)\n",
"Oddei (5.98, 0.39); (6.03, 0.42)\n",
"Raimondo (5.95, 0.42); (6.02, 0.44)\n",
"Kristoffersen (5.87, 0.41); (5.91, 0.40)\n",
"Kaio Jorge (5.99, 0.36); (6.04, 0.39)\n",
"De Luca (5.86, 0.42); (5.93, 0.46)\n",
"Soule' (5.80, 0.41); (5.78, 0.35)\n",
"Lazetic (5.96, 0.42); (6.04, 0.46)\n",
"Voelkerling Persson (5.95, 0.44); (6.02, 0.46)\n",
"Sanca (5.91, 0.41); (5.96, 0.38)\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>90</td>\n",
" <td>6.271947</td>\n",
" <td>0.430055</td>\n",
" <td>5.709330</td>\n",
" <td>0.574931</td>\n",
" <td>6.021375</td>\n",
" <td>0.331715</td>\n",
" <td>0.518988</td>\n",
" <td>1.353078</td>\n",
" <td>5.943697</td>\n",
" <td>0.804946</td>\n",
" <td>-0.211801</td>\n",
" <td>0.650473</td>\n",
" <td>61.331621</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>1</td>\n",
" <td>6.271947</td>\n",
" <td>0.430055</td>\n",
" <td>5.709330</td>\n",
" <td>0.574931</td>\n",
" <td>6.021375</td>\n",
" <td>0.331715</td>\n",
" <td>0.518988</td>\n",
" <td>1.353078</td>\n",
" <td>5.943697</td>\n",
" <td>0.804946</td>\n",
" <td>-0.211801</td>\n",
" <td>0.650473</td>\n",
" <td>61.331621</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>5</td>\n",
" <td>6.264654</td>\n",
" <td>0.401258</td>\n",
" <td>5.620796</td>\n",
" <td>0.583706</td>\n",
" <td>6.034907</td>\n",
" <td>0.314094</td>\n",
" <td>0.504715</td>\n",
" <td>1.356614</td>\n",
" <td>5.923086</td>\n",
" <td>0.807366</td>\n",
" <td>-0.271899</td>\n",
" <td>0.640287</td>\n",
" <td>49.423152</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Toloi</th>\n",
" <td>D</td>\n",
" <td>Atalanta</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" <td>6.210211</td>\n",
" <td>0.451401</td>\n",
" <td>6.519528</td>\n",
" <td>0.698510</td>\n",
" <td>6.128604</td>\n",
" <td>0.510814</td>\n",
" <td>0.118118</td>\n",
" <td>1.164539</td>\n",
" <td>5.968876</td>\n",
" <td>0.927175</td>\n",
" <td>0.401723</td>\n",
" <td>1.931138</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>0</td>\n",
" <td>40</td>\n",
" <td>6.087560</td>\n",
" <td>0.522836</td>\n",
" <td>6.485634</td>\n",
" <td>0.911451</td>\n",
" <td>6.031816</td>\n",
" <td>0.607296</td>\n",
" <td>0.068214</td>\n",
" <td>1.128253</td>\n",
" <td>5.694374</td>\n",
" <td>1.063483</td>\n",
" <td>0.483664</td>\n",
" <td>1.910546</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>Henry</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>1</td>\n",
" <td>80</td>\n",
" <td>5.934716</td>\n",
" <td>0.522377</td>\n",
" <td>6.437649</td>\n",
" <td>1.045586</td>\n",
" <td>5.919954</td>\n",
" <td>0.621110</td>\n",
" <td>0.017495</td>\n",
" <td>1.112960</td>\n",
" <td>5.489585</td>\n",
" <td>1.128037</td>\n",
" <td>0.530604</td>\n",
" <td>1.907810</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>0</td>\n",
" <td>40</td>\n",
" <td>5.841306</td>\n",
" <td>0.411127</td>\n",
" <td>6.191318</td>\n",
" <td>0.803403</td>\n",
" <td>5.848244</td>\n",
" <td>0.496641</td>\n",
" <td>-0.010579</td>\n",
" <td>1.142342</td>\n",
" <td>5.499932</td>\n",
" <td>0.949700</td>\n",
" <td>0.473728</td>\n",
" <td>1.911753</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" <tr>\n",
" <th>Piccoli</th>\n",
" <td>A</td>\n",
" <td>Verona</td>\n",
" <td>Avg</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>26</td>\n",
" <td>5.893315</td>\n",
" <td>0.376300</td>\n",
" <td>6.124632</td>\n",
" <td>0.698532</td>\n",
" <td>5.887677</td>\n",
" <td>0.451470</td>\n",
" <td>0.009328</td>\n",
" <td>1.161328</td>\n",
" <td>5.540597</td>\n",
" <td>0.861138</td>\n",
" <td>0.449163</td>\n",
" <td>1.905198</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>55</td>\n",
" <td>5.924331</td>\n",
" <td>0.339034</td>\n",
" <td>6.086577</td>\n",
" <td>0.617345</td>\n",
" <td>5.912078</td>\n",
" <td>0.404937</td>\n",
" <td>0.022507</td>\n",
" <td>1.180800</td>\n",
" <td>5.594398</td>\n",
" <td>0.805842</td>\n",
" <td>0.411384</td>\n",
" <td>1.904539</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>40</td>\n",
" <td>5.891532</td>\n",
" <td>0.301036</td>\n",
" <td>5.867888</td>\n",
" <td>0.294978</td>\n",
" <td>5.885631</td>\n",
" <td>0.362024</td>\n",
" <td>0.012265</td>\n",
" <td>1.195617</td>\n",
" <td>5.776346</td>\n",
" <td>0.553349</td>\n",
" <td>0.122425</td>\n",
" <td>1.881055</td>\n",
" <td>0.000000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>554 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 90 6.271947 0.430055 \n",
"Rossi F. P Atalanta Avg 1 0 1 6.271947 0.430055 \n",
"Sportiello P Atalanta Avg 1 0 5 6.264654 0.401258 \n",
"Toloi D Atalanta Avg 1 1 80 6.210211 0.451401 \n",
"Scalvini D Atalanta Avg 1 0 40 6.087560 0.522836 \n",
"... ... ... ... ... ... ... ... ... \n",
"Henry A Verona Avg 1 1 80 5.934716 0.522377 \n",
"Lasagna A Verona Avg 1 0 40 5.841306 0.411127 \n",
"Piccoli A Verona Avg 1 0 26 5.893315 0.376300 \n",
"Kallon A Verona Avg 1 0 55 5.924331 0.339034 \n",
"Djuric A Verona Avg 1 0 40 5.891532 0.301036 \n",
"\n",
" FV FV std MV loc MV scale MV skewness \\\n",
"player \n",
"Musso 5.709330 0.574931 6.021375 0.331715 0.518988 \n",
"Rossi F. 5.709330 0.574931 6.021375 0.331715 0.518988 \n",
"Sportiello 5.620796 0.583706 6.034907 0.314094 0.504715 \n",
"Toloi 6.519528 0.698510 6.128604 0.510814 0.118118 \n",
"Scalvini 6.485634 0.911451 6.031816 0.607296 0.068214 \n",
"... ... ... ... ... ... \n",
"Henry 6.437649 1.045586 5.919954 0.621110 0.017495 \n",
"Lasagna 6.191318 0.803403 5.848244 0.496641 -0.010579 \n",
"Piccoli 6.124632 0.698532 5.887677 0.451470 0.009328 \n",
"Kallon 6.086577 0.617345 5.912078 0.404937 0.022507 \n",
"Djuric 5.867888 0.294978 5.885631 0.362024 0.012265 \n",
"\n",
" MV tailweight FV loc FV scale FV skewness FV tailweight \\\n",
"player \n",
"Musso 1.353078 5.943697 0.804946 -0.211801 0.650473 \n",
"Rossi F. 1.353078 5.943697 0.804946 -0.211801 0.650473 \n",
"Sportiello 1.356614 5.923086 0.807366 -0.271899 0.640287 \n",
"Toloi 1.164539 5.968876 0.927175 0.401723 1.931138 \n",
"Scalvini 1.128253 5.694374 1.063483 0.483664 1.910546 \n",
"... ... ... ... ... ... \n",
"Henry 1.112960 5.489585 1.128037 0.530604 1.907810 \n",
"Lasagna 1.142342 5.499932 0.949700 0.473728 1.911753 \n",
"Piccoli 1.161328 5.540597 0.861138 0.449163 1.905198 \n",
"Kallon 1.180800 5.594398 0.805842 0.411384 1.904539 \n",
"Djuric 1.195617 5.776346 0.553349 0.122425 1.881055 \n",
"\n",
" Clean Sheet % \n",
"player \n",
"Musso 61.331621 \n",
"Rossi F. 61.331621 \n",
"Sportiello 49.423152 \n",
"Toloi 0.000000 \n",
"Scalvini 0.000000 \n",
"... ... \n",
"Henry 0.000000 \n",
"Lasagna 0.000000 \n",
"Piccoli 0.000000 \n",
"Kallon 0.000000 \n",
"Djuric 0.000000 \n",
"\n",
"[554 rows x 19 columns]"
]
},
"execution_count": 51,
"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",
" 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(player in probables.index):\n",
" # starter = probables['starter'][player]\n",
" # voteperc = probables['percentage'][player]\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",
" \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": 52,
"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": "a9687e92",
"metadata": {},
"source": [
"Same code but considering previous season"
]
},
{
"cell_type": "code",
"execution_count": 41,
"id": "89e1dc82",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Meret (5.79, 0.46); (5.22, 0.60)\n",
"Provedel (6.40, 0.38); (4.78, 0.71)\n",
"Maignan (6.38, 0.38); (5.01, 0.67)\n",
"Silvestri (6.40, 0.38); (4.53, 0.74)\n",
"Sepe (6.38, 0.37); (4.77, 0.71)\n",
"Szczesny (6.29, 0.39); (5.05, 0.66)\n",
"Consigli (6.31, 0.37); (4.42, 0.76)\n",
"Falcone (6.33, 0.41); (5.23, 0.64)\n",
"Musso (6.39, 0.37); (4.71, 0.72)\n",
"Vicario (6.40, 0.38); (4.57, 0.74)\n",
"Rui Patricio (6.36, 0.38); (4.57, 0.73)\n",
"Milinkovic-Savic V. (6.28, 0.36); (4.68, 0.72)\n",
"Audero (6.32, 0.36); (4.39, 0.77)\n",
"Montipo' (6.37, 0.36); (4.63, 0.73)\n",
"Sportiello (6.33, 0.41); (5.58, 0.59)\n",
"Skorupski (6.39, 0.39); (4.61, 0.73)\n",
"Di Gregorio (6.13, 0.40); (4.30, 0.76)\n",
"Perin (6.23, 0.41); (5.53, 0.59)\n",
"Handanovic (6.44, 0.39); (4.66, 0.73)\n",
"Tatarusanu (6.06, 0.43); (5.47, 0.59)\n",
"Gollini (6.03, 0.41); (5.40, 0.60)\n",
"Dragowski (5.66, 0.42); (3.79, 0.84)\n",
"Terracciano (6.22, 0.34); (4.44, 0.75)\n",
"Berisha (6.26, 0.43); (5.58, 0.59)\n",
"Radu I. (5.33, 0.40); (3.14, 0.99)\n",
"Cragno (6.36, 0.36); (4.65, 0.72)\n",
"Luis Maximiano (6.05, 0.46); (5.19, 0.62)\n",
"Onana (6.23, 0.37); (5.38, 0.62)\n",
"Carnesecchi (6.27, 0.45); (5.50, 0.60)\n",
"Mirante (6.38, 0.38); (5.01, 0.67)\n",
"Sarr M. (6.27, 0.42); (4.63, 0.72)\n",
"Lamanna (6.13, 0.40); (4.30, 0.76)\n",
"Ujkani (6.40, 0.38); (4.57, 0.74)\n",
"Pegolo (6.28, 0.36); (4.38, 0.76)\n",
"Perilli (6.22, 0.33); (4.29, 0.78)\n",
"Padelli (6.45, 0.40); (4.62, 0.73)\n",
"Perisan (6.45, 0.41); (5.30, 0.63)\n",
"Bardi (6.40, 0.38); (4.71, 0.72)\n",
"Cordaz (6.44, 0.39); (4.66, 0.73)\n",
"Pinsoglio (6.26, 0.40); (5.18, 0.64)\n",
"Fiorillo (6.33, 0.36); (4.62, 0.74)\n",
"Sirigu (6.36, 0.36); (4.96, 0.68)\n",
"Cerofolini (6.09, 0.35); (4.64, 0.72)\n",
"Rossi F. (6.38, 0.37); (4.78, 0.70)\n",
"Contini (6.18, 0.34); (4.22, 0.80)\n",
"Brancolini (6.40, 0.37); (4.83, 0.70)\n",
"Bleve (6.40, 0.37); (4.83, 0.70)\n",
"Berardi A. (6.33, 0.35); (4.49, 0.75)\n",
"Russo A. (6.24, 0.37); (5.24, 0.63)\n",
"Gemello (6.26, 0.43); (5.64, 0.59)\n",
"Ravaglia (6.37, 0.36); (4.57, 0.74)\n",
"Zoet (5.55, 0.33); (2.93, 1.10)\n",
"Boer (6.36, 0.38); (4.57, 0.73)\n",
"Adamonis (6.16, 0.40); (4.50, 0.73)\n",
"Marfella (6.37, 0.37); (5.05, 0.67)\n",
"Zovko (6.38, 0.37); (4.50, 0.75)\n",
"Piana (6.40, 0.38); (4.53, 0.74)\n",
"Bagnolini (6.04, 0.36); (3.94, 0.82)\n",
"Svilar (6.24, 0.40); (5.38, 0.61)\n",
"Sorrentino A. (6.13, 0.40); (4.30, 0.76)\n",
"Ciezkowski (6.27, 0.42); (4.63, 0.72)\n",
"Micai (6.41, 0.37); (4.91, 0.69)\n",
"Chiesa M. (6.22, 0.33); (4.29, 0.78)\n",
"Saro (6.27, 0.42); (4.63, 0.72)\n",
"Smalling (6.16, 0.46); (6.51, 0.80)\n",
"Hernandez T. (6.24, 0.60); (6.99, 1.34)\n",
"Kim (6.28, 0.45); (6.62, 0.73)\n",
"Bastoni S. (6.08, 0.49); (6.43, 0.82)\n",
"Udogie (6.04, 0.56); (6.54, 1.08)\n",
"Dumfries (6.18, 0.51); (6.86, 1.22)\n",
"Romagnoli (5.99, 0.48); (6.00, 0.39)\n",
"Rodrigo Becao (6.00, 0.52); (6.13, 0.63)\n",
"Parisi (5.87, 0.40); (5.88, 0.34)\n",
"Mazzocchi (5.81, 0.40); (5.83, 0.36)\n",
"Bremer (6.21, 0.47); (6.40, 0.55)\n",
"Demiral (6.02, 0.52); (6.06, 0.49)\n",
"Valeri (6.08, 0.35); (6.40, 0.67)\n",
"Dimarco (6.17, 0.46); (6.58, 0.85)\n",
"Di Lorenzo (6.15, 0.41); (6.31, 0.49)\n",
"Ibanez (5.81, 0.51); (5.87, 0.58)\n",
"Tomori (6.09, 0.39); (6.16, 0.36)\n",
"Toloi (6.03, 0.48); (6.15, 0.56)\n",
"Gosens (6.07, 0.34); (6.17, 0.40)\n",
"Rrahmani (6.23, 0.50); (6.63, 0.85)\n",
"Kalulu (6.20, 0.49); (6.56, 0.80)\n",
"Bijol (6.07, 0.51); (6.47, 0.91)\n",
"Doig (6.16, 0.51); (6.72, 1.05)\n",
"Mario Rui (6.03, 0.42); (6.13, 0.44)\n",
"Spinazzola (6.02, 0.32); (6.02, 0.34)\n",
"Lazzari (6.01, 0.51); (6.38, 0.91)\n",
"Mancini (5.76, 0.50); (5.72, 0.40)\n",
"Danilo (6.12, 0.42); (6.25, 0.48)\n",
"Kyriakopoulos (5.78, 0.52); (5.74, 0.45)\n",
"Vojvoda (5.95, 0.37); (6.00, 0.40)\n",
"Scalvini (5.98, 0.38); (6.05, 0.41)\n",
"Carlos Augusto (5.83, 0.45); (5.95, 0.58)\n",
"Skriniar (6.15, 0.46); (6.35, 0.59)\n",
"Schuurs (6.03, 0.36); (6.07, 0.34)\n",
"Juan Jesus (6.12, 0.44); (6.36, 0.63)\n",
"Bonucci (6.21, 0.56); (6.77, 1.10)\n",
"Calabria (6.10, 0.35); (6.36, 0.60)\n",
"Bastoni (6.16, 0.41); (6.32, 0.50)\n",
"Depaoli (5.74, 0.40); (5.78, 0.48)\n",
"Darmian (6.06, 0.37); (6.30, 0.64)\n",
"Sernicola (5.96, 0.41); (6.27, 0.77)\n",
"Mari' (6.02, 0.59); (6.27, 0.86)\n",
"Martinez Quarta (5.76, 0.50); (5.73, 0.49)\n",
"Maehle (6.03, 0.30); (6.07, 0.36)\n",
"Olivera (6.17, 0.38); (6.48, 0.66)\n",
"Biraghi (5.87, 0.57); (6.14, 0.87)\n",
"Medel (5.75, 0.54); (5.69, 0.42)\n",
"Patric (5.77, 0.56); (5.77, 0.56)\n",
"Rodriguez R. (5.88, 0.39); (5.89, 0.33)\n",
"Aina (5.88, 0.36); (5.89, 0.33)\n",
"Cambiaso (5.88, 0.51); (5.94, 0.54)\n",
"Perez N. (5.74, 0.41); (5.70, 0.35)\n",
"Holm (5.93, 0.41); (6.14, 0.65)\n",
"Baschirotto (6.15, 0.47); (6.56, 0.86)\n",
"Dodo' (5.72, 0.41); (5.70, 0.39)\n",
"Hysaj (5.70, 0.40); (5.70, 0.41)\n",
"Faraoni (6.07, 0.44); (6.44, 0.81)\n",
"Bianchetti (5.74, 0.41); (5.79, 0.47)\n",
"Milenkovic (5.80, 0.51); (5.79, 0.47)\n",
"Marusic (5.68, 0.48); (5.65, 0.46)\n",
"Colley (5.78, 0.53); (5.73, 0.39)\n",
"Toljan (5.81, 0.38); (5.80, 0.33)\n",
"Celik (5.90, 0.35); (5.89, 0.32)\n",
"Ampadu (5.77, 0.51); (5.71, 0.39)\n",
"Singo (6.14, 0.54); (6.63, 1.00)\n",
"Casale (5.82, 0.41); (5.79, 0.34)\n",
"Daniliuc (5.83, 0.55); (5.78, 0.46)\n",
"Pongracic (5.88, 0.42); (5.86, 0.33)\n",
"Soppy (5.87, 0.33); (5.84, 0.30)\n",
"Kiwior (5.78, 0.39); (5.76, 0.32)\n",
"Posch (5.96, 0.59); (6.46, 1.09)\n",
"Masina (5.98, 0.42); (6.23, 0.72)\n",
"Ghiglione (5.72, 0.37); (5.69, 0.32)\n",
"De Vrij (5.81, 0.36); (5.79, 0.31)\n",
"Alex Sandro (5.83, 0.34); (5.79, 0.29)\n",
"Ceccherini (5.76, 0.48); (5.78, 0.49)\n",
"Fazio (5.69, 0.58); (5.64, 0.55)\n",
"Rogerio (5.77, 0.40); (5.75, 0.35)\n",
"Reca (5.75, 0.38); (5.72, 0.32)\n",
"Gunter (5.73, 0.53); (5.67, 0.44)\n",
"Djidji (5.82, 0.46); (5.79, 0.36)\n",
"Augello (5.77, 0.40); (5.84, 0.46)\n",
"Bellanova (5.82, 0.42); (5.85, 0.43)\n",
"Erlic (5.84, 0.54); (5.95, 0.67)\n",
"Ismajli (5.64, 0.53); (5.58, 0.43)\n",
"Ebuehi (5.64, 0.38); (5.57, 0.32)\n",
"Kasius (5.96, 0.32); (5.95, 0.31)\n",
"Lucumi' (5.77, 0.39); (5.73, 0.32)\n",
"Hien (5.67, 0.45); (5.62, 0.37)\n",
"Acerbi (6.01, 0.53); (6.29, 0.80)\n",
"Zappacosta (6.08, 0.39); (6.28, 0.56)\n",
"Chiriches (5.71, 0.53); (5.65, 0.42)\n",
"Gyomber (5.68, 0.52); (5.62, 0.42)\n",
"Pezzella Giu. (5.95, 0.37); (5.98, 0.36)\n",
"Ferrari G. (5.69, 0.55); (5.63, 0.47)\n",
"Bereszynski (5.66, 0.42); (5.60, 0.36)\n",
"Hateboer (5.78, 0.34); (5.77, 0.31)\n",
"Karsdorp (5.96, 0.43); (6.01, 0.39)\n",
"Nuytinck (5.98, 0.52); (6.03, 0.50)\n",
"Lykogiannis (5.72, 0.35); (5.69, 0.31)\n",
"Buongiorno (5.87, 0.40); (5.85, 0.33)\n",
"Nikolaou (5.66, 0.44); (5.62, 0.35)\n",
"Lazaro (5.83, 0.42); (5.86, 0.41)\n",
"Gallo (5.86, 0.41); (5.82, 0.34)\n",
"Ayhan (5.71, 0.57); (5.77, 0.67)\n",
"Dest (5.84, 0.36); (5.83, 0.32)\n",
"Stojanovic (5.75, 0.51); (5.71, 0.47)\n",
"Birindelli (5.75, 0.32); (5.72, 0.28)\n",
"Gendrey (5.77, 0.35); (5.71, 0.30)\n",
"Ebosse (5.86, 0.33); (5.81, 0.29)\n",
"Lochoshvili (5.81, 0.37); (5.80, 0.32)\n",
"Bronn (5.85, 0.35); (5.81, 0.29)\n",
"Thiaw (6.00, 0.40); (6.06, 0.42)\n",
"Izzo (5.76, 0.35); (5.68, 0.30)\n",
"D'ambrosio (6.13, 0.38); (6.27, 0.46)\n",
"Rugani (5.94, 0.34); (5.93, 0.29)\n",
"De Sciglio (6.06, 0.50); (6.32, 0.74)\n",
"Luperto (5.74, 0.59); (5.66, 0.47)\n",
"De Silvestri (5.83, 0.52); (6.09, 0.81)\n",
"Djimsiti (5.89, 0.45); (5.93, 0.44)\n",
"Palomino (6.07, 0.47); (6.15, 0.43)\n",
"Bonifazi (5.64, 0.50); (5.62, 0.38)\n",
"Hristov (5.69, 0.47); (5.85, 0.69)\n",
"Donati (5.65, 0.42); (5.59, 0.35)\n",
"Umtiti (5.82, 0.48); (5.79, 0.39)\n",
"Kjaer (6.01, 0.31); (6.00, 0.31)\n",
"Igor (5.72, 0.53); (5.67, 0.42)\n",
"Okoli (5.65, 0.47); (5.62, 0.38)\n",
"Soumaoro (5.74, 0.52); (5.69, 0.40)\n",
"Caldirola (5.75, 0.48); (5.69, 0.37)\n",
"Ballo-Toure' (5.73, 0.32); (5.69, 0.28)\n",
"Bradaric (5.82, 0.40); (5.82, 0.34)\n",
"De Winter (5.77, 0.53); (5.70, 0.39)\n",
"Quagliata (5.94, 0.32); (5.96, 0.33)\n",
"Ferrari A. (5.75, 0.48); (5.82, 0.59)\n",
"Florenzi (6.11, 0.39); (6.34, 0.58)\n",
"Sala (5.85, 0.39); (5.99, 0.55)\n",
"Caldara (5.82, 0.55); (5.78, 0.49)\n",
"Murru (5.61, 0.40); (5.65, 0.54)\n",
"Marlon (5.62, 0.39); (5.55, 0.32)\n",
"Walukiewicz (5.69, 0.44); (5.65, 0.34)\n",
"Kumbulla (5.78, 0.34); (5.72, 0.29)\n",
"Amian (5.71, 0.52); (5.66, 0.46)\n",
"Ostigard (6.00, 0.38); (6.06, 0.36)\n",
"Sambia (5.70, 0.39); (5.64, 0.32)\n",
"Aiwu (5.93, 0.43); (5.98, 0.44)\n",
"Ehizibue (5.87, 0.30); (5.80, 0.27)\n",
"Hendry (5.98, 0.44); (6.03, 0.44)\n",
"Marrone (5.51, 0.45); (5.45, 0.38)\n",
"Radovanovic (5.77, 0.51); (5.84, 0.58)\n",
"Murillo (5.63, 0.35); (5.52, 0.29)\n",
"Venuti (5.81, 0.33); (5.78, 0.30)\n",
"Magnani (5.77, 0.46); (5.73, 0.35)\n",
"Terzic (5.94, 0.30); (5.91, 0.29)\n",
"Gabbia (5.61, 0.47); (5.56, 0.39)\n",
"Zortea (5.80, 0.38); (5.82, 0.42)\n",
"Dawidowicz (5.75, 0.39); (5.72, 0.32)\n",
"Pirola (5.82, 0.32); (5.73, 0.27)\n",
"Carboni (5.62, 0.45); (5.57, 0.36)\n",
"Lovato (5.82, 0.50); (5.78, 0.38)\n",
"Tuia (5.76, 0.45); (5.80, 0.48)\n",
"Amione (5.63, 0.35); (5.56, 0.30)\n",
"Vasquez (5.89, 0.43); (5.93, 0.40)\n",
"Zima (5.87, 0.35); (5.86, 0.31)\n",
"Coppola D. (5.99, 0.36); (6.00, 0.34)\n",
"Gatti (5.95, 0.45); (5.99, 0.38)\n",
"Gila (5.81, 0.49); (5.78, 0.40)\n",
"Cabal (5.82, 0.43); (5.83, 0.39)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Sosa (5.64, 0.48); (5.57, 0.42)\n",
"Conti (6.10, 0.55); (6.68, 1.13)\n",
"Dermaku (5.90, 0.43); (5.93, 0.39)\n",
"Tonelli (5.61, 0.47); (5.58, 0.38)\n",
"Radu (5.65, 0.49); (5.59, 0.43)\n",
"Paletta (5.82, 0.42); (5.83, 0.39)\n",
"Fares (5.76, 0.36); (5.71, 0.32)\n",
"Marchizza (5.64, 0.38); (5.57, 0.32)\n",
"Romagna (5.85, 0.44); (5.87, 0.41)\n",
"Ranieri L. (5.71, 0.37); (5.70, 0.38)\n",
"Cetin (5.88, 0.52); (5.83, 0.40)\n",
"Muldur (5.65, 0.42); (5.60, 0.36)\n",
"Adopo (5.82, 0.44); (5.81, 0.38)\n",
"Ferrer (5.86, 0.44); (5.86, 0.36)\n",
"Ruggeri (5.85, 0.34); (5.84, 0.31)\n",
"Antov (5.61, 0.51); (5.54, 0.43)\n",
"Amey (5.95, 0.42); (6.01, 0.41)\n",
"Ferrarini (5.82, 0.42); (5.83, 0.39)\n",
"Kamenovic (6.19, 0.44); (6.40, 0.54)\n",
"Vina (5.73, 0.48); (5.68, 0.39)\n",
"Zanoli (5.93, 0.32); (5.91, 0.29)\n",
"Zanotti (5.89, 0.39); (5.93, 0.41)\n",
"Ruan (5.63, 0.56); (5.64, 0.39)\n",
"Motoc (5.88, 0.41); (5.91, 0.38)\n",
"Cacace (5.84, 0.35); (5.79, 0.29)\n",
"Bayeye (5.92, 0.41); (5.97, 0.42)\n",
"Ebosele (5.96, 0.44); (6.03, 0.42)\n",
"Buta (5.92, 0.40); (5.97, 0.39)\n",
"Ndiaye (5.93, 0.43); (5.98, 0.44)\n",
"Abankwah (5.92, 0.40); (5.97, 0.39)\n",
"Guessand A. (5.92, 0.40); (5.97, 0.39)\n",
"Guarino (5.90, 0.43); (5.93, 0.40)\n",
"Milinkovic-Savic (6.44, 0.62); (7.60, 1.86)\n",
"Barella (6.33, 0.53); (6.93, 1.12)\n",
"Kvaratskhelia (6.59, 0.70); (8.44, 2.82)\n",
"Zaccagni (6.31, 0.59); (7.24, 1.55)\n",
"Zielinski (6.23, 0.54); (6.91, 1.21)\n",
"Luis Alberto (6.25, 0.62); (7.24, 1.62)\n",
"Frattesi (6.03, 0.52); (6.46, 0.97)\n",
"Politano (6.13, 0.41); (6.47, 0.72)\n",
"Koopmeiners (6.24, 0.54); (6.86, 1.15)\n",
"Vlasic (6.28, 0.56); (7.41, 1.76)\n",
"Pereyra (6.12, 0.56); (6.67, 1.09)\n",
"Felipe Anderson (6.23, 0.62); (7.34, 1.76)\n",
"Calhanoglu (6.30, 0.64); (7.42, 1.80)\n",
"Strefezza (6.34, 0.51); (7.12, 1.38)\n",
"Diaz B. (6.12, 0.55); (6.74, 1.15)\n",
"Pellegrini Lo. (6.25, 0.66); (7.62, 2.06)\n",
"Zambo Anguissa (6.10, 0.37); (6.15, 0.36)\n",
"Lobotka (6.23, 0.43); (6.55, 0.68)\n",
"Malinovskyi (6.27, 0.59); (7.30, 1.67)\n",
"Candreva (6.16, 0.67); (7.20, 1.71)\n",
"Pasalic (6.24, 0.68); (7.77, 2.24)\n",
"Bennacer (6.21, 0.44); (6.50, 0.69)\n",
"Kostic (6.20, 0.49); (6.79, 1.07)\n",
"Radonjic (6.27, 0.48); (7.03, 1.30)\n",
"Samardzic (6.15, 0.47); (6.63, 0.95)\n",
"Chiesa (6.25, 0.52); (7.04, 1.35)\n",
"Lovric (6.19, 0.38); (6.53, 0.70)\n",
"De Ketelaere (5.90, 0.34); (5.91, 0.36)\n",
"Brozovic (6.17, 0.38); (6.38, 0.51)\n",
"Pogba (5.93, 0.41); (5.99, 0.39)\n",
"Bonaventura (6.10, 0.61); (6.68, 1.20)\n",
"Sensi (5.84, 0.36); (5.93, 0.50)\n",
"Bandinelli (5.84, 0.43); (5.94, 0.57)\n",
"Ikone' (5.88, 0.40); (6.08, 0.65)\n",
"Barak (6.20, 0.69); (7.64, 2.13)\n",
"Mkhitaryan (6.21, 0.58); (6.99, 1.34)\n",
"Pessina (5.85, 0.36); (5.86, 0.39)\n",
"Tonali (6.28, 0.54); (6.88, 1.12)\n",
"Arslan (5.93, 0.40); (5.99, 0.46)\n",
"Lazovic (6.13, 0.39); (6.47, 0.73)\n",
"Cristante (5.95, 0.48); (6.05, 0.53)\n",
"Elmas (6.11, 0.39); (6.37, 0.63)\n",
"Bajrami (6.24, 0.55); (7.04, 1.40)\n",
"Vecino (6.06, 0.40); (6.33, 0.67)\n",
"Paredes (5.72, 0.35); (5.66, 0.30)\n",
"Mandragora (5.97, 0.41); (6.04, 0.47)\n",
"Djuricic (5.78, 0.48); (6.05, 0.79)\n",
"Lukic (6.07, 0.51); (6.47, 0.90)\n",
"Soriano (5.86, 0.41); (5.85, 0.37)\n",
"Zaniolo (5.91, 0.53); (6.20, 0.83)\n",
"Sottil (6.01, 0.53); (6.53, 1.03)\n",
"Traore' Hj. (6.18, 0.57); (7.13, 1.57)\n",
"Messias (6.13, 0.60); (7.05, 1.52)\n",
"Thorstvedt (5.95, 0.45); (6.28, 0.84)\n",
"Cuadrado (6.25, 0.48); (6.63, 0.81)\n",
"Locatelli (6.20, 0.48); (6.57, 0.81)\n",
"Rabiot (5.77, 0.36); (5.74, 0.32)\n",
"Dominguez (5.96, 0.41); (6.00, 0.39)\n",
"Tameze (6.16, 0.44); (6.59, 0.87)\n",
"Miranchuk (6.06, 0.56); (6.79, 1.28)\n",
"Vilhena (5.73, 0.36); (5.76, 0.43)\n",
"De Roon (6.00, 0.46); (6.24, 0.70)\n",
"Verdi (6.25, 0.62); (7.47, 1.88)\n",
"Walace (5.86, 0.41); (5.87, 0.36)\n",
"Wijnaldum (5.89, 0.41); (5.91, 0.39)\n",
"Mckennie (6.18, 0.51); (6.77, 1.08)\n",
"Makengo (5.91, 0.48); (5.97, 0.49)\n",
"Ricci S. (5.88, 0.39); (5.92, 0.36)\n",
"Coulibaly L. (5.84, 0.45); (6.09, 0.75)\n",
"Sabiri (6.04, 0.61); (6.92, 1.49)\n",
"Miretti (6.06, 0.42); (6.14, 0.38)\n",
"Colpani (6.10, 0.40); (6.54, 0.90)\n",
"Haas (5.86, 0.37); (5.88, 0.36)\n",
"Orsolini (6.14, 0.57); (7.08, 1.50)\n",
"Matic (5.99, 0.32); (5.99, 0.32)\n",
"Ascacibar (6.00, 0.37); (6.04, 0.38)\n",
"Ederson D.s. (6.15, 0.54); (6.78, 1.19)\n",
"Ciurria (5.89, 0.41); (6.01, 0.56)\n",
"Gonzalez J. (6.05, 0.47); (6.48, 0.90)\n",
"El Shaarawy (6.02, 0.46); (6.38, 0.84)\n",
"Meite' (5.87, 0.36); (5.88, 0.34)\n",
"Bourabia (6.17, 0.52); (6.95, 1.34)\n",
"Ndombele' (5.92, 0.32); (5.91, 0.30)\n",
"Henderson L. (5.96, 0.43); (6.18, 0.69)\n",
"Maggiore (5.98, 0.45); (6.16, 0.63)\n",
"Ilic (5.99, 0.41); (6.13, 0.52)\n",
"Kovalenko (5.92, 0.44); (6.19, 0.72)\n",
"Zalewski (5.83, 0.34); (5.80, 0.31)\n",
"Pickel (5.88, 0.35); (5.97, 0.51)\n",
"Ferguson (6.07, 0.51); (6.59, 1.02)\n",
"Camara Ma. (6.10, 0.30); (6.18, 0.34)\n",
"Saponara (6.21, 0.48); (6.77, 1.05)\n",
"Rincon (5.77, 0.34); (5.76, 0.31)\n",
"Cataldi (6.09, 0.44); (6.23, 0.51)\n",
"Zurkowski (6.11, 0.52); (6.70, 1.11)\n",
"Rovella (5.96, 0.38); (6.03, 0.46)\n",
"Agudelo (5.93, 0.50); (6.31, 0.90)\n",
"Amrabat (6.00, 0.38); (6.17, 0.56)\n",
"Lopez M. (6.03, 0.46); (6.21, 0.60)\n",
"Gyasi (5.88, 0.56); (6.36, 1.05)\n",
"Pobega (6.15, 0.45); (6.50, 0.79)\n",
"Harroui (5.84, 0.32); (5.82, 0.29)\n",
"Ceide (5.96, 0.35); (5.97, 0.38)\n",
"Baldanzi (6.25, 0.47); (7.03, 1.36)\n",
"Blin (6.00, 0.30); (5.98, 0.30)\n",
"Hjulmand (5.93, 0.53); (5.88, 0.42)\n",
"D'alessandro (5.98, 0.30); (5.99, 0.36)\n",
"Grassi (5.89, 0.44); (5.86, 0.34)\n",
"Krunic (6.00, 0.32); (6.02, 0.35)\n",
"Linetty (5.77, 0.32); (5.75, 0.30)\n",
"Miguel Veloso (5.93, 0.48); (6.00, 0.51)\n",
"Ekdal (5.74, 0.48); (5.73, 0.47)\n",
"Schouten (6.01, 0.48); (6.24, 0.70)\n",
"Villar (5.78, 0.32); (5.72, 0.28)\n",
"Saelemaekers (6.00, 0.40); (6.15, 0.54)\n",
"Vranckx (5.95, 0.39); (6.01, 0.39)\n",
"Basic (5.83, 0.35); (5.84, 0.36)\n",
"Aebischer (5.85, 0.30); (5.84, 0.29)\n",
"Marcos Antonio (5.82, 0.32); (5.77, 0.28)\n",
"Ranocchia F. (5.96, 0.41); (6.20, 0.68)\n",
"Bistrovic (5.84, 0.31); (5.85, 0.32)\n",
"Verre (5.67, 0.37); (5.62, 0.32)\n",
"Gagliardini (6.10, 0.39); (6.38, 0.71)\n",
"Barberis (5.72, 0.38); (5.71, 0.33)\n",
"Leris (5.69, 0.35); (5.70, 0.41)\n",
"Vieira (5.70, 0.34); (5.69, 0.34)\n",
"Winks (5.85, 0.41); (5.90, 0.43)\n",
"Castrovilli (5.97, 0.42); (6.14, 0.61)\n",
"Maldini (6.11, 0.40); (6.71, 1.15)\n",
"Marin (5.87, 0.51); (5.89, 0.48)\n",
"Maleh (5.97, 0.37); (6.19, 0.65)\n",
"Matheus Henrique (5.88, 0.39); (5.90, 0.34)\n",
"Asllani (6.00, 0.39); (6.11, 0.49)\n",
"Moro N. (5.84, 0.34); (5.83, 0.31)\n",
"Oudin (6.01, 0.35); (6.09, 0.41)\n",
"Duncan (5.92, 0.43); (6.10, 0.62)\n",
"Molina S. (5.78, 0.38); (5.79, 0.37)\n",
"Kastanos (5.83, 0.45); (5.83, 0.40)\n",
"Valoti (5.78, 0.33); (5.72, 0.28)\n",
"Gaetano (6.03, 0.36); (6.09, 0.39)\n",
"Escalante (5.77, 0.42); (5.73, 0.35)\n",
"Bohinen (5.82, 0.38); (5.84, 0.38)\n",
"Terracciano F. (6.01, 0.30); (6.02, 0.34)\n",
"Milanese (5.88, 0.44); (5.93, 0.44)\n",
"Castagnetti (5.97, 0.33); (5.99, 0.34)\n",
"Listkowski (5.93, 0.32); (5.91, 0.30)\n",
"Adli (5.73, 0.33); (5.73, 0.32)\n",
"Hrustic (5.66, 0.42); (5.61, 0.36)\n",
"D'andrea (5.95, 0.34); (6.00, 0.43)\n",
"Benassi (5.77, 0.32); (5.77, 0.33)\n",
"Baez (5.92, 0.46); (5.97, 0.44)\n",
"Vignato (5.87, 0.33); (5.87, 0.32)\n",
"Obiang (5.86, 0.39); (5.84, 0.32)\n",
"Askildsen (5.84, 0.33); (5.78, 0.29)\n",
"Hongla (5.78, 0.37); (5.83, 0.45)\n",
"Yepes (6.04, 0.33); (6.10, 0.35)\n",
"Helgason (5.82, 0.33); (5.80, 0.29)\n",
"Bondo (5.91, 0.42); (5.94, 0.37)\n",
"Ellertsson (5.88, 0.38); (5.90, 0.34)\n",
"Capezzi (5.93, 0.33); (5.92, 0.30)\n",
"Jajalo (5.87, 0.33); (5.85, 0.30)\n",
"Machin (5.84, 0.41); (5.86, 0.39)\n",
"Bakayoko (5.80, 0.37); (5.74, 0.32)\n",
"Scozzarella (5.84, 0.41); (5.86, 0.39)\n",
"Fagioli (6.12, 0.46); (6.60, 0.94)\n",
"Demme (6.00, 0.37); (6.19, 0.57)\n",
"Akpa Akpro (5.90, 0.44); (5.95, 0.42)\n",
"Darboe (5.90, 0.43); (6.01, 0.43)\n",
"Bove (6.20, 0.36); (6.67, 0.90)\n",
"Urbanski (5.92, 0.41); (5.96, 0.41)\n",
"Bertini (5.94, 0.41); (5.99, 0.39)\n",
"Cortinovis (5.85, 0.39); (5.89, 0.42)\n",
"Romero L. (5.81, 0.31); (5.80, 0.31)\n",
"Bianco (5.92, 0.40); (5.98, 0.46)\n",
"Sher (5.96, 0.31); (5.94, 0.29)\n",
"Nguiamba (6.04, 0.37); (6.08, 0.34)\n",
"Volpato (6.23, 0.40); (7.16, 1.52)\n",
"Praszelik (6.00, 0.30); (5.98, 0.30)\n",
"Trimboli (5.85, 0.41); (5.90, 0.43)\n",
"Pafundi (5.93, 0.40); (5.98, 0.40)\n",
"Bjorkengren (5.94, 0.42); (6.00, 0.43)\n",
"Vignato S. (5.88, 0.43); (5.91, 0.41)\n",
"Samek (5.94, 0.42); (6.00, 0.43)\n",
"Zerbin (5.95, 0.35); (5.99, 0.38)\n",
"Ilkhan (5.75, 0.35); (5.71, 0.30)\n",
"Degli Innocenti (5.94, 0.46); (5.99, 0.44)\n",
"Fazzini (5.63, 0.48); (5.58, 0.38)\n",
"Acella (5.95, 0.43); (6.03, 0.48)\n",
"Tripi (5.92, 0.41); (5.95, 0.40)\n",
"Garbett (5.92, 0.41); (5.97, 0.43)\n",
"Iling-Junior (5.99, 0.50); (6.03, 0.45)\n",
"Immobile (6.49, 0.72); (8.44, 2.88)\n",
"Vlahovic (6.35, 0.70); (8.01, 2.47)\n",
"Rafael Leao (6.46, 0.68); (8.11, 2.48)\n",
"Martinez L. (6.32, 0.73); (8.24, 2.70)\n",
"Dybala (6.33, 0.61); (7.56, 1.93)\n",
"Arnautovic (6.23, 0.67); (7.74, 2.21)\n",
"Beto (6.20, 0.69); (7.68, 2.18)\n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Giroud (6.25, 0.68); (7.80, 2.27)\n",
"Osimhen (6.39, 0.71); (8.15, 2.58)\n",
"Deulofeu (6.42, 0.64); (7.86, 2.22)\n",
"Lukaku (6.47, 0.71); (8.41, 2.84)\n",
"Milik (6.18, 0.56); (7.02, 1.39)\n",
"Pedro (6.26, 0.61); (7.42, 1.81)\n",
"Abraham (6.23, 0.71); (7.87, 2.37)\n",
"Berardi (6.46, 0.68); (8.20, 2.60)\n",
"Dia (6.25, 0.69); (7.86, 2.33)\n",
"Lookman (6.44, 0.65); (8.01, 2.39)\n",
"Simeone (6.18, 0.73); (7.79, 2.32)\n",
"Correa (6.13, 0.59); (7.15, 1.63)\n",
"Zapata D. (6.39, 0.69); (8.22, 2.64)\n",
"Dzeko (6.30, 0.68); (7.94, 2.38)\n",
"Nzola (5.88, 0.43); (6.24, 0.84)\n",
"Sanabria (6.12, 0.58); (7.16, 1.62)\n",
"Muriel (6.36, 0.68); (7.99, 2.41)\n",
"Rebic (6.06, 0.49); (6.59, 1.03)\n",
"Bonazzoli (6.16, 0.60); (7.25, 1.71)\n",
"Caprari (6.36, 0.64); (7.86, 2.24)\n",
"Di Maria (6.08, 0.65); (6.81, 1.40)\n",
"Lozano (6.19, 0.58); (7.16, 1.57)\n",
"Ceesay (6.07, 0.55); (6.97, 1.44)\n",
"Pinamonti (6.11, 0.65); (7.38, 1.91)\n",
"Kouame' (6.19, 0.61); (7.36, 1.79)\n",
"Lauriente' (6.28, 0.69); (7.47, 1.95)\n",
"Jovic (6.02, 0.61); (6.88, 1.46)\n",
"Barrow (6.11, 0.61); (7.09, 1.58)\n",
"Henry (6.07, 0.63); (7.08, 1.64)\n",
"Piatek (6.03, 0.52); (6.87, 1.36)\n",
"Gonzalez N. (6.24, 0.64); (7.47, 1.89)\n",
"Dessers (6.09, 0.49); (6.91, 1.34)\n",
"Caputo (6.02, 0.64); (6.99, 1.58)\n",
"Raspadori (6.11, 0.67); (7.15, 1.70)\n",
"Lammers (5.92, 0.39); (6.09, 0.62)\n",
"Okereke (6.00, 0.55); (6.62, 1.19)\n",
"Cabral (6.08, 0.48); (6.86, 1.29)\n",
"Gabbiadini (6.10, 0.65); (7.24, 1.78)\n",
"Belotti (6.21, 0.66); (7.62, 2.11)\n",
"Origi (6.03, 0.56); (6.70, 1.22)\n",
"Botheim (5.97, 0.42); (6.39, 0.88)\n",
"Alvarez A. (6.13, 0.60); (7.13, 1.62)\n",
"Verde (6.25, 0.52); (7.14, 1.47)\n",
"Destro (6.06, 0.65); (7.23, 1.80)\n",
"Kean (6.02, 0.56); (6.70, 1.26)\n",
"Pellegri (5.84, 0.33); (5.91, 0.54)\n",
"Satriano (5.89, 0.45); (6.28, 0.89)\n",
"Success (6.24, 0.59); (7.14, 1.49)\n",
"Mota (5.84, 0.41); (6.25, 0.86)\n",
"Banda (5.98, 0.36); (6.06, 0.45)\n",
"Hojlund (6.01, 0.43); (6.54, 1.01)\n",
"Lasagna (5.89, 0.40); (6.19, 0.78)\n",
"Pjaca (5.99, 0.47); (6.45, 0.97)\n",
"Gytkjaer (5.85, 0.37); (6.14, 0.74)\n",
"Petagna (5.99, 0.54); (6.66, 1.23)\n",
"Nestorovski (6.07, 0.46); (6.53, 0.95)\n",
"Zanimacchia (5.97, 0.34); (6.06, 0.45)\n",
"Piccoli (5.70, 0.39); (5.67, 0.34)\n",
"Kallon (5.80, 0.36); (5.82, 0.40)\n",
"Ciofani D. (6.13, 0.41); (6.85, 1.25)\n",
"Di Francesco F. (6.13, 0.47); (6.73, 1.09)\n",
"Boga (5.98, 0.38); (6.02, 0.39)\n",
"Zirkzee (6.04, 0.53); (6.82, 1.31)\n",
"Quagliarella (5.88, 0.47); (6.24, 0.85)\n",
"Ibrahimovic (6.36, 0.65); (7.89, 2.28)\n",
"Shomurodov (6.04, 0.51); (6.80, 1.30)\n",
"Djuric (5.89, 0.30); (5.86, 0.30)\n",
"Strelec (5.77, 0.38); (5.95, 0.66)\n",
"Antiste (5.75, 0.37); (5.80, 0.49)\n",
"Seck (5.94, 0.33); (6.04, 0.51)\n",
"Buonaiuto (6.05, 0.36); (6.19, 0.46)\n",
"Sansone (6.00, 0.46); (6.40, 0.86)\n",
"Pussetto (5.99, 0.55); (6.67, 1.24)\n",
"Cambiaghi (5.91, 0.30); (5.89, 0.31)\n",
"Colombo (6.01, 0.49); (6.74, 1.24)\n",
"Afena-Gyan (5.87, 0.54); (6.22, 0.91)\n",
"Defrel (5.84, 0.42); (6.00, 0.63)\n",
"Karamoh (6.03, 0.33); (6.11, 0.39)\n",
"Cancellieri (6.19, 0.49); (6.76, 1.09)\n",
"Tsadjout (6.03, 0.42); (6.20, 0.57)\n",
"Rodriguez P. (5.92, 0.34); (5.94, 0.34)\n",
"Valencia D. (5.68, 0.32); (5.70, 0.29)\n",
"Edera (5.92, 0.43); (5.98, 0.47)\n",
"Oddei (6.12, 0.31); (6.11, 0.31)\n",
"Raimondo (5.95, 0.43); (6.02, 0.45)\n",
"Kristoffersen (5.89, 0.43); (5.94, 0.41)\n",
"Kaio Jorge (5.98, 0.36); (6.03, 0.39)\n",
"De Luca (5.86, 0.44); (5.92, 0.46)\n",
"Soule' (6.01, 0.45); (6.08, 0.39)\n",
"Lazetic (5.97, 0.41); (6.05, 0.46)\n",
"Voelkerling Persson (5.94, 0.44); (6.01, 0.45)\n",
"Sanca (5.91, 0.37); (5.94, 0.36)\n"
]
}
],
"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_old['games'])\n",
"\n",
"for i in range(players.shape[0]):\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",
" oldseason_ok = True\n",
" \n",
" try:\n",
" [mean, std, dist] = vote_predict_NNb(player, team, oppteam, home = home, oldseason = True)\n",
" games = max( players_old['games'][i], players_old['gk_games'][i] )\n",
" mins = max( players_old['minutes'][i], players_old['gk_minutes'][i] )\n",
" except:\n",
" [mean, std, dist] = vote_predict_NNb(player, team, oppteam, home = home)\n",
" oldseason_ok = False\n",
" games = 0\n",
" mins = 0\n",
" \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",
" 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 (not oldseason_ok):\n",
" starter = -1\n",
" voteperc = -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",
" \n",
" \n",
"\n",
"output = output.set_index('player')\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_season2122.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": 28,
"id": "7300f3c2",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Terracciano: MV 6.30 ± 0.71; FV 4.72 + 1.43 (5.7% cs)\n",
"Maignan: MV 6.27 ± 0.84; FV 5.66 + 1.16 (56.8% cs)\n",
"Tatarusanu: MV 6.22 ± 0.78; FV 5.53 + 1.19 (45.2% cs)\n",
"Handanovic: MV 5.89 ± 0.66; FV 3.40 + 1.88 (1.4% cs)\n",
"Onana: MV 6.32 ± 0.73; FV 5.05 + 1.33 (11.7% cs)\n",
"Sepe: MV 6.39 ± 0.74; FV 4.76 + 1.42 (6.4% cs)\n",
"Di Gregorio: MV 5.83 ± 0.80; FV 3.91 + 1.59 (4.5% cs)\n",
"Szczesny: MV 6.15 ± 0.77; FV 5.54 + 1.19 (47.8% cs)\n",
"Audero: MV 6.34 ± 0.77; FV 5.27 + 1.28 (17.9% cs)\n",
"Silvestri: MV 6.34 ± 0.71; FV 4.18 + 1.60 (2.7% cs)\n",
"Carnesecchi: MV 6.17 ± 0.82; FV 5.58 + 1.17 (56.1% cs)\n",
"Dragowski: MV 6.52 ± 0.82; FV 5.18 + 1.30 (13.1% cs)\n",
"Milinkovic-Savic V.: MV 6.27 ± 0.77; FV 4.90 + 1.38 (12.4% cs)\n",
"Sportiello: MV 6.32 ± 0.86; FV 5.06 + 1.31 (18.5% cs)\n",
"Falcone: MV 6.34 ± 0.79; FV 5.47 + 1.21 (34.2% cs)\n",
"Consigli: MV 6.12 ± 0.70; FV 4.86 + 1.35 (12.9% cs)\n",
"Vicario: MV 6.32 ± 0.85; FV 5.64 + 1.17 (51.2% cs)\n"
]
},
{
"data": {
"text/plain": [
"[array([6.31691631, 5.6403682 ]),\n",
" array([0.42497158, 0.58689165], 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": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict_player('Terracciano', log = 1, plot = 0)\n",
"predict_player('Maignan', log = 1, plot = 0)\n",
"predict_player('Tatarusanu', log = 1, plot = 0)\n",
"predict_player('Handanovic', log = 1, plot = 0)\n",
"predict_player('Onana', log = 1, plot = 0)\n",
"predict_player('Sepe', log = 1, plot = 0)\n",
"predict_player('Di Gregorio', log = 1, plot = 0)\n",
"predict_player('Szczesny', log = 1, plot = 0)\n",
"predict_player('Audero', log = 1, plot = 0)\n",
"predict_player('Silvestri', log = 1, plot = 0)\n",
"predict_player('Carnesecchi', log = 1, plot = 0)\n",
"predict_player('Dragowski', log = 1, plot = 0)\n",
"predict_player('Milinkovic-Savic V.', log = 1, plot = 0)\n",
"predict_player('Sportiello', log = 1, plot = 0)\n",
"predict_player('Falcone', log = 1, plot = 0)\n",
"predict_player('Consigli', log = 1, plot = 0)\n",
"predict_player('Vicario', 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": 35,
"id": "4b9f5a7d",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Skriniar: MV 6.06 ± 0.88; FV 6.21 + 1.04\n",
"Cuadrado: MV 6.11 ± 0.82; FV 6.33 + 1.20\n",
"Bastoni: MV 6.10 ± 0.80; FV 6.23 + 0.95\n",
"Barak: MV 6.08 ± 1.33; FV 7.10 + 3.33\n",
"Politano: MV 6.08 ± 0.74; FV 6.35 + 1.22\n",
"Smalling: MV 6.18 ± 0.92; FV 6.51 + 1.54\n",
"Gosens: MV 6.02 ± 0.66; FV 6.08 + 0.75\n",
"Skriniar: MV 5.75 ± 0.68; FV 5.70 + 0.58\n",
"Cuadrado: MV 5.82 ± 0.95; FV 5.80 + 0.92\n",
"Bastoni: MV 5.84 ± 0.91; FV 5.86 + 0.82\n",
"Barak: MV 5.76 ± 0.70; FV 5.75 + 0.72\n",
"Politano: MV 6.19 ± 0.77; FV 6.62 + 1.48\n",
"Smalling: MV 6.17 ± 1.06; FV 6.60 + 1.91\n",
"Gosens: MV 5.75 ± 0.65; FV 5.80 + 0.85\n"
]
},
{
"data": {
"text/plain": [
"[array([5.75403311, 5.80380687]),\n",
" array([0.3249786 , 0.42722106], 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": 35,
"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": 43,
"id": "10c7ad3e",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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igDE69evl09QEijodbh586ZYtWpV8e+//xZDQkLE//u//yv32B6nwtaM6HQ6REdHIywszGp7WFgYDh06JFFUFUNqaioAwMvLS+JIyt+bb76Jvn37onv37lKHIplNmzahZcuWeOGFF+Dn54dmzZph4cKFUodV7tq3b4+dO3fi4sWLAIDTp0/jwIED6NOnj8SRSSc2NhYJCQlWvzfVajU6derE35upqRAEodLVIJpMJgwfPhyTJk1Cw4YNpQ6nQDZPB19ekpKSYDQa89wN2N/fP89dgCsTURQRHh6O9u3bo1GjRlKHU65++eUXREdH4/jx41KHIqmrV69i/vz5CA8Px0cffYSjR4/i7bffhlqttrovlKP74IMPkJqainr16kEul8NoNOKLL77ASy+9JHVoksn93Zjf783r169LEVKFkJOTgw8//BBDhw6tdHfx/eqrr6BQKPD2229LHUqhKmwykksQBKvHoijm2VaZjB8/HmfOnMGBAwekDqVc3bhxA++88w62b98OjUYjdTiSMplMaNmyJaZPnw4AaNasGc6dO4f58+dXqmQkKioKK1aswM8//4yGDRvi1KlTmDBhAoKCgjBy5Eipw5MUf28+oNfr8eKLL8JkMmHevHlSh1OuoqOj8c033+DEiRMV/v+/wjbT+Pj4QC6X56kFSUxMzJP1VxZvvfUWNm3ahN27d6NatWpSh1OuoqOjkZiYiBYtWkChUEChUGDv3r349ttvoVAoYDQapQ6x3AQGBqJBgwZW2+rXr1/pOnZPmjQJH374IV588UU0btwYw4cPx8SJExEZGSl1aJIJCAgAAP7e/Jder8fgwYMRGxuLHTt2VLpakf379yMxMRHVq1e3/N68fv063n33XdSoUUPq8KxU2GREpVKhRYsW2LFjh9X2HTt2oG3bthJFJQ1RFDF+/HisW7cOu3btQmhoqNQhlbtu3brh7NmzOHXqlGVp2bIlhg0bhlOnTkEul0sdYrlp165dnqHdFy9etNw5u7LIysqCTGb9K0wulzv80N7ChIaGIiAgwOr3pk6nw969eyvd783cROTSpUv4888/4e3tLXVI5W748OE4c+aM1e/NoKAgTJo0CX/88YfU4Vmp0M004eHhGD58OFq2bIk2bdrghx9+QFxcHMaOHSt1aOXqzTffxM8//4yNGzfCzc3N8lePh4cHnJycJI6ufLi5ueXpI+Pi4gJvb+9K13dm4sSJaNu2LaZPn47Bgwfj6NGj+OGHH/DDDz9IHVq56t+/P7744gtUr14dDRs2xMmTJzFr1iyMHj1a6tDKVEZGBi5fvmx5HBsbi1OnTsHLywvVq1fHhAkTMH36dNSuXRu1a9fG9OnT4ezsjKFDh0oYdekr7HUICgrCoEGDcOLECWzevBlGo9Hye9PLywsqlUqqsEvd494PjyZhSqUSAQEBqFu3bnmHWjhpB/M83ty5c8WQkBBRpVKJzZs3r5TDWQHkuyxZskTq0CRVWYf2iqIo/vbbb2KjRo1EtVot1qtXT/zhhx+kDqncpaWlie+8845YvXp1UaPRiDVr1hQnT54sarVaqUMrU7t3787398HIkSNFUTQP750yZYoYEBAgqtVqsWPHjuLZs2elDboMFPY6xMbGFvh7c/fu3VKHXqoe9354VEUd2iuIoiiWU95DRERElEeF7TNCRERElQOTESIiIpIUkxEiIiKSFJMRIiIikhSTESIiIpIUkxEiIiKSFJMRIiIikhSTESIiIpIUkxEiIiKSFJMRIiIikhSTESIiIpLU/wPCfvYmymw15AAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 640x480 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Rafael Leao: MV 6.42 ± 1.42; FV 8.07 + 4.99\n"
]
},
{
"data": {
"text/plain": [
"[array([6.42145212, 8.06743462]),\n",
" array([0.70793724, 2.49473 ], 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": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predict_player('Rafael Leao', plot = 1, alog = 1)"
]
},
{
"cell_type": "markdown",
"id": "0a5de8a1",
"metadata": {},
"source": [
"Code for predicting the probability distribution of total team points"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "65f9a572",
"metadata": {},
"outputs": [],
"source": [
"squad = ['Falcone',\n",
" 'Valeri',\n",
" 'Di Lorenzo',\n",
" 'Parisi',\n",
" 'Mario Rui',\n",
" 'Strefezza',\n",
" 'Frattesi',\n",
" 'Felipe Anderson',\n",
" 'Beto',\n",
" 'Abraham',\n",
" 'Nzola']\n",
"\n",
"\n",
"dist = [None] * len(squad)\n",
"\n",
"defenders = list([0]) * len(squad)\n",
"\n",
"\n",
"for i in range(len(squad)):\n",
" [X, y, dist[i]] = predict_player(squad[i], plot = 0, log = 0) \n",
" \n",
" if(players['r'][squad[i]] == 'D'):\n",
" defenders[i] = 1"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "2e78f674",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Avg Total Points = 75.96627577018738\n",
"Avg Mod Points = 1.478\n",
"Avg Clean Sheets = 0.364\n"
]
}
],
"source": [
"ITERS = 500\n",
"\n",
"MOD = True\n",
"\n",
"total_points = np.zeros(ITERS)\n",
"clean_sheets = np.zeros(ITERS)\n",
"mod_points = np.zeros(ITERS)\n",
"\n",
"mv_samples = [None] * len(squad)\n",
"fv_samples = [None] * len(squad)\n",
"\n",
"for i in range(len(squad)):\n",
" mv_samples[i] = dist[i][0].sample(ITERS)\n",
" fv_samples[i] = dist[i][1].sample(ITERS)\n",
" \n",
"cs_samples = dist[0][2].sample(ITERS)\n",
"\n",
"for k in range(ITERS):\n",
" d_points = list([0]) * len(squad)\n",
" \n",
" cleansheet = float(cs_samples[k])\n",
" total_points[k] += cleansheet\n",
" clean_sheets[k] += cleansheet\n",
" \n",
" for i in range(len(squad)): \n",
" if(defenders[i] == 1):\n",
" d_points[i] = float(mv_samples[i][k])\n",
"\n",
" total_points[k] += float(fv_samples[i][k])\n",
" \n",
" d_points.sort(reverse = True)\n",
"\n",
" if(MOD and d_points[3] > 0): # minimum 3 defenders to get MOD\n",
" mod_avg = 0\n",
" for j in range(3):\n",
" mod_avg += round(d_points[j] * 2) / 2\n",
" mod_avg /= 3\n",
"\n",
" if(mod_avg >= 7):\n",
" mod_points[k] = 6\n",
" elif(mod_avg >= 6.5):\n",
" mod_points[k] = 3\n",
" elif(mod_avg >= 6):\n",
" mod_points[k] = 1\n",
"\n",
" total_points[k] += mod_points[k]\n",
" \n",
" \n",
"print('Avg Total Points = ' + str(total_points.mean()))\n",
"print('Avg Mod Points = ' + str(mod_points.mean()))\n",
"print('Avg Clean Sheets = ' + str(clean_sheets.mean()))\n"
]
},
{
"cell_type": "code",
"execution_count": 32,
"id": "c5d752d8",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x1bd182418b0>"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"loc_0 = total_points.mean()\n",
"\n",
"squad_model = tf.keras.Sequential(\n",
" [\n",
" tf.keras.layers.Dense(3),\n",
" tfp.layers.DistributionLambda(\n",
" lambda t: tfp.distributions.SinhArcsinh(loc= loc_0 + t[..., 0], scale = 1e-3 + tf.math.softplus(t[..., 1]), \n",
" skewness = t[..., 2], tailweight = 0.8) # fixed tailweight seems ok\n",
" )\n",
" ]\n",
")\n",
"\n",
"def negloglik(y, distr):\n",
" return -distr.log_prob(y)\n",
"\n",
"squad_model.compile(optimizer=tf.optimizers.Adam(learning_rate=1), loss=negloglik)\n",
"\n",
"dummy_input = np.zeros(total_points.shape)[:, np.newaxis]\n",
"squad_model.fit(dummy_input, total_points, epochs=100, verbose=False)"
]
},
{
"cell_type": "code",
"execution_count": 33,
"id": "9754ec4c",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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GiE9cuQINm7ciMjISI16vXv31ni+YsUK2Nvb4/z586hfv75UPmbMGPTq1avI/hYuXIjQ0FB8+OGHAIBx48bh77//xsKFC9GmTZsizztz5gzMzc2hVqulKcyjRo2CmZlZaS+ZiKhc4wgrERERVRq2trbo0qULVq9ejfDwcHTp0gW2trYF6l25cgUDBgxAzZo1YWlpiRo1agAAkpOTNer5+voW219CQgJatGihUdaiRQskJCQUe56Hhwfi4+MRGxuLL774Ao0bN8YXX3xRkkskIqpQOMJKRERElcq7776LkSNHAgC+//77Qut069YNLi4uWLZsGZydnaFWq1G/fn3k5uZq1CvJiKdMJtN4LoQoUPYsQ0NDuLu7A8hfgOnSpUv44IMPpPtf9fT0IITQOCcvL++5sRARlTccYSUiIqJKpWPHjsjNzUVubm6h953evXsXCQkJmDZtGtq2bQtPT0+kp6e/UF+enp44fPiwRll0dDQ8PT1L1c706dOxYcMGnDhxAgBgZ2eHlJQUjTrx8fEvFCMRkS7jCCuRjjEwMMAHH3wg/UxERGVLLpdLU3ILW8TI2toaNjY2+Omnn+Dk5ITk5GRMmjTphfqaOHEi+vbtC29vb7Rt2xa//fYbtm7din379pWqnZo1a6JHjx747LPPsHPnTrz11ltYsGAB1qxZAz8/P/z88884e/ZsgdWOiYjKO46wEukYmUwGe3t72NvbP3fKGBERvRhLS0tYWloWekxPTw8bN25EXFwc6tevj7Fjx2LBggUv1E9QUBC+/vprLFiwAPXq1cOPP/6I8PBwje1nSmr8+PH4/fffcfToUXTo0AHTp0/HJ598gqZNm+LBgwcYPHjwC8VIRKTLZOLZGyDKqczMTCgUCmRkZBT5BkRERPQsvn8QERHpLk4JJtIxKpUKUVFRAICAgADuuUdERERElRYTViIdo1KpcOjQIQCAv78/E1YiIiIiqrR4DysRERERERHpJCasREREREREpJOYsBIRERG9Aj/99BNcXFygp6eHxYsXazscIqJyiQkrERERVQqpqal4//33Ub16dRgZGcHR0REdOnRATEwMgPxtxbZv314mfWVmZmLkyJH49NNPcePGDQwfPrxM2iUiqmy46BIRERFVCr1790ZeXh5Wr16NmjVr4vbt29i/fz/u3btX4jby8vJgYGDw3HrJycnIy8tDly5d4OTk9DJhExFVahxhJSIiogrv/v37OHz4MObNm4c2bdrA1dUVb7zxBiZPnowuXbrAzc0NANCzZ0/IZDLpeVhYGBo3boyVK1eiZs2aMDIyghACGRkZGD58OOzt7WFpaYm33noLp06dAgCsWrUKDRo0AADUrFkTMpkMSUlJAIDffvsNPj4+MDY2Rs2aNTFz5kwolUrpPJlMVuARFhYGAIUeexKnSqXC0KFDUaNGDZiYmMDDwwNff/31a/ndEhG9ShxhJdIx+vr6eO+996SfiYjo5Zmbm8Pc3Bzbt29H8+bNYWRkpHE8NjYW9vb2CA8PR8eOHTW2FLt8+TI2bdqELVu2SOVdunRBlSpVsGvXLigUCvz4449o27YtLl68iODgYLi4uCAwMBDHjh2Di4sL7Ozs8Mcff2DgwIH45ptvEBAQgCtXrkhThWfMmIHg4GB07NhR6jcyMhKDBg1CixYtAAApKSnSsezsbHTs2BF+fn4AALVajWrVqmHTpk2wtbVFdHQ0hg8fDicnJ/Tt2/fV/FKJiF4DmRBCaDuIspCZmQmFQoGMjAxYWlpqOxwiIion+P5ReWzZsgXDhg3Do0eP4O3tjVatWqFfv35o2LAhgPwRzG3btiEoKEg6JywsDLNnz8aNGzdgZ2cHADhw4AB69uyJ1NRUjcTX3d0dn3zyCYYPH474+Hg0adIEiYmJ0ihoy5Yt0alTJ0yePFk65+eff8Ynn3yCmzdvasR65coVNGvWDJ9++ikmTpyocUwIgd69eyM5ORlRUVEwMTEp9Ho/+ugj3L59G5s3b37h3xkRkbZx+IaIiIgqhd69e6NLly6IiopCTEwM9uzZg/nz52P58uUIDQ0t8jxXV1cpWQWAuLg4ZGVlwcbGRqPeo0ePcOXKlSLbiYuLQ2xsLL744gupTKVS4fHjx3j48CFMTU0BABkZGejatSs6depUIFkFgClTpiAmJgaxsbEayeoPP/yA5cuX49q1a3j06BFyc3PRuHHj5/1aiIh0GhNWIh2jUqnw999/AwCaN2+uMS2NiIhejrGxMdq1a4d27drhs88+w3vvvYcZM2YUm7CamZlpPFer1XByckJkZGSBulZWVkW2o1arMXPmTPTq1avQuID894Dg4GBYWlpi2bJlBer9/PPP+OqrrxAZGYlq1apJ5Zs2bcLYsWOxaNEi+Pn5wcLCAgsWLMDRo0eLjIeIqDxgwkqkY1QqFfbt2wcAaNq0KRNWIqJXyMvLS9rKxsDAACqV6rnneHt749atW9DX15em+5aEt7c3Lly4AHd39yLrjB07FmfOnEFsbKyUxD4RExOD9957Dz/++COaN2+ucSwqKgr+/v748MMPpbLiRnuJiMoLJqxERERU4d29exdvv/023n33XTRs2BAWFhY4fvw45s+fjx49egAA3NzcsH//frRo0QJGRkawtrYutK3AwED4+fkhKCgI8+bNg4eHB27evIldu3YhKCgIvr6+hZ732WefoWvXrnBxccHbb78NPT09nD59GmfOnMH//d//ITw8HEuWLMG2bdugp6eHW7duAchfMCorKws9e/ZEv3790KFDB+mYXC6HnZ0d3N3dsWbNGvzxxx+oUaMG1q5di9jYWNSoUeMV/DaJiF4fbmtDREREFZ65uTmaNWuGr776Ci1btkT9+vUxffp0DBs2DN999x0AYNGiRdi7dy9cXFzQpEmTItuSyWTYtWsXWrZsiXfffRd16tRBv379kJSUBAcHhyLP69ChA3bu3Im9e/eiadOmaN68Ob788ku4uroCAA4dOgSVSoXu3bvDyclJeixcuBD//PMPbt++jdWrV2sca9q0KQBgxIgR6NWrF4KDg9GsWTPcvXtXY7SViKi84irBRDomNzcXc+bMAQBMnjwZhoaGWo6IqGLj+wcREZHu4ggrERERERER6SQmrERERERERKSTmLASERERERGRTuIqwUQ6Rl9fH++88470MxERERFRZcVPw0Q6Rk9Pr1T7+hERERERVVScEkxERESkw1q3bo0xY8ZoOwwiIq1gwkqkY1QqFY4dO4Zjx45BpVJpOxwiogohNDQUMpmswOPy5csv1N6qVatgZWVVoNzNzQ2LFy9+uWCfsXXrVnz++edl2iYRUXnBKcFEOkalUmH37t0AgMaNG0Mul2s5IiKiiqFjx44IDw/XKLOzs9N4npubq3P7X1epUkXbIRARaQ1HWImIiKhSMDIygqOjo8ajbdu2GDlyJMaNGwdbW1u0a9cOAPDll1+iQYMGMDMzg4uLCz788ENkZWUBACIjIzFkyBBkZGRII7VhYWFo3bo1rl27hrFjx0rlT0RHR6Nly5YwMTGBi4sLRo0ahezsbOn4kiVLULt2bRgbG8PBwQF9+vSRjnFKMBFVZkxYiYiIqFJb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NWV45plnMH/+fEydOhXx8fF49NFHMXfuXNdqBDVliYuLw+7du1FTU4Pi4mIcOHAANpsNMTExqsrRoiM1m0wmNDU1oaKi4pJz1EBNOWw2Gx588EEUFhYiNTXVdXUVUFcOIiKirkxVDeudd96JnJwcZGdnu16JiYl4+OGHkZ2djdjYWJhMJtcur0DzPYm7d+9GUlKSjJVfXmNjI/Ly8hAeHu76QK6GDMOGDcOxY8dajR0/fhzR0dEAoKosAPDee+8hNDQU48ePd42pKUNdXR00mtb/SWu1WtdjbdSUpYW3tzfCw8NRUVGB7du3495771Vljo7UPHjwYOj1+lZzLBYLfv75Z8Xmao9acrQ0q/n5+di5cyeCg4NbHVdLDiIioi5Prt2erpaLdwkWQoilS5cKf39/sWnTJpGTkyOmTZsmwsPDRVVVlXxF/sZf//pXsWvXLlFQUCD27dsnJkyYIHx9fcXJkyeFEOrIIETzrpo6nU4sXrxY5Ofni48++kh4eXmJ9evXu+aoJYvD4RBRUVFi3rx5bY6pJcPjjz8uIiIixFdffSUKCwvFpk2bREhIiHj22Wddc9SSZdu2bWLr1q2ioKBA7NixQyQkJIhbbrlFNDU1CSGUmaO6ulpkZWWJrKwsAUC89tprIisry7XrbEdqTk5OFpGRkWLnzp3i4MGD4g9/+INISEgQdrtdMTnKy8tFVlaW+PrrrwUAsWHDBpGVlSUsFotqcthsNjFx4kQRGRkpsrOzhcVicb0aGxsVlYOIiMjddbmG1el0ioULFwqTySQMBoMYMWKEyMnJka/AdkyZMkWEh4cLvV4vzGazuP/++0Vubq7ruBoytPjyyy9Fv379hMFgEL179xarV69udVwtWbZv3y4AiGPHjrU5ppYMVVVVYvbs2SIqKkp4enqK2NhY8dxzz7X6AK6WLBs3bhSxsbHCw8NDmEwmMWvWLFFZWek6rsQc33//vQDQ5vX44493uOb6+nrx5JNPiqCgIGE0GsWECRNEUVGRonK899577R5fuHChanK0PJKnvdf333+vqBxERETuThJCiOtwIZeIiIiIiIioU1R1DysRERERERG5DzasREREREREpEhsWImIiIiIiEiR2LASERERERGRIrFhJSIiIiIiIkViw0pERERERESKxIaViIiIiIiIFIkNKxERERERESkSG1YiIiIiIiJSJDasREREREREpEhsWImIiIiIiEiR/j8nSGvuU2s8yQAAAABJRU5ErkJggg==\n",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"squad_points_dist = squad_model(np.zeros(1)[:, np.newaxis])\n",
"\n",
"\n",
"x = np.arange(start = 0, stop = 200, step = 0.001)\n",
"prb = squad_points_dist.prob(x)\n",
"\n",
"mn = total_points.mean()\n",
"\n",
"f, ax = plt.subplots(1, 2)\n",
"\n",
"ax[0].plot(x, prb)\n",
"ax[0].fill_between(x, prb, color = 'lightblue')\n",
"ax[0].vlines(x = mn, color = 'grey', ymin = 0, ymax = 3, linestyle = 'dashed', label = 'mean = ' + \"{:.2f}\".format(mn))\n",
"\n",
"ax[0].set_xlim([40, 120])\n",
"ax[0].set_ylim([0, 0.12])\n",
"\n",
"ax[0].legend()\n",
"\n",
"#ax[0].hist(total_points, bins = 20, density = True)\n",
"\n",
"\n",
"ax[1].text(0.1, 0.8, \"\\n\".join(squad), fontsize=10, transform=ax[1].transAxes, verticalalignment = 'top')\n",
"\n",
"text = \"\\n\".join(['Avg Total Points = ' + \"{:.2f}\".format(total_points.mean()), \n",
" 'Avg Mod Points = ' + \"{:.2f}\".format(mod_points.mean()), \n",
" 'Avg Clean Sheets = ' + \"{:.2f}\".format(clean_sheets.mean())])\n",
"\n",
"ax[1].text(0.5, 0.8, text, fontsize=10, transform=ax[1].transAxes, verticalalignment = 'top')\n",
"\n",
"ax[1].axis('off')\n",
"\n",
"\n",
"\n",
"plt.subplots_adjust(right=1.5)\n",
"\n",
"plt.show()"
]
},
{
"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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\n",
"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": "268c05e5",
"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
}