From 0b3e58f05e4c9771649a265c2affca725c48c2c7 Mon Sep 17 00:00:00 2001 From: LukaszChrostowski Date: Mon, 8 Jan 2024 22:32:55 +0100 Subject: [PATCH 1/3] some work --- .DS_Store | Bin 8196 -> 8196 bytes .../modele/__pycache__/modele.cpython-39.pyc | Bin 2823 -> 5897 bytes app/src/flask-server/modele/modele.py | 16 +++++++++++----- app/src/flask-server/server.py | 2 +- 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/.DS_Store b/.DS_Store index fe13f732f99701c649b4849676d8df95bcbb8a9e..4b2dabf0f183b068696d0d561ff32d7cec30e8b7 100644 GIT binary patch delta 37 ncmZp1XmQxESAgBvL`T8M(sJ^B5&O-|f>)Vg0-NuPsB!}U-UkZ& delta 37 ncmZp1XmQxESAgBXR7b(s$YSz+5&O-|f>)Vg0-NuPsB!}U+};Z6 diff --git a/app/src/flask-server/modele/__pycache__/modele.cpython-39.pyc b/app/src/flask-server/modele/__pycache__/modele.cpython-39.pyc index 1b53ba2fb8bf524983480e9574d766f190000aaf..1361d5f805fa44938d3fc9bdfe172056de3b6b98 100644 GIT binary patch literal 5897 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 XVFu{|>gjBHKK&$Zq;>q0>D0dgpWVZc delta 381 zcmeCwYZv27X znvAzta`F>X{6LK2!lIIm_naAJqc~j>OA_6R5_3~;G3Vqb1BukUTdbLRDXA4vlkJ!! zSXh91CxB(x$ z&lsyV^Rmb?GO};hX60qk;|0nWF@gww5Fr2}1c8L6bCC>)Eej&#K!iMyn9L(6KRJa@ zj*)$G9iPPH*?e-7k8$o36$i;nfCx!AAvJj|mlUJmDKS7%O^ztGto)>$%%mbF zAUBGwATci`vA9SG$hpOmn^=-j#0=6b4I)4qkjw&`Dg{!=VFUDQX-=vg$jM;e@i1~Q J@-TC70|0-3QK0|; diff --git a/app/src/flask-server/modele/modele.py b/app/src/flask-server/modele/modele.py index fa1960f..b821860 100644 --- a/app/src/flask-server/modele/modele.py +++ b/app/src/flask-server/modele/modele.py @@ -1,7 +1,9 @@ from joblib import load import pandas as pd from math import sqrt +import numpy as np import math +from sklearn.preprocessing import LabelEncoder # Funkcja zwraca prawdopodobieństwo zdobycia gola def LogisticRegression_predict_proba(position_x, position_y, distance_to_goalM, angle, match_minute, Number_Intervening_Opponents, Number_Intervening_Teammates, isFoot, isHead): @@ -100,7 +102,7 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min 'shot_open_goal','shot_follows_dribble', 'shot_redirect', 'x1', 'y1','number_of_players_opponents', 'number_of_players_teammates','angle', 'distance', - 'x_player_opponent_Goalkeeper', + 'x_player_opponent_Goalkeeper', 'x_player_opponent_8', 'x_player_opponent_1', 'x_player_opponent_2','x_player_opponent_3', 'x_player_opponent_4','x_player_opponent_5', 'x_player_opponent_6', 'x_player_teammate_2','x_player_opponent_9', 'x_player_opponent_10', @@ -146,8 +148,8 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min shot_one_on_one = True if number_of_players_opponents == 1 else False # TeamMate goalkeppe - x_player_teammate_Goalkeeper = None - y_player_teammate_Goalkeeper = None + x_player_teammate_Goalkeeper = np.nan + y_player_teammate_Goalkeeper = np.nan #Reszta Zawodnikow print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") @@ -158,7 +160,7 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min shot_open_goal,shot_follows_dribble, shot_redirect, shooter[0], shooter[1],number_of_players_opponents, number_of_players_teammates,angle, distance, - x_player_opponent_Goalkeeper, + x_player_opponent_Goalkeeper, opponentsList[8][0], opponentsList[0][0], opponentsList[1][0], opponentsList[2][0], opponentsList[3][0], opponentsList[4][0], opponentsList[5][0], opponentsList[6][0], opponentsList[7][0], teamMatesList[8][0], @@ -177,6 +179,10 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min teamMatesList[8][1], teamMatesList[9][1], x_player_teammate_Goalkeeper, y_player_teammate_Goalkeeper, shot_kick_off] + + categorical_columns = ['position_name', 'shot_technique_name', 'shot_type_name', 'number_of_players_opponents', 'number_of_players_teammates', 'shot_body_part_name'] # list all your object columns here + # X_new = pd.get_dummies(X_new, columns=categorical_columns) + X_new[categorical_columns] = X_new[categorical_columns].astype('category') return model.predict_proba(X_new)[0][1].round(2) @@ -213,5 +219,5 @@ def zmienWMaciez(lista): maciez.append(player) if(len(maciez) < 10): for i in range(len(maciez),11,1): - maciez.append([None,None]) + maciez.append([np.nan,np.nan]) return maciez \ No newline at end of file diff --git a/app/src/flask-server/server.py b/app/src/flask-server/server.py index 797d647..9e81cf8 100644 --- a/app/src/flask-server/server.py +++ b/app/src/flask-server/server.py @@ -50,7 +50,7 @@ def get_model(): print("bramkarz: " + str(goalkepper) ) response = xgboost_predict_proba_v2(shooter = shooter, - opponentsList = opponentsList, teamMatesList = teamMatesList ,minute = 20, position_name = position_name, shot_body_part_name = body_part, shot_technique_name = technique, + opponentsList = opponentsList, teamMatesList = teamMatesList, minute = 20, position_name = position_name, shot_body_part_name = body_part, shot_technique_name = technique, shot_type_name = acionType, shot_first_time = False, shot_aerial_won = False, shot_deflected = False, shot_open_goal = False, shot_follows_dribble = False, shot_redirect = False, shot_kick_off = False, goalkeeper= goalkepper From f96465ed56b278d73d60ebe90736588f18cc56ce Mon Sep 17 00:00:00 2001 From: unknown Date: Mon, 8 Jan 2024 22:50:39 +0100 Subject: [PATCH 2/3] zmiana jezyka zmiennych kategorycznych --- app/src/components/Hero.jsx | 38 +++++++++--------- .../modele/__pycache__/modele.cpython-310.pyc | Bin 6324 -> 6301 bytes app/src/flask-server/modele/modele.py | 34 +++++++--------- 3 files changed, 33 insertions(+), 39 deletions(-) diff --git a/app/src/components/Hero.jsx b/app/src/components/Hero.jsx index 1aeb598..5e0ba49 100644 --- a/app/src/components/Hero.jsx +++ b/app/src/components/Hero.jsx @@ -342,10 +342,10 @@ const Hero = () => { @@ -355,23 +355,23 @@ const Hero = () => {
setActionType(event.target.value)} defaultValue={technique}>
@@ -379,10 +379,10 @@ const Hero = () => { onChange={event => setPossition(event.target.value)} defaultValue={shooterPossition}> diff --git a/app/src/flask-server/modele/__pycache__/modele.cpython-310.pyc b/app/src/flask-server/modele/__pycache__/modele.cpython-310.pyc index 903c3c65412aaf3432a60285e90b5116ccc78c85..5f6495df539579769dec03a1e4148135fd538767 100644 GIT binary patch delta 614 zcmXAk&ubGw6vyZ7>~1Fedy{OFwHAN0Drp5NRZ;LDsHH-oh(#nAH09M`jN5dwLTh(V z$*~8+9Q2@)o;`>}@PF{)*<8HpA0T)VXLN@7eBaFbG4Fj^e!J}MxUNOy`u6nA_MeeE z2ia)p{02d-Yc>j~qcJ26h9(xI7Lj35s)ZKXQf+k5mFl2}zEl?j45fNl!m?B!D;P-) zKEB(~Y$ku{D==;HTU%lfOcv~Ufcs+2d2gbXSI`pR#%CU*od7y{Ewws!9{=O9Hp%o6 zWX1?mGcyMuZo9i+i4X2o(e)gkVmT(L$3(_ZtO(z`AiXQz9r4mzRB>KY)cmvHi535r z82Z7yn}r>30M|$sjQuP;0+o$MOvVAaM{t+aqseDKgW^vrd){2-fxz$_gyJyl1XC^P zO=;3fcttvSBxvco`9KYLTKp)T2y|TsrpXaClbTS{#BBK&o#lIza%BPFg}4&kfLvrz zKC>^A+K*nZM~7b)uXB*My3P+K{)~+4iHp_MQ#WHPX;Ef6g}>&xi3b1x delta 628 zcma)&O=}ZT6o&7aJCoeZ_cSw26NxSwDzU{9KQ=|MMTr#(in zrJHazf(Yrxh2lcfjnH4Re=y4#f+hLpLN>BPM!XLFC| z-r8(F^6HBwXFEAu6RAIO)8Gh-3^eLu;-PZ{_eFbt`q4|F^Pt;X+W4=EeO~&vq)Wkh z@Ttf7am15TeYd}ZaY)~TpQY{MbC&4K+__L`3X1kMUFx8u2`oM@Dt;dJcA5jb72|=yfypo6nQpf=fl)1bq zwkw&I!bC%Xf_7_dPo5g_&fcIudtRK=``V`EgAQ?A#Ci0$cBXa6HkO4n3wcz?K_R0; go)(hQ=EBvp4YsyWU<0osm8rJWLuIg&s$`e{0aBcbO8@`> diff --git a/app/src/flask-server/modele/modele.py b/app/src/flask-server/modele/modele.py index b821860..f9d1884 100644 --- a/app/src/flask-server/modele/modele.py +++ b/app/src/flask-server/modele/modele.py @@ -1,15 +1,12 @@ from joblib import load import pandas as pd from math import sqrt -import numpy as np import math -from sklearn.preprocessing import LabelEncoder +import numpy as np # Funkcja zwraca prawdopodobieństwo zdobycia gola -def LogisticRegression_predict_proba(position_x, position_y, distance_to_goalM, angle, match_minute, Number_Intervening_Opponents, Number_Intervening_Teammates, isFoot, isHead): - - # distance_to_goalM = sqrt(( (position_x**2) + (position_y**2))) - +def LogisticRegression_predict_proba(position_x, position_y, distance_to_goalM, angle, match_minute, Number_Intervening_Opponents, Number_Intervening_Teammates, isFoot, isHead): + # distance_to_goalM = sqrt(( (position_x**2) + (position_y**2))) model = load('regresja_logistyczna.joblib') X_new = pd.DataFrame(columns=['position_x', 'position_y', 'distance_to_goalM', 'angle','match_minute', 'Number_Intervening_Opponents','Number_Intervening_Teammates', 'isFoot', 'isHead']) X_new.loc[len(X_new.index)] = [position_x, position_y, distance_to_goalM, angle, match_minute, Number_Intervening_Opponents, Number_Intervening_Teammates, isFoot, isHead] @@ -102,7 +99,7 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min 'shot_open_goal','shot_follows_dribble', 'shot_redirect', 'x1', 'y1','number_of_players_opponents', 'number_of_players_teammates','angle', 'distance', - 'x_player_opponent_Goalkeeper', 'x_player_opponent_8', + 'x_player_opponent_Goalkeeper', 'x_player_opponent_1', 'x_player_opponent_2','x_player_opponent_3', 'x_player_opponent_4','x_player_opponent_5', 'x_player_opponent_6', 'x_player_teammate_2','x_player_opponent_9', 'x_player_opponent_10', @@ -139,8 +136,10 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min teamMatesList = zmienWMaciez(teamMatesList) opponentsList = zmienWMaciez(opponentsList) - number_of_players_opponents = len(teamMatesList) - number_of_players_teammates = len(opponentsList) + + # DO ROZBUDOWY + number_of_players_opponents = 3 + number_of_players_teammates = 3 # Bramkarz x_player_opponent_Goalkeeper = goalkeeper[0] y_player_opponent_Goalkeeper = goalkeeper[1] @@ -151,16 +150,13 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min x_player_teammate_Goalkeeper = np.nan y_player_teammate_Goalkeeper = np.nan #Reszta Zawodnikow - - print("AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA") - print(X_new.head) X_new.loc[len(X_new.index)] = [minute, position_name, shot_body_part_name, shot_technique_name,shot_type_name, shot_first_time, shot_one_on_one,shot_aerial_won, shot_deflected, shot_open_goal,shot_follows_dribble, shot_redirect, shooter[0], shooter[1],number_of_players_opponents, number_of_players_teammates,angle, distance, - x_player_opponent_Goalkeeper, opponentsList[8][0], + x_player_opponent_Goalkeeper, opponentsList[0][0], opponentsList[1][0], opponentsList[2][0], opponentsList[3][0], opponentsList[4][0], opponentsList[5][0], opponentsList[6][0], opponentsList[7][0], teamMatesList[8][0], @@ -179,15 +175,13 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min teamMatesList[8][1], teamMatesList[9][1], x_player_teammate_Goalkeeper, y_player_teammate_Goalkeeper, shot_kick_off] + - categorical_columns = ['position_name', 'shot_technique_name', 'shot_type_name', 'number_of_players_opponents', 'number_of_players_teammates', 'shot_body_part_name'] # list all your object columns here - # X_new = pd.get_dummies(X_new, columns=categorical_columns) - X_new[categorical_columns] = X_new[categorical_columns].astype('category') - return model.predict_proba(X_new)[0][1].round(2) # Pomocnicze Funkcje +# trzeba uzupelnic def sortNearestToShooter(playerList, shooter): return playerList @@ -204,14 +198,14 @@ def loc2angle(x, y): rads = math.pi + rads if rads < 0 else rads deg = math.degrees(rads) return deg - +# zamiana stringa odzielonego ',' na liste def konwertujDoListy(listaString): listaString = listaString.split(",") listaFloat = [] for elem in listaString: listaFloat.append(float(elem)) return listaFloat - +#Zamiana listy w formie [1x,1y,2x,2y,3x,3y...] do postaci maciezy [xi, yi] def zmienWMaciez(lista): maciez = [] for i in range(0,len(lista),2): @@ -220,4 +214,4 @@ def zmienWMaciez(lista): if(len(maciez) < 10): for i in range(len(maciez),11,1): maciez.append([np.nan,np.nan]) - return maciez \ No newline at end of file + return maciez From e03d8b48af6c2810fb0ee4d0473c91606327cf70 Mon Sep 17 00:00:00 2001 From: LukaszChrostowski Date: Mon, 8 Jan 2024 23:02:58 +0100 Subject: [PATCH 3/3] work work work --- .DS_Store | Bin 8196 -> 8196 bytes app/src/flask-server/modele/modele.py | 9 ++++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/.DS_Store b/.DS_Store index 4b2dabf0f183b068696d0d561ff32d7cec30e8b7..b06a9fd2706ace93b89e2fd4763d561e9067b5f0 100644 GIT binary patch delta 24 fcmZp1XmQxESAgBjSVzIg++gy35&O-|f{gqCV;~0i delta 16 XcmZp1XmQxES77oD5x33Ef{gqCIdKJ| diff --git a/app/src/flask-server/modele/modele.py b/app/src/flask-server/modele/modele.py index f9d1884..db1c82e 100644 --- a/app/src/flask-server/modele/modele.py +++ b/app/src/flask-server/modele/modele.py @@ -99,7 +99,7 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min 'shot_open_goal','shot_follows_dribble', 'shot_redirect', 'x1', 'y1','number_of_players_opponents', 'number_of_players_teammates','angle', 'distance', - 'x_player_opponent_Goalkeeper', + 'x_player_opponent_Goalkeeper', 'x_player_opponent_8', 'x_player_opponent_1', 'x_player_opponent_2','x_player_opponent_3', 'x_player_opponent_4','x_player_opponent_5', 'x_player_opponent_6', 'x_player_teammate_2','x_player_opponent_9', 'x_player_opponent_10', @@ -156,7 +156,7 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min shot_open_goal,shot_follows_dribble, shot_redirect, shooter[0], shooter[1],number_of_players_opponents, number_of_players_teammates,angle, distance, - x_player_opponent_Goalkeeper, + x_player_opponent_Goalkeeper, opponentsList[8][0], opponentsList[0][0], opponentsList[1][0], opponentsList[2][0], opponentsList[3][0], opponentsList[4][0], opponentsList[5][0], opponentsList[6][0], opponentsList[7][0], teamMatesList[8][0], @@ -176,7 +176,10 @@ def xgboost_predict_proba_v2(shooter,goalkeeper,teamMatesList,opponentsList, min x_player_teammate_Goalkeeper, y_player_teammate_Goalkeeper, shot_kick_off] - + categorical_columns = ['position_name', 'shot_technique_name', 'shot_type_name', 'number_of_players_opponents', 'number_of_players_teammates', 'shot_body_part_name'] # list all your object columns here + # X_new = pd.get_dummies(X_new, columns=categorical_columns) + X_new[categorical_columns] = X_new[categorical_columns].astype('category') + return model.predict_proba(X_new)[0][1].round(2)