{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## ATTEMPT AT MAKING AN EXPECTED GOALS MODEL" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### DATA EXPLORATION" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start off by importing pandas library to handle the data" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reading in the data into a DataFrame" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "df = pd.read_excel('xgl.xlsx')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The data has quire a few columns related to shots" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
XYa_goalsa_teamdateh_ah_goalsh_teamidlastActionmatch_idminuteplayerplayer_assistedplayer_idresultseasonshotTypesituation
00.7070.3790Hoffenheim2015-08-29 17:30:00h0Darmstadt76737Aerial104493György GaricsNaN2MissedShots2015RightFootFromCorner
10.7280.3731Darmstadt2015-09-12 17:30:00a0Bayer Leverkusen76808Pass10531György GaricsKonstantin Rausch2SavedShot2015RightFootSetPiece
20.0160.4640Darmstadt2015-11-01 18:30:00a2VfB Stuttgart78492Foul111867György GaricsNaN2OwnGoal2015HeadSetPiece
30.8750.5212Darmstadt2015-12-20 20:30:00a3Borussia M.Gladbach79876Aerial117358György GaricsNaN2MissedShots2015HeadFromCorner
00.9270.5572Werder Bremen2014-12-07 16:30:00a5Eintracht Frankfurt27374Pass532078Luca CaldirolaFin Bartels3Goal2014LeftFootOpenPlay
\n", "
" ], "text/plain": [ " X Y a_goals a_team date h_a h_goals \\\n", "0 0.707 0.379 0 Hoffenheim 2015-08-29 17:30:00 h 0 \n", "1 0.728 0.373 1 Darmstadt 2015-09-12 17:30:00 a 0 \n", "2 0.016 0.464 0 Darmstadt 2015-11-01 18:30:00 a 2 \n", "3 0.875 0.521 2 Darmstadt 2015-12-20 20:30:00 a 3 \n", "0 0.927 0.557 2 Werder Bremen 2014-12-07 16:30:00 a 5 \n", "\n", " h_team id lastAction match_id minute player \\\n", "0 Darmstadt 76737 Aerial 1044 93 György Garics \n", "1 Bayer Leverkusen 76808 Pass 1053 1 György Garics \n", "2 VfB Stuttgart 78492 Foul 1118 67 György Garics \n", "3 Borussia M.Gladbach 79876 Aerial 1173 58 György Garics \n", "0 Eintracht Frankfurt 27374 Pass 5320 78 Luca Caldirola \n", "\n", " player_assisted player_id result season shotType situation \n", "0 NaN 2 MissedShots 2015 RightFoot FromCorner \n", "1 Konstantin Rausch 2 SavedShot 2015 RightFoot SetPiece \n", "2 NaN 2 OwnGoal 2015 Head SetPiece \n", "3 NaN 2 MissedShots 2015 Head FromCorner \n", "0 Fin Bartels 3 Goal 2014 LeftFoot OpenPlay " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
XYa_goalsh_goalsidmatch_idminuteplayer_idseason
count226499.000000226499.000000226499.000000226499.000000226499.000000226499.000000226499.000000226499.000000226499.000000
mean0.8402790.5042041.2026061.564700115749.6397644913.07940048.4766162225.0268522015.729778
std0.0909280.1321191.1725511.34020668962.7919592932.81604226.5797041675.1443621.287854
min0.0030000.0010000.0000000.0000001.00000081.0000000.0000002.0000002014.000000
25%0.7750000.4100000.0000001.00000056663.5000002353.00000026.000000807.0000002015.000000
50%0.8590000.5020001.0000001.000000113368.0000004795.00000049.0000001933.0000002016.000000
75%0.9070000.5990002.0000002.000000170021.5000007515.00000071.0000003258.0000002017.000000
max0.9990000.9970009.00000010.000000243199.00000010792.000000103.0000007255.0000002018.000000
\n", "
" ], "text/plain": [ " X Y a_goals h_goals \\\n", "count 226499.000000 226499.000000 226499.000000 226499.000000 \n", "mean 0.840279 0.504204 1.202606 1.564700 \n", "std 0.090928 0.132119 1.172551 1.340206 \n", "min 0.003000 0.001000 0.000000 0.000000 \n", "25% 0.775000 0.410000 0.000000 1.000000 \n", "50% 0.859000 0.502000 1.000000 1.000000 \n", "75% 0.907000 0.599000 2.000000 2.000000 \n", "max 0.999000 0.997000 9.000000 10.000000 \n", "\n", " id match_id minute player_id \\\n", "count 226499.000000 226499.000000 226499.000000 226499.000000 \n", "mean 115749.639764 4913.079400 48.476616 2225.026852 \n", "std 68962.791959 2932.816042 26.579704 1675.144362 \n", "min 1.000000 81.000000 0.000000 2.000000 \n", "25% 56663.500000 2353.000000 26.000000 807.000000 \n", "50% 113368.000000 4795.000000 49.000000 1933.000000 \n", "75% 170021.500000 7515.000000 71.000000 3258.000000 \n", "max 243199.000000 10792.000000 103.000000 7255.000000 \n", "\n", " season \n", "count 226499.000000 \n", "mean 2015.729778 \n", "std 1.287854 \n", "min 2014.000000 \n", "25% 2015.000000 \n", "50% 2016.000000 \n", "75% 2017.000000 \n", "max 2018.000000 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
a_teamh_ah_teamlastActionplayerplayer_assistedresultshotTypesituation
count226499226499226499226499226499165662226499226499226499
unique16021603948464839645
topReal MadridhReal MadridPassCristiano RonaldoDimitri PayetMissedShotsRightFootOpenPlay
freq239112541524378011088953589945118641166304
\n", "
" ], "text/plain": [ " a_team h_a h_team lastAction player \\\n", "count 226499 226499 226499 226499 226499 \n", "unique 160 2 160 39 4846 \n", "top Real Madrid h Real Madrid Pass Cristiano Ronaldo \n", "freq 2391 125415 2437 80110 889 \n", "\n", " player_assisted result shotType situation \n", "count 165662 226499 226499 226499 \n", "unique 4839 6 4 5 \n", "top Dimitri Payet MissedShots RightFoot OpenPlay \n", "freq 535 89945 118641 166304 " ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe(include=['O'])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dataset has around 226,500 shots which aren't really a lot but enough to have a basic model running." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": false }, "outputs": [ { "data": { "text/plain": [ "Index(['X', 'Y', 'a_goals', 'a_team', 'date', 'h_a', 'h_goals', 'h_team', 'id',\n", " 'lastAction', 'match_id', 'minute', 'player', 'player_assisted',\n", " 'player_id', 'result', 'season', 'shotType', 'situation'],\n", " dtype='object')" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### PRE-PROCESSING" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The X & Y co-ordinates present in the data are scaled from 0 to 1 so I had to find a suitable multipliying factor. The field was considered to be of dimensions of 104*76 yards.\n", "The co-ordinates were scaled acccordingly." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df['X'] = df['X']*104\n", "df['Y'] = df['Y']*76" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try and plot the shot locations" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Arc\n", "\n", "fig=plt.figure()\n", "#fig,ax = plt.subplots(figsize=(10.4,7.6))\n", "ax=fig.add_subplot(1,1,1)\n", "ax.axis('off')\n", "\n", "plt.plot([0,104],[0,0],color=\"black\")\n", "plt.plot([0,0],[76,0],color=\"black\")\n", "plt.plot([0,104],[76,76],color=\"black\")\n", "plt.plot([104,104],[76,0],color=\"black\")\n", "plt.plot([52,52],[0,76],color=\"black\")\n", "\n", "plt.plot([104,86.32],[60,60],color=\"black\")\n", "plt.plot([86.32,104],[16,16],color=\"black\")\n", "plt.plot([86.32,86.32],[60,16],color=\"black\")\n", "plt.plot([104,97.97],[48,48],color=\"black\")\n", "plt.plot([104,97.97],[27.968,27.968],color=\"black\")\n", "plt.plot([97.97,97.97],[48,27.968],color=\"black\")\n", "\n", "plt.plot([104,104],[34,42],color=\"red\")\n", "\n", "penaltySpot = plt.Circle((92.04,38),0.25,color=\"black\")\n", "centreSpot = plt.Circle((52,38),0.5,color=\"black\")\n", "centreCircle = plt.Circle((52,38),10,color=\"black\",fill=False)\n", "\n", "D = Arc((92.04,38),height=20,width=20,angle=0,theta1=125,theta2=235,color=\"black\")\n", "\n", "ax.add_patch(centreSpot)\n", "ax.add_patch(centreCircle)\n", "ax.add_patch(penaltySpot)\n", "ax.add_patch(D)\n", "\n", "\n", "plt.scatter(df['X'],df['Y'])\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "All the shots are when the team is attacking from right to left. The shots on the left end of the pitch are perhaps own goals that will have to be removed." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We know that distance is a major factor for shots to be converted into goals and thus I added a distance feature. The distance will be measured from the shot location to the centre of the goal." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "df['distance'] = (((df['X']-104)**2 + (df['Y']-38)**2)**(1/2))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another important factor to be taken into account is the angle of view the striker has. A smaller angle will obviously minimize the chance of a shot being converted into a goal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We use trigonometry to find the angle extended by both the goal posts onto the shot location.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "cos c = (A^2+B^2-C^2)/2*A*B" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib.image as mpimg\n", "image = mpimg.imread(\"angle.jpg\")\n", "plt.imshow(image)\n", "plt.axis('off')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Pardon my paint skills, but the diagram above explains the angle c we are trying to find. The Red Dot is the shot location and the rectangle on the right is the goalmouth." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Below, I find the distance between the goal posts and the shot location and use it to find the angle extended by the goal onto the shot location." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "import math\n", "temp = pd.DataFrame()\n", "temp['a'] = ((df['X']-104)**2 + (df['Y']-42)**2)\n", "temp['b'] = ((df['X']-104)**2 + (df['Y']-34)**2)\n", "df['angle'] = (temp['a']+temp['b']-144)/(2*temp['a']*temp['b'])\n", "df['angle'] = df['angle'].apply(math.acos)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Distance and Angle have been added as columns to the DataFrame." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Index(['X', 'Y', 'a_goals', 'a_team', 'date', 'h_a', 'h_goals', 'h_team', 'id',\n", " 'lastAction', 'match_id', 'minute', 'player', 'player_assisted',\n", " 'player_id', 'result', 'season', 'shotType', 'situation', 'distance',\n", " 'angle'],\n", " dtype='object')" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the columns in the categs list are actually categories, we convert them into categories." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "categs = ['lastAction','result','shotType', 'situation']\n", "for categ in categs:\n", " df[categ] = df[categ].astype('category')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let us have a look at the categories for each specific feature." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "lastAction\n", "Index(['Aerial', 'BallRecovery', 'BallTouch', 'BlockedPass', 'Card',\n", " 'Challenge', 'ChanceMissed', 'Chipped', 'Clearance', 'CornerAwarded',\n", " 'Cross', 'CrossNotClaimed', 'Dispossessed', 'End', 'Error',\n", " 'FormationChange', 'Foul', 'Goal', 'GoodSkill', 'HeadPass',\n", " 'Interception', 'KeeperPickup', 'KeeperSweeper', 'LayOff', 'None',\n", " 'OffsidePass', 'OffsideProvoked', 'Pass', 'PenaltyFaced', 'Punch',\n", " 'Rebound', 'Save', 'ShieldBallOpp', 'Standard', 'Start',\n", " 'SubstitutionOn', 'Tackle', 'TakeOn', 'Throughball'],\n", " dtype='object')\n", "result\n", "Index(['BlockedShot', 'Goal', 'MissedShots', 'OwnGoal', 'SavedShot',\n", " 'ShotOnPost'],\n", " dtype='object')\n", "shotType\n", "Index(['Head', 'LeftFoot', 'OtherBodyPart', 'RightFoot'], dtype='object')\n", "situation\n", "Index(['DirectFreekick', 'FromCorner', 'OpenPlay', 'Penalty', 'SetPiece'], dtype='object')\n" ] } ], "source": [ "for categ in categs:\n", " print(categ)\n", " print(df[categ].cat.categories)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Before we can train the model, we need to remove any OwnGoals that might spoil the model and thus, we do so." ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "df = df[df['result'] != 'OwnGoal']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Introducing a binary column by the name of Goal." ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "df['goal'] = (df['result'] == 'Goal')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "One Hot Encoding for the situation column is done in the DataFrame so that Logistic Regression might not misinterpret the situations as something of different weightages.\n", "\n", "LabelBinarizer from sklearn is used to carry out the one hot encoding." ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "LabelBinarizer(neg_label=0, pos_label=1, sparse_output=False)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.preprocessing import LabelBinarizer\n", "le = LabelBinarizer()\n", "le.fit(df['situation'])" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "temp = le.transform(df['situation'])" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array(['DirectFreekick', 'FromCorner', 'OpenPlay', 'Penalty', 'SetPiece'],\n", " dtype='\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
XYa_goalsa_teamdateh_ah_goalsh_teamidlastAction...goalisDirectFreekickisFromCornerisOpenPlayisPenaltyisSetPiecefromHeadfromLeftFootfromOtherBodyPartfromRightFoot
073.52799728.8040010Hoffenheim2015-08-29 17:30:00h0Darmstadt76737Aerial...False010000001
175.71200328.3479991Darmstadt2015-09-12 17:30:00a0Bayer Leverkusen76808Pass...False000010001
391.00000039.5959992Darmstadt2015-12-20 20:30:00a3Borussia M.Gladbach79876Aerial...False010001000
096.40799742.3320012Werder Bremen2014-12-07 16:30:00a5Eintracht Frankfurt27374Pass...True001000100
193.49600245.4479992Darmstadt2015-09-27 19:30:00a2Borussia Dortmund77444None...False000010001
2101.92000035.8720012Darmstadt2015-10-17 17:30:00a0Augsburg78030None...False010000100
3102.33600236.1759992Darmstadt2015-10-17 17:30:00a0Augsburg78029Rebound...False010000100
492.04000032.9079990Darmstadt2015-11-01 18:30:00a2VfB Stuttgart78500Cross...False001000100
597.96799748.2600000Darmstadt2015-11-01 18:30:00a2VfB Stuttgart78501Aerial...False010001000
699.52799747.5759991Hamburger SV2015-11-07 21:30:00h1Darmstadt78849Aerial...False000011000
794.64000046.2840011Darmstadt2015-12-06 20:30:00a0Eintracht Frankfurt79502Cross...False010001000
895.36799740.2800001Darmstadt2015-12-06 20:30:00a0Eintracht Frankfurt79514Cross...False001001000
997.03200342.7879994Hertha Berlin2015-12-12 18:30:00h0Darmstadt79822Aerial...False010001000
1096.92799736.4040012Darmstadt2015-12-20 20:30:00a3Borussia M.Gladbach79863Cross...False010001000
1194.84799746.5120012Bayer Leverkusen2016-02-13 18:30:00h1Darmstadt80950Aerial...False001001000
1290.37600248.8680020Darmstadt2016-03-06 18:30:00a0Mainz 0581919Rebound...False000010100
1390.37600248.8680020Darmstadt2016-03-06 18:30:00a0Mainz 0581918Aerial...False000010001
14100.46399832.5279992VfB Stuttgart2016-04-02 17:30:00h2Darmstadt82623Cross...False010001000
1591.41600239.2159991Darmstadt2016-04-23 17:30:00a4FC Cologne83244None...False010000100
1677.48000043.7000000Werder Bremen2016-08-26 22:30:00a6Bayern Munich127431None...False001000100
17103.06399846.9679990Werder Bremen2016-08-26 22:30:00a6Bayern Munich127447Cross...False010000100
198.38399835.4159991Darmstadt2015-08-22 17:30:00a1Schalke 0476326Aerial...False000011000
297.03200334.3520011Darmstadt2015-08-22 17:30:00a1Schalke 0476330Aerial...False010001000
399.00799732.9079991Darmstadt2015-09-12 17:30:00a0Bayer Leverkusen76809Aerial...True000011000
491.31200337.4679992Darmstadt2015-09-27 19:30:00a2Borussia Dortmund77459None...True000010001
595.05600244.3840010Darmstadt2015-11-01 18:30:00a2VfB Stuttgart78477Aerial...False000011000
694.22399843.5479990Darmstadt2015-11-01 18:30:00a2VfB Stuttgart78498Chipped...False000011000
792.14399841.4959991Hamburger SV2015-11-07 21:30:00h1Darmstadt78845None...False001000001
899.32000036.4040011Darmstadt2015-11-22 20:40:00a3Ingolstadt79074Cross...True010001000
994.53600237.3159991Darmstadt2015-12-06 20:30:00a0Eintracht Frankfurt79498Cross...True000011000
..................................................................
983.09600227.2079992Villarreal2018-11-11 17:30:00a2Rayo Vallecano240027Pass...False001000100
1076.54399838.8359991Real Betis2018-11-25 19:45:00h2Villarreal241740None...False001000100
1193.28799735.1120011Real Betis2018-11-25 19:45:00h2Villarreal241746Pass...False001000100
1292.76799724.9279991Real Betis2018-11-25 19:45:00h2Villarreal241754Pass...True001000100
1388.71200324.6240011Real Betis2018-11-25 19:45:00h2Villarreal241757Pass...False001000100
1495.88799724.0160000Villarreal2018-12-02 17:30:00a2Barcelona243092Rebound...False001000100
1581.12000029.9440010Villarreal2018-12-02 17:30:00a2Barcelona243094Pass...False001000100
079.14399840.1279992Fulham2018-10-20 14:00:00h4Cardiff234806Pass...False001000001
096.30399835.1120012Udinese2018-10-28 13:00:00h2Genoa236059Cross...True010001000
195.88799737.4679990Genoa2018-11-03 14:00:00a5Inter236765Aerial...False010001000
293.91200342.4840012Napoli2018-11-10 19:30:00h1Genoa239498Cross...False001001000
384.34399835.4159991Sampdoria2018-11-25 19:30:00h1Genoa241719Rebound...False001000001
496.92799736.6320011Sampdoria2018-11-25 19:30:00h1Genoa241725Aerial...False010001000
592.45600240.9640011Genoa2018-12-02 14:00:00a2Torino242821Cross...False010001000
683.40799736.5559991Genoa2018-12-02 14:00:00a2Torino242824Aerial...False000010100
085.38399842.5600000Toulouse2018-11-24 16:00:00a1Paris Saint Germain240889BallRecovery...False001000100
092.35200343.3200000Monaco2018-11-03 19:00:00h1Reims237309Pass...False001000100
184.96799735.2640011Guingamp2018-11-24 19:00:00h2Reims241121Chipped...True001000100
098.48799733.4400000Real Valladolid2018-11-25 15:15:00a1Sevilla241542Aerial...False010001000
087.88000022.8000001Wolfsburg2018-11-09 19:30:00a2Hannover 96238742Pass...False001000100
088.29600238.0759994Paris Saint Germain2018-11-11 20:00:00h0Monaco240130None...False010000001
098.48799740.5840011Eintracht Frankfurt2018-10-28 11:30:00h1Nuernberg235992Chipped...True001001000
191.10399842.7879992Nuernberg2018-11-03 14:30:00a2Augsburg236785Cross...False001000100
2101.19200324.3959992Nuernberg2018-11-03 14:30:00a2Augsburg236802Chipped...False000011000
396.30399837.6200002Nuernberg2018-11-03 14:30:00a2Augsburg236807Pass...False001000100
4100.15200336.3279992Nuernberg2018-11-24 17:30:00a5Schalke 04241048Rebound...True001000001
088.50399857.0759991Atletico Madrid2018-12-02 15:15:00h1Girona242927Pass...False001000001
096.30399834.5040013Fortuna Duesseldorf2018-11-24 14:30:00a3Bayern Munich240596None...False000011000
178.93600238.9879991Mainz 052018-11-30 19:30:00h0Fortuna Duesseldorf241967Pass...False001000001
299.11200349.0200001Mainz 052018-11-30 19:30:00h0Fortuna Duesseldorf241976Cross...False010000001
\n", "

225797 rows × 31 columns

\n", "" ], "text/plain": [ " X Y a_goals a_team date \\\n", "0 73.527997 28.804001 0 Hoffenheim 2015-08-29 17:30:00 \n", "1 75.712003 28.347999 1 Darmstadt 2015-09-12 17:30:00 \n", "3 91.000000 39.595999 2 Darmstadt 2015-12-20 20:30:00 \n", "0 96.407997 42.332001 2 Werder Bremen 2014-12-07 16:30:00 \n", "1 93.496002 45.447999 2 Darmstadt 2015-09-27 19:30:00 \n", "2 101.920000 35.872001 2 Darmstadt 2015-10-17 17:30:00 \n", "3 102.336002 36.175999 2 Darmstadt 2015-10-17 17:30:00 \n", "4 92.040000 32.907999 0 Darmstadt 2015-11-01 18:30:00 \n", "5 97.967997 48.260000 0 Darmstadt 2015-11-01 18:30:00 \n", "6 99.527997 47.575999 1 Hamburger SV 2015-11-07 21:30:00 \n", "7 94.640000 46.284001 1 Darmstadt 2015-12-06 20:30:00 \n", "8 95.367997 40.280000 1 Darmstadt 2015-12-06 20:30:00 \n", "9 97.032003 42.787999 4 Hertha Berlin 2015-12-12 18:30:00 \n", "10 96.927997 36.404001 2 Darmstadt 2015-12-20 20:30:00 \n", "11 94.847997 46.512001 2 Bayer Leverkusen 2016-02-13 18:30:00 \n", "12 90.376002 48.868002 0 Darmstadt 2016-03-06 18:30:00 \n", "13 90.376002 48.868002 0 Darmstadt 2016-03-06 18:30:00 \n", "14 100.463998 32.527999 2 VfB Stuttgart 2016-04-02 17:30:00 \n", "15 91.416002 39.215999 1 Darmstadt 2016-04-23 17:30:00 \n", "16 77.480000 43.700000 0 Werder Bremen 2016-08-26 22:30:00 \n", "17 103.063998 46.967999 0 Werder Bremen 2016-08-26 22:30:00 \n", "1 98.383998 35.415999 1 Darmstadt 2015-08-22 17:30:00 \n", "2 97.032003 34.352001 1 Darmstadt 2015-08-22 17:30:00 \n", "3 99.007997 32.907999 1 Darmstadt 2015-09-12 17:30:00 \n", "4 91.312003 37.467999 2 Darmstadt 2015-09-27 19:30:00 \n", "5 95.056002 44.384001 0 Darmstadt 2015-11-01 18:30:00 \n", "6 94.223998 43.547999 0 Darmstadt 2015-11-01 18:30:00 \n", "7 92.143998 41.495999 1 Hamburger SV 2015-11-07 21:30:00 \n", "8 99.320000 36.404001 1 Darmstadt 2015-11-22 20:40:00 \n", "9 94.536002 37.315999 1 Darmstadt 2015-12-06 20:30:00 \n", ".. ... ... ... ... ... \n", "9 83.096002 27.207999 2 Villarreal 2018-11-11 17:30:00 \n", "10 76.543998 38.835999 1 Real Betis 2018-11-25 19:45:00 \n", "11 93.287997 35.112001 1 Real Betis 2018-11-25 19:45:00 \n", "12 92.767997 24.927999 1 Real Betis 2018-11-25 19:45:00 \n", "13 88.712003 24.624001 1 Real Betis 2018-11-25 19:45:00 \n", "14 95.887997 24.016000 0 Villarreal 2018-12-02 17:30:00 \n", "15 81.120000 29.944001 0 Villarreal 2018-12-02 17:30:00 \n", "0 79.143998 40.127999 2 Fulham 2018-10-20 14:00:00 \n", "0 96.303998 35.112001 2 Udinese 2018-10-28 13:00:00 \n", "1 95.887997 37.467999 0 Genoa 2018-11-03 14:00:00 \n", "2 93.912003 42.484001 2 Napoli 2018-11-10 19:30:00 \n", "3 84.343998 35.415999 1 Sampdoria 2018-11-25 19:30:00 \n", "4 96.927997 36.632001 1 Sampdoria 2018-11-25 19:30:00 \n", "5 92.456002 40.964001 1 Genoa 2018-12-02 14:00:00 \n", "6 83.407997 36.555999 1 Genoa 2018-12-02 14:00:00 \n", "0 85.383998 42.560000 0 Toulouse 2018-11-24 16:00:00 \n", "0 92.352003 43.320000 0 Monaco 2018-11-03 19:00:00 \n", "1 84.967997 35.264001 1 Guingamp 2018-11-24 19:00:00 \n", "0 98.487997 33.440000 0 Real Valladolid 2018-11-25 15:15:00 \n", "0 87.880000 22.800000 1 Wolfsburg 2018-11-09 19:30:00 \n", "0 88.296002 38.075999 4 Paris Saint Germain 2018-11-11 20:00:00 \n", "0 98.487997 40.584001 1 Eintracht Frankfurt 2018-10-28 11:30:00 \n", "1 91.103998 42.787999 2 Nuernberg 2018-11-03 14:30:00 \n", "2 101.192003 24.395999 2 Nuernberg 2018-11-03 14:30:00 \n", "3 96.303998 37.620000 2 Nuernberg 2018-11-03 14:30:00 \n", "4 100.152003 36.327999 2 Nuernberg 2018-11-24 17:30:00 \n", "0 88.503998 57.075999 1 Atletico Madrid 2018-12-02 15:15:00 \n", "0 96.303998 34.504001 3 Fortuna Duesseldorf 2018-11-24 14:30:00 \n", "1 78.936002 38.987999 1 Mainz 05 2018-11-30 19:30:00 \n", "2 99.112003 49.020000 1 Mainz 05 2018-11-30 19:30:00 \n", "\n", " h_a h_goals h_team id lastAction ... \\\n", "0 h 0 Darmstadt 76737 Aerial ... \n", "1 a 0 Bayer Leverkusen 76808 Pass ... \n", "3 a 3 Borussia M.Gladbach 79876 Aerial ... \n", "0 a 5 Eintracht Frankfurt 27374 Pass ... \n", "1 a 2 Borussia Dortmund 77444 None ... \n", "2 a 0 Augsburg 78030 None ... \n", "3 a 0 Augsburg 78029 Rebound ... \n", "4 a 2 VfB Stuttgart 78500 Cross ... \n", "5 a 2 VfB Stuttgart 78501 Aerial ... \n", "6 h 1 Darmstadt 78849 Aerial ... \n", "7 a 0 Eintracht Frankfurt 79502 Cross ... \n", "8 a 0 Eintracht Frankfurt 79514 Cross ... \n", "9 h 0 Darmstadt 79822 Aerial ... \n", "10 a 3 Borussia M.Gladbach 79863 Cross ... \n", "11 h 1 Darmstadt 80950 Aerial ... \n", "12 a 0 Mainz 05 81919 Rebound ... \n", "13 a 0 Mainz 05 81918 Aerial ... \n", "14 h 2 Darmstadt 82623 Cross ... \n", "15 a 4 FC Cologne 83244 None ... \n", "16 a 6 Bayern Munich 127431 None ... \n", "17 a 6 Bayern Munich 127447 Cross ... \n", "1 a 1 Schalke 04 76326 Aerial ... \n", "2 a 1 Schalke 04 76330 Aerial ... \n", "3 a 0 Bayer Leverkusen 76809 Aerial ... \n", "4 a 2 Borussia Dortmund 77459 None ... \n", "5 a 2 VfB Stuttgart 78477 Aerial ... \n", "6 a 2 VfB Stuttgart 78498 Chipped ... \n", "7 h 1 Darmstadt 78845 None ... \n", "8 a 3 Ingolstadt 79074 Cross ... \n", "9 a 0 Eintracht Frankfurt 79498 Cross ... \n", ".. .. ... ... ... ... ... \n", "9 a 2 Rayo Vallecano 240027 Pass ... \n", "10 h 2 Villarreal 241740 None ... \n", "11 h 2 Villarreal 241746 Pass ... \n", "12 h 2 Villarreal 241754 Pass ... \n", "13 h 2 Villarreal 241757 Pass ... \n", "14 a 2 Barcelona 243092 Rebound ... \n", "15 a 2 Barcelona 243094 Pass ... \n", "0 h 4 Cardiff 234806 Pass ... \n", "0 h 2 Genoa 236059 Cross ... \n", "1 a 5 Inter 236765 Aerial ... \n", "2 h 1 Genoa 239498 Cross ... \n", "3 h 1 Genoa 241719 Rebound ... \n", "4 h 1 Genoa 241725 Aerial ... \n", "5 a 2 Torino 242821 Cross ... \n", "6 a 2 Torino 242824 Aerial ... \n", "0 a 1 Paris Saint Germain 240889 BallRecovery ... \n", "0 h 1 Reims 237309 Pass ... \n", "1 h 2 Reims 241121 Chipped ... \n", "0 a 1 Sevilla 241542 Aerial ... \n", "0 a 2 Hannover 96 238742 Pass ... \n", "0 h 0 Monaco 240130 None ... \n", "0 h 1 Nuernberg 235992 Chipped ... \n", "1 a 2 Augsburg 236785 Cross ... \n", "2 a 2 Augsburg 236802 Chipped ... \n", "3 a 2 Augsburg 236807 Pass ... \n", "4 a 5 Schalke 04 241048 Rebound ... \n", "0 h 1 Girona 242927 Pass ... \n", "0 a 3 Bayern Munich 240596 None ... \n", "1 h 0 Fortuna Duesseldorf 241967 Pass ... \n", "2 h 0 Fortuna Duesseldorf 241976 Cross ... \n", "\n", " goal isDirectFreekick isFromCorner isOpenPlay isPenalty isSetPiece \\\n", "0 False 0 1 0 0 0 \n", "1 False 0 0 0 0 1 \n", "3 False 0 1 0 0 0 \n", "0 True 0 0 1 0 0 \n", "1 False 0 0 0 0 1 \n", "2 False 0 1 0 0 0 \n", "3 False 0 1 0 0 0 \n", "4 False 0 0 1 0 0 \n", "5 False 0 1 0 0 0 \n", "6 False 0 0 0 0 1 \n", "7 False 0 1 0 0 0 \n", "8 False 0 0 1 0 0 \n", "9 False 0 1 0 0 0 \n", "10 False 0 1 0 0 0 \n", "11 False 0 0 1 0 0 \n", "12 False 0 0 0 0 1 \n", "13 False 0 0 0 0 1 \n", "14 False 0 1 0 0 0 \n", "15 False 0 1 0 0 0 \n", "16 False 0 0 1 0 0 \n", "17 False 0 1 0 0 0 \n", "1 False 0 0 0 0 1 \n", "2 False 0 1 0 0 0 \n", "3 True 0 0 0 0 1 \n", "4 True 0 0 0 0 1 \n", "5 False 0 0 0 0 1 \n", "6 False 0 0 0 0 1 \n", "7 False 0 0 1 0 0 \n", "8 True 0 1 0 0 0 \n", "9 True 0 0 0 0 1 \n", ".. ... ... ... ... ... ... \n", "9 False 0 0 1 0 0 \n", "10 False 0 0 1 0 0 \n", "11 False 0 0 1 0 0 \n", "12 True 0 0 1 0 0 \n", "13 False 0 0 1 0 0 \n", "14 False 0 0 1 0 0 \n", "15 False 0 0 1 0 0 \n", "0 False 0 0 1 0 0 \n", "0 True 0 1 0 0 0 \n", "1 False 0 1 0 0 0 \n", "2 False 0 0 1 0 0 \n", "3 False 0 0 1 0 0 \n", "4 False 0 1 0 0 0 \n", "5 False 0 1 0 0 0 \n", "6 False 0 0 0 0 1 \n", "0 False 0 0 1 0 0 \n", "0 False 0 0 1 0 0 \n", "1 True 0 0 1 0 0 \n", "0 False 0 1 0 0 0 \n", "0 False 0 0 1 0 0 \n", "0 False 0 1 0 0 0 \n", "0 True 0 0 1 0 0 \n", "1 False 0 0 1 0 0 \n", "2 False 0 0 0 0 1 \n", "3 False 0 0 1 0 0 \n", "4 True 0 0 1 0 0 \n", "0 False 0 0 1 0 0 \n", "0 False 0 0 0 0 1 \n", "1 False 0 0 1 0 0 \n", "2 False 0 1 0 0 0 \n", "\n", " fromHead fromLeftFoot fromOtherBodyPart fromRightFoot \n", "0 0 0 0 1 \n", "1 0 0 0 1 \n", "3 1 0 0 0 \n", "0 0 1 0 0 \n", "1 0 0 0 1 \n", "2 0 1 0 0 \n", "3 0 1 0 0 \n", "4 0 1 0 0 \n", "5 1 0 0 0 \n", "6 1 0 0 0 \n", "7 1 0 0 0 \n", "8 1 0 0 0 \n", "9 1 0 0 0 \n", "10 1 0 0 0 \n", "11 1 0 0 0 \n", "12 0 1 0 0 \n", "13 0 0 0 1 \n", "14 1 0 0 0 \n", "15 0 1 0 0 \n", "16 0 1 0 0 \n", "17 0 1 0 0 \n", "1 1 0 0 0 \n", "2 1 0 0 0 \n", "3 1 0 0 0 \n", "4 0 0 0 1 \n", "5 1 0 0 0 \n", "6 1 0 0 0 \n", "7 0 0 0 1 \n", "8 1 0 0 0 \n", "9 1 0 0 0 \n", ".. ... ... ... ... \n", "9 0 1 0 0 \n", "10 0 1 0 0 \n", "11 0 1 0 0 \n", "12 0 1 0 0 \n", "13 0 1 0 0 \n", "14 0 1 0 0 \n", "15 0 1 0 0 \n", "0 0 0 0 1 \n", "0 1 0 0 0 \n", "1 1 0 0 0 \n", "2 1 0 0 0 \n", "3 0 0 0 1 \n", "4 1 0 0 0 \n", "5 1 0 0 0 \n", "6 0 1 0 0 \n", "0 0 1 0 0 \n", "0 0 1 0 0 \n", "1 0 1 0 0 \n", "0 1 0 0 0 \n", "0 0 1 0 0 \n", "0 0 0 0 1 \n", "0 1 0 0 0 \n", "1 0 1 0 0 \n", "2 1 0 0 0 \n", "3 0 1 0 0 \n", "4 0 0 0 1 \n", "0 0 0 0 1 \n", "0 1 0 0 0 \n", "1 0 0 0 1 \n", "2 0 0 0 1 \n", "\n", "[225797 rows x 31 columns]" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Index(['X', 'Y', 'a_goals', 'a_team', 'date', 'h_a', 'h_goals', 'h_team', 'id',\n", " 'lastAction', 'match_id', 'minute', 'player', 'player_assisted',\n", " 'player_id', 'result', 'season', 'shotType', 'situation', 'distance',\n", " 'angle', 'goal', 'isDirectFreekick', 'isFromCorner', 'isOpenPlay',\n", " 'isPenalty', 'isSetPiece', 'fromHead', 'fromLeftFoot',\n", " 'fromOtherBodyPart', 'fromRightFoot'],\n", " dtype='object')" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Oh Boi, that's a lot of columns. Not to worry though. We will not be using all of them. Only a subset, atleast for this model. This subset is stored in the cols list" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "cols = ['distance','angle','isDirectFreekick','isFromCorner','isOpenPlay','isPenalty','isSetPiece','fromHead','fromLeftFoot','fromOtherBodyPart','fromRightFoot','goal']" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create a new DataFrame by the name of shot to store the subset data from the selected columns." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "shot = df[cols]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The aim of this whole endeavour is to make a model which will output wether a shot is goal or not. Thus, the goal feature is taken as a series by the name of Y and the rest of the independent features are stored in the DataFrame X." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "X=shot.drop('goal',axis=1)\n", "Y=shot['goal']" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['distance', 'angle', 'isDirectFreekick', 'isFromCorner', 'isOpenPlay',\n", " 'isPenalty', 'isSetPiece', 'fromHead', 'fromLeftFoot',\n", " 'fromOtherBodyPart', 'fromRightFoot'],\n", " dtype='object')" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "X.columns" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Y series currently consists of values in the form of True and False but we would like it to be a binary value i.e. 1 or 0. Thus, we use LabelEncoder available in the sklearn library." ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [], "source": [ "from sklearn.preprocessing import LabelEncoder\n", "le = LabelEncoder()\n", "Y=le.fit_transform(Y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We will have to construct both a train data set and test data set to check the validity of our model.\n", "Thus, we break up our dataset into two parts in 70:30 ratio. 70% of shots are present in the training set and the rest 30% are used as an hold-out test set." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### MODEL FITTING & TESTING" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Lo and Behold, we are finally at the point to train the model. The first Model that I'm using here is Logistic Regression because it is realtively cheaper computationally." ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "D:\\ProgramFiles\\Anaconda3\\lib\\site-packages\\sklearn\\cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n", " \"This module will be removed in 0.20.\", DeprecationWarning)\n" ] }, { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='ovr', n_jobs=1,\n", " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", " verbose=0, warm_start=False)" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.cross_validation import train_test_split\n", "\n", "reg = LogisticRegression()\n", "\n", "X_train,X_test,Y_train,Y_test = train_test_split(X,Y,test_size=0.3,random_state=42)\n", "\n", "reg.fit(X_train,Y_train)" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.9048863300856215" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reg.score(X_test,Y_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We obtain an accuracy of 90.4% which is decent considering the size of data. Moreover, we did not take a lot of features into account." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "90% sounds good but it's classifying wheteher a shot is a goal or not and the dataset is skewed towards having a lot more shots as not a goal in comaprisons to ones which actually ended up being a goal." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, judging the performance of a model based on just the accuracy is not a good practice. Let's look at the predictions themselves with the help of a confusion matrix." ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[60210 442]\n", " [ 6001 1087]]\n" ] } ], "source": [ "preds = reg.predict(X_test)\n", "\n", "from sklearn.metrics import confusion_matrix\n", "confusion_matrix = confusion_matrix(Y_test,preds)\n", "print(confusion_matrix)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The Confusion Matrix shows us Exactly how the model performed in terms of raw output. The top left value indicates shots that were rightly predicted as not goals. The righta are shots that were predicted as goals but were not.\n", "\n", "The second row contains shots that were classified as not goal but were infact, goals. On the right of it, we have the shots that were correctly classified as goals." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Another tool to look at the performance of the model is an ROC curve. The area under ROC curve for our model is 80% which is quite good." ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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2aMYJ5olXKLIbFGUeNfTtm02w69MGejWDa69Fi67zOszOZeH1NRUqlatSt26dRH/X4k5VWXt2rWkpqZSr169Yntd73qKxvjx0KwZvPKK3b70Uivk5x985/KUlpZGzZo1PUmUEBGhZs2axd6CS7hEUaJdT3//DXfeCSecAJs2JXC5WufC40miZMVifyds11PME8WPP1oRv4UL4eab4YknoFq1GL+pc87Fn4RrUaSnQ9WqJVAQMD3d3uSHH6zLyZOEcwnrs88+Q0T4/fff/7lv9OjRnJ9tmcyuXbsyZMgQwAbi7733Xg4//HAaN25M8+bN+fLLL4scyxNPPEH9+vU58sgj+TpzDlY23333Hc2aNaNp06a0bt2aecHaCtu2baNjx47Ur1+fFi1asGjRoiLHE42ESxQZGTFsTQwdai0HsCJ+M2fCSSfF6M2ccyVl0KBBtG7dmsGDB0f9nP/7v/9jxYoVzJgxgxkzZjBixAg2bdpUpDhmzZrF4MGDmTlzJl999RU333wzGZn96RFuuukm3n//faZOncoVV1zBY489BsCAAQOoUaMG8+bN48477+See+4pUjzRSsiup2I/4+nPP+G22+Djj23QukcPq8/kRfycKzZ33GHTjopT06bw/PN5b7N582bGjRvHqFGjuPDCC+nVq1e+r7tlyxb69evHwoULqVChAgD7778/HTp0KFK8w4YNo1OnTlSoUIF69epRv359JkyYQKtWrXbZTkT466+/ANi4cSMHBafgDxs27J/4L730Um699VZUNebjQAn3TZieXowtClV47z37BG/eDI8/Dj17JthCF865vAwdOpS2bdtyxBFHsPfee/Prr7/SrFmzPJ8zb9486tSpQ7UoupzvvPNORo0atdv9nTp14t57793lvmXLltGyZct/bteuXZtly5bt9tz+/ftz7rnnsueee1KtWjXGjx//z/MPDlZsK1euHNWrV2ft2rXss88++cZZFKU7USxZYnMiUlJsdnWDBsX0ws657PI78o+VQYMGcccddwD25T1o0CCaNWuW61F4QY/O+/TpE/W2qhrV+/Xp04eRI0fSokULnn76ae666y769+8f9fOLW8IliiLXecos4nfOOVbEb9w4q/bq9ZmcSzpr167l+++/Z8aMGYgIGRkZiAi9e/emZs2arF+/fpft161bxz777EP9+vVZsmQJmzZt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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve\n", "from sklearn.metrics import auc\n", "probs = reg.predict_proba(X_test)\n", "preds = probs[:,1]\n", "fpr, tpr, threshold = roc_curve(Y_test, preds)\n", "roc_auc = auc(fpr, tpr)\n", "\n", "# method I: plt\n", "import matplotlib.pyplot as plt\n", "plt.title('Receiver Operating Characteristic')\n", "plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)\n", "plt.legend(loc = 'lower right')\n", "plt.plot([0, 1], [0, 1],'r--')\n", "plt.xlim([0, 1])\n", "plt.ylim([0, 1])\n", "plt.ylabel('True Positive Rate')\n", "plt.xlabel('False Positive Rate')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The same methodology is used to build a Random Forest Classification Model." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "RandomForestClassifier(bootstrap=True, class_weight=None, criterion='gini',\n", " max_depth=None, max_features='auto', max_leaf_nodes=None,\n", " min_impurity_decrease=0.0, min_impurity_split=None,\n", " min_samples_leaf=1, min_samples_split=2,\n", " min_weight_fraction_leaf=0.0, n_estimators=10, n_jobs=1,\n", " oob_score=False, random_state=None, verbose=0,\n", " warm_start=False)" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.ensemble import RandomForestClassifier\n", "reg2 = RandomForestClassifier()\n", "reg2.fit(X_train,Y_train)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.8782698553291999" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "reg2.score(X_test,Y_test)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[57700 2952]\n", " [ 5294 1794]]\n" ] } ], "source": [ "preds = reg2.predict(X_test)\n", "\n", "from sklearn.metrics import confusion_matrix\n", "confusion_matrix = confusion_matrix(Y_test,preds)\n", "print(confusion_matrix)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from sklearn.metrics import roc_curve\n", "from sklearn.metrics import auc\n", "probs = reg2.predict_proba(X_test)\n", "preds = probs[:,1]\n", "fpr, tpr, threshold = roc_curve(Y_test, preds)\n", "roc_auc = auc(fpr, tpr)\n", "\n", "# method I: plt\n", "import matplotlib.pyplot as plt\n", "plt.title('Receiver Operating Characteristic')\n", "plt.plot(fpr, tpr, 'b', label = 'AUC = %0.2f' % roc_auc)\n", "plt.legend(loc = 'lower right')\n", "plt.plot([0, 1], [0, 1],'r--')\n", "plt.xlim([0, 1])\n", "plt.ylim([0, 1])\n", "plt.ylabel('True Positive Rate')\n", "plt.xlabel('False Positive Rate')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As we see that the both accuracy and area under ROC curve is worse, Logistic Regression seems to be a better choice for our Expected Goals Model." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### RESUTLS" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [], "source": [ "temp = df[cols]\n", "shots=shot.drop('goal',axis=1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The below graph shows the value of xG changing as the distance and angle change." ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(shots['distance'],shots['angle'],c=reg.predict_proba(shots)[:,1])\n", "plt.xlabel('distance')\n", "plt.ylabel('angle')\n", "plt.colorbar()" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from matplotlib.patches import Arc\n", "\n", "fig=plt.figure()\n", "#fig,ax = plt.subplots(figsize=(10.4,7.6))\n", "ax=fig.add_subplot(1,1,1)\n", "ax.axis('off')\n", "\n", "plt.plot([0,104],[0,0],color=\"black\")\n", "plt.plot([0,0],[76,0],color=\"black\")\n", "plt.plot([0,104],[76,76],color=\"black\")\n", "plt.plot([104,104],[76,0],color=\"black\")\n", "plt.plot([52,52],[0,76],color=\"black\")\n", "\n", "plt.plot([104,86.32],[60,60],color=\"black\")\n", "plt.plot([86.32,104],[16,16],color=\"black\")\n", "plt.plot([86.32,86.32],[60,16],color=\"black\")\n", "plt.plot([104,97.97],[48,48],color=\"black\")\n", "plt.plot([104,97.97],[27.968,27.968],color=\"black\")\n", "plt.plot([97.97,97.97],[48,27.968],color=\"black\")\n", "\n", "plt.plot([104,104],[34,42],color=\"red\")\n", "\n", "penaltySpot = plt.Circle((92.04,38),0.25,color=\"black\")\n", "centreSpot = plt.Circle((52,38),0.5,color=\"black\")\n", "centreCircle = plt.Circle((52,38),10,color=\"black\",fill=False)\n", "\n", "D = Arc((92.04,38),height=20,width=20,angle=0,theta1=125,theta2=235,color=\"black\")\n", "\n", "ax.add_patch(centreSpot)\n", "ax.add_patch(centreCircle)\n", "ax.add_patch(penaltySpot)\n", "ax.add_patch(D)\n", "\n", "\n", "plt.scatter(df['X'],df['Y'],c=reg.predict_proba(shots)[:,1],alpha=0.7)\n", "plt.colorbar()\n", "plt.show()\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above graph shows that our xG model atleast captures the intuitive nature of shot conversion. A shot from a greater angle of view and lesser distance is more likely to go in." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Thus, we add the model output of xG to the original dataframe" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [], "source": [ "df['xG'] = reg.predict_proba(shots)[:,1]" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Index(['X', 'Y', 'a_goals', 'a_team', 'date', 'h_a', 'h_goals', 'h_team', 'id',\n", " 'lastAction', 'match_id', 'minute', 'player', 'player_assisted',\n", " 'player_id', 'result', 'season', 'shotType', 'situation', 'distance',\n", " 'angle', 'goal', 'isDirectFreekick', 'isFromCorner', 'isOpenPlay',\n", " 'isPenalty', 'isSetPiece', 'fromHead', 'fromLeftFoot',\n", " 'fromOtherBodyPart', 'fromRightFoot', 'xG'],\n", " dtype='object')" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 44, "metadata": { "scrolled": true }, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'Expected Goals')" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Actual = df.groupby('player')['goal'].sum()\n", "Expected = df.groupby('player')['xG'].sum()\n", "\n", "plt.scatter(Actual,Expected)\n", "plt.title('Goals v Expected Goals')\n", "plt.xlabel('Actual Goals')\n", "plt.ylabel('Expected Goals')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that a clear linear relationship exists between the Expected Goals and Actual Goals which is a very good sign for our model.\n", "Let's try fitting a line to this." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0,0.5,'Expected Goals')" ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "from sklearn.linear_model import LinearRegression\n", "lmod = LinearRegression()\n", "lmod.fit(np.array(Actual).reshape(-1,1),Expected)\n", "\n", "x=np.linspace(0,150,1000)\n", "y=lmod.predict(x.reshape(-1,1))\n", "\n", "plt.plot(x,y,color='r')\n", "plt.scatter(Actual,Expected)\n", "plt.title('Goals v Expected Goals')\n", "plt.xlabel('Actual Goals')\n", "plt.ylabel('Expected Goals')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "On a side note, 10 Ballon D'or on the top right." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### CONCLUSION" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The model was rather simplistic in nature and was made with very few features still managed to capture the intuitiveness of the data and is decent at predicting the number of goals given shot locations and some context data. \n", "\n", "The model could be refined more with more context and more importantly, more data." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.6.5" } }, "nbformat": 4, "nbformat_minor": 2 }