sportowe_wizualizacja/predict_Xg.ipynb
Koushik R Kirugulige cfcaa3f321
adding 5 ipynb files
2019-06-03 17:01:10 +05:30

445 lines
88 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"done\n"
]
}
],
"source": [
"import json\n",
"from pandas.io.json import json_normalize\n",
"import numpy as np\n",
"import seaborn as sns\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.patches import Arc, Rectangle, ConnectionPatch\n",
"from matplotlib.offsetbox import OffsetImage\n",
"#import squarify\n",
"from functools import reduce\n",
"import os\n",
"path = \"\"\"C:\\\\Users\\\\Koushik\\\\Downloads\\\\open-data-master\\\\open-data-master\\\\data\\\\my_events\\\\\"\"\"\n",
"Xg_req = pd.DataFrame(data=None)\n",
"for filename in (os.listdir(path)):\n",
" #print(filename)\n",
" \n",
" with open(\"%s\" % path + filename,encoding=\"utf8\") as data_file: \n",
" data = json.load(data_file)\n",
" df = pd.DataFrame(data=None)\n",
" \n",
" df = json_normalize(data, sep = \"_\")\n",
" \n",
" df = df[(df['type_name'] == \"Shot\")]\n",
" df = df.loc[:,['location','shot_body_part_id','shot_end_location','shot_one_on_one','shot_technique_id','shot_type_id','under_pressure','shot_outcome_id']]\n",
" #print(df.shape)\n",
" Xg_req = Xg_req.append(df,ignore_index=True,sort=False)\n",
" #df.drop(df.index, inplace=True)\n",
" \n",
"print(\"done\") "
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"Xg_req[['shot_X_axis','shot_Y_axis']] = pd.DataFrame(Xg_req.location.values.tolist(), index= Xg_req.location.index) # has the x,y coordinates of shot loc\n",
"Xg_req[['shot_end_X_axis','shot_end_Y_axis','shot_end_Z_axis']] = pd.DataFrame(Xg_req.shot_end_location.values.tolist(), index= Xg_req.location.index)\n",
"#print(Xg_req.location.head())\n",
"#print(Xg_req.shot_end_location.head())\n",
"#print(Xg_req.shot_X_axis)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [],
"source": [
"Xg_req[['shot_end_Z_axis']] = pd.DataFrame(Xg_req.shot_end_Z_axis.fillna(0),index= Xg_req.location.index)\n",
"Xg_req[['shot_one_on_one']] = pd.DataFrame(Xg_req.shot_one_on_one.fillna(False),index= Xg_req.location.index)\n",
"Xg_req[['under_pressure']] = pd.DataFrame(Xg_req.under_pressure.fillna(False),index= Xg_req.location.index)\n",
"\n",
"Xg_req = Xg_req.loc[:,['shot_body_part_id','shot_one_on_one','shot_technique_id','shot_type_id','under_pressure','shot_outcome_id','shot_end_X_axis','shot_end_Y_axis','shot_end_Z_axis','shot_X_axis','shot_Y_axis']]\n"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [],
"source": [
"import math # to calculate distance from shot location to goal post ends\n",
"#dist_bc=8\n",
"dist_ab = np.zeros(shape=(Xg_req.shape[0]))\n",
"dist_ca = np.zeros(shape=(Xg_req.shape[0]))\n",
"x = Xg_req.shot_X_axis.values.tolist()\n",
"y = Xg_req.shot_Y_axis.values.tolist()\n",
"x = np.asarray(x)\n",
"y = np.asarray(y)\n",
"for i in range(0,x.size):\n",
" dist_ca[i] = math.sqrt((x[i] -120 )**2 + (y[i] - 44)**2) #CA\n",
" dist_ab[i] = math.sqrt((x[i] - 120)**2 + (y[i] - 36)**2)\n"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [],
"source": [
"# to calculate angle for shot loc to post \n",
"angle_A = np.zeros(shape=(Xg_req.shape[0]))\n",
"for i in range(0,dist_ab.size):\n",
" angle_A[i] = math.acos(((dist_ca[i]**2) + (dist_ab[i]**2) - 64) / (2 * dist_ca[i] *dist_ab[i])) #inverse_cos((b^2+c^2-a^2)/(2 * c * a))\n",
" angle_A[i] = angle_A[i]*180/math.pi #to convert angle to degrees from rad\n",
"\n",
"\n",
"Xg_req[['shot_angle']] = pd.DataFrame(angle_A,index= Xg_req.shot_X_axis.index) \n",
"goal = Xg_req[(Xg_req['shot_outcome_id'] == 97)] #shot_outcome_id 97 == GOAL\n",
"goal = goal.loc[:,['shot_X_axis','shot_Y_axis','shot_end_X_axis','shot_end_Y_axis','shot_end_Z_axis']]\n",
"Pred_X = np.zeros(shape=(Xg_req.shape[0])) # value to be predicted\n",
"for i in range(0,Pred_X.size):\n",
" if Xg_req.shot_outcome_id[i] == 97:\n",
" Pred_X[i] = 1\n",
" else:\n",
" Pred_X[i] = 0\n"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [],
"source": [
"def draw_pitch(ax):\n",
" # focus on only half of the pitch\n",
" #Pitch Outline & Centre Line\n",
" Pitch = Rectangle([0,0], width = 120, height = 80, fill = False)\n",
" #Left, Right Penalty Area and midline\n",
" LeftPenalty = Rectangle([0,22.3], width = 14.6, height = 35.3, fill = False)\n",
" RightPenalty = Rectangle([105.4,22.3], width = 14.6, height = 35.3, fill = False)\n",
" midline = ConnectionPatch([60,0], [60,80], \"data\", \"data\")\n",
"\n",
" #Left, Right 6-yard Box\n",
" LeftSixYard = Rectangle([0,32], width = 4.9, height = 16, fill = False)\n",
" RightSixYard = Rectangle([115.1,32], width = 4.9, height = 16, fill = False)\n",
"\n",
"\n",
" #Prepare Circles\n",
" centreCircle = plt.Circle((60,40),8.1,color=\"black\", fill = False)\n",
" centreSpot = plt.Circle((60,40),0.71,color=\"black\")\n",
" #Penalty spots and Arcs around penalty boxes\n",
" leftPenSpot = plt.Circle((9.7,40),0.71,color=\"black\")\n",
" rightPenSpot = plt.Circle((110.3,40),0.71,color=\"black\")\n",
" leftArc = Arc((9.7,40),height=16.2,width=16.2,angle=0,theta1=310,theta2=50,color=\"black\")\n",
" rightArc = Arc((110.3,40),height=16.2,width=16.2,angle=0,theta1=130,theta2=230,color=\"black\")\n",
" \n",
" element = [Pitch, LeftPenalty, RightPenalty, midline, LeftSixYard, RightSixYard, centreCircle, \n",
" centreSpot, rightPenSpot, leftPenSpot, leftArc, rightArc]\n",
" for i in element:\n",
" ax.add_patch(i)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 504x360 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig=plt.figure() #set up the figures\n",
"fig.set_size_inches(7, 5)\n",
"ax=fig.add_subplot(1,1,1)\n",
"draw_pitch(ax) #overlay our different objects on the pitch\n",
"plt.ylim(-2, 82)\n",
"plt.xlim(-2, 122)\n",
"plt.plot(Xg_req.shot_X_axis,Xg_req.shot_Y_axis,'ro')\n",
"plt.plot(goal.shot_X_axis,goal.shot_Y_axis,'bo')\n",
"plt.axis('off')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"\n",
"plt.scatter(Xg_req.shot_end_Y_axis,Xg_req.shot_end_Z_axis, alpha=0.5)\n",
"plt.scatter(goal.shot_end_Y_axis,goal.shot_end_Z_axis, alpha=0.5,color='red')\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<Figure size 432x288 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"import matplotlib.pyplot as plt\n",
"\n",
"plt.ylim(0, 7)\n",
"plt.xlim(0, 80)\n",
"\n",
"plt.scatter(goal.shot_end_Y_axis,goal.shot_end_Z_axis, alpha=0.5)\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [],
"source": [
"Xg_req.columns\n",
"X = Xg_req[['shot_body_part_id', 'shot_one_on_one', 'shot_technique_id','shot_type_id', 'under_pressure','shot_end_X_axis',\n",
" 'shot_end_Y_axis', 'shot_end_Z_axis', 'shot_X_axis', 'shot_Y_axis','shot_angle']]\n",
"Y = Pred_X"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Log regression test accuracy 0.900\n"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Users\\Koushik\\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"
]
}
],
"source": [
"#LogisticRegression model for predicting Xg\n",
"from sklearn.linear_model import LogisticRegression\n",
"from sklearn.cross_validation import train_test_split\n",
"log_r = LogisticRegression()\n",
"\n",
"X_train,X_test,y_train,y_test = train_test_split(X,Y,test_size = 0.2 , random_state = 52)\n",
"\n",
"log_r.fit(X_train,y_train)\n",
"print(\"Log regression test accuracy {:.3f}\".format(log_r.score(X_train,y_train)))"
]
},
{
"cell_type": "code",
"execution_count": 107,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[325 5]\n",
" [ 43 4]]\n"
]
}
],
"source": [
"prediction = log_r.predict(X_test)\n",
"from sklearn.metrics import confusion_matrix\n",
"confusion_matrix = confusion_matrix(y_test,prediction)\n",
"print(confusion_matrix)\n"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[325 5]\n",
" [ 14 33]]\n"
]
}
],
"source": [
"from sklearn.metrics import accuracy_score\n",
"import xgboost as xgb #xgboost model\n",
"model = xgb.XGBClassifier()\n",
"model.fit(X_train, y_train)\n",
"#print(model)\n",
"prediction = model.predict(X_test)\n",
"#prediction = log_r.predict(X_test)\n",
"from sklearn.metrics import confusion_matrix\n",
"confusion_matrix = confusion_matrix(y_test,prediction)\n",
"print(confusion_matrix)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"#!pip install --upgrade tensorflow\n",
"!pip uninstall tensorflow\n",
"print(\"done\")"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"ename": "AttributeError",
"evalue": "'numpy.ndarray' object has no attribute 'values'",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-20-8c5916432e7d>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mX\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mX\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mvalues\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;31m#X_train,X_test,y_train,y_test = train_test_split(X,Y,test_size = 0.2 , random_state = 52)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mAttributeError\u001b[0m: 'numpy.ndarray' object has no attribute 'values'"
]
}
],
"source": [
"\n",
"#X_train,X_test,y_train,y_test = train_test_split(X,Y,test_size = 0.2 , random_state = 52)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using TensorFlow backend.\n"
]
},
{
"ename": "ImportError",
"evalue": "Traceback (most recent call last):\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\", line 18, in swig_import_helper\n fp, pathname, description = imp.find_module('_pywrap_tensorflow_internal', [dirname(__file__)])\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\imp.py\", line 297, in find_module\n raise ImportError(_ERR_MSG.format(name), name=name)\nImportError: No module named '_pywrap_tensorflow_internal'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow.py\", line 58, in <module>\n from tensorflow.python.pywrap_tensorflow_internal import *\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\", line 28, in <module>\n _pywrap_tensorflow_internal = swig_import_helper()\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\", line 20, in swig_import_helper\n import _pywrap_tensorflow_internal\nModuleNotFoundError: No module named '_pywrap_tensorflow_internal'\n\n\nFailed to load the native TensorFlow runtime.\n\nSee https://www.tensorflow.org/install/errors\n\nfor some common reasons and solutions. Include the entire stack trace\nabove this error message when asking for help.",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\u001b[0m in \u001b[0;36mswig_import_helper\u001b[1;34m()\u001b[0m\n\u001b[0;32m 17\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 18\u001b[1;33m \u001b[0mfp\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mpathname\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdescription\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mimp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfind_module\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'_pywrap_tensorflow_internal'\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m[\u001b[0m\u001b[0mdirname\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m__file__\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 19\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\imp.py\u001b[0m in \u001b[0;36mfind_module\u001b[1;34m(name, path)\u001b[0m\n\u001b[0;32m 296\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 297\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0m_ERR_MSG\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mformat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mname\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mname\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 298\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mImportError\u001b[0m: No module named '_pywrap_tensorflow_internal'",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 57\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 58\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpywrap_tensorflow_internal\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[1;33m*\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 59\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpywrap_tensorflow_internal\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0m__version__\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 27\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_mod\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 28\u001b[1;33m \u001b[0m_pywrap_tensorflow_internal\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mswig_import_helper\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 29\u001b[0m \u001b[1;32mdel\u001b[0m \u001b[0mswig_import_helper\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\u001b[0m in \u001b[0;36mswig_import_helper\u001b[1;34m()\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[1;32mimport\u001b[0m \u001b[0m_pywrap_tensorflow_internal\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 21\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0m_pywrap_tensorflow_internal\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mModuleNotFoundError\u001b[0m: No module named '_pywrap_tensorflow_internal'",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[1;31mImportError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-25-e2ab5378d8b9>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mkeras\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmodels\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mSequential\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 2\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mkeras\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mlayers\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcore\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mDense\u001b[0m \u001b[1;31m#'shot_body_part_id', 'shot_one_on_one', 'shot_technique_id','shot_type_id', 'under_pressure','shot_end_X_axis',\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;31m#'shot_end_Y_axis', 'shot_end_Z_axis', 'shot_X_axis', 'shot_Y_axis','shot_angle'\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[0mmodel\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mSequential\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[0mmodel\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0madd\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mDense\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;36m3\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0minput_dim\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;36m11\u001b[0m\u001b[1;33m,\u001b[0m\u001b[0mactivation\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m'relu'\u001b[0m \u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\keras\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 1\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mabsolute_import\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 2\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 3\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mutils\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mactivations\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mapplications\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\keras\\utils\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mdata_utils\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 5\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mio_utils\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 6\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mconv_utils\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 7\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;31m# Globally-importable utils.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\keras\\utils\\conv_utils.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0msix\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mmoves\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mrange\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 8\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 9\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[1;33m.\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mbackend\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mK\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 10\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 11\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\keras\\backend\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 87\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0m_BACKEND\u001b[0m \u001b[1;33m==\u001b[0m \u001b[1;34m'tensorflow'\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 88\u001b[0m \u001b[0msys\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mstderr\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mwrite\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m'Using TensorFlow backend.\\n'\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 89\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[1;33m.\u001b[0m\u001b[0mtensorflow_backend\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[1;33m*\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 90\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 91\u001b[0m \u001b[1;31m# Try and load external backend.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\keras\\backend\\tensorflow_backend.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 3\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0m__future__\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mprint_function\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 5\u001b[1;33m \u001b[1;32mimport\u001b[0m \u001b[0mtensorflow\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mtf\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 6\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mframework\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mops\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mtf_ops\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 7\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtraining\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mmoving_averages\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 23\u001b[0m \u001b[1;31m# pylint: disable=g-bad-import-order\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 24\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpywrap_tensorflow\u001b[0m \u001b[1;31m# pylint: disable=unused-import\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 25\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 26\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\__init__.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 47\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 48\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 49\u001b[1;33m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mpywrap_tensorflow\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 50\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 51\u001b[0m \u001b[1;32mfrom\u001b[0m \u001b[0mtensorflow\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpython\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mtools\u001b[0m \u001b[1;32mimport\u001b[0m \u001b[0mcomponent_api_helper\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32m~\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[0;32m 72\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0msome\u001b[0m \u001b[0mcommon\u001b[0m \u001b[0mreasons\u001b[0m \u001b[1;32mand\u001b[0m \u001b[0msolutions\u001b[0m\u001b[1;33m.\u001b[0m \u001b[0mInclude\u001b[0m \u001b[0mthe\u001b[0m \u001b[0mentire\u001b[0m \u001b[0mstack\u001b[0m \u001b[0mtrace\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 73\u001b[0m above this error message when asking for help.\"\"\" % traceback.format_exc()\n\u001b[1;32m---> 74\u001b[1;33m \u001b[1;32mraise\u001b[0m \u001b[0mImportError\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mmsg\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 75\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 76\u001b[0m \u001b[1;31m# pylint: enable=wildcard-import,g-import-not-at-top,unused-import,line-too-long\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;31mImportError\u001b[0m: Traceback (most recent call last):\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\", line 18, in swig_import_helper\n fp, pathname, description = imp.find_module('_pywrap_tensorflow_internal', [dirname(__file__)])\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\imp.py\", line 297, in find_module\n raise ImportError(_ERR_MSG.format(name), name=name)\nImportError: No module named '_pywrap_tensorflow_internal'\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow.py\", line 58, in <module>\n from tensorflow.python.pywrap_tensorflow_internal import *\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\", line 28, in <module>\n _pywrap_tensorflow_internal = swig_import_helper()\n File \"C:\\Users\\Koushik\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\pywrap_tensorflow_internal.py\", line 20, in swig_import_helper\n import _pywrap_tensorflow_internal\nModuleNotFoundError: No module named '_pywrap_tensorflow_internal'\n\n\nFailed to load the native TensorFlow runtime.\n\nSee https://www.tensorflow.org/install/errors\n\nfor some common reasons and solutions. Include the entire stack trace\nabove this error message when asking for help."
]
}
],
"source": [
"from keras.models import Sequential\n",
"from keras.layers.core import Dense #'shot_body_part_id', 'shot_one_on_one', 'shot_technique_id','shot_type_id', 'under_pressure','shot_end_X_axis',\n",
" #'shot_end_Y_axis', 'shot_end_Z_axis', 'shot_X_axis', 'shot_Y_axis','shot_angle'\n",
"model = Sequential()\n",
"model.add(Dense(3,input_dim = 11,activation = 'relu' ))\n",
"model.add(Dense(1,activation = 'sigmoid'))\n",
"\n",
"model.compile(loss = 'mean_absolute_error',optimizer = 'adam',metrics = ['binary_accuracy'])\n",
"model.fit(X_train,y_train,epoch = 100,verbose = 2)"
]
}
],
"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.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}