initial commit
This commit is contained in:
commit
7a16f22192
113
data_dictionary.txt
Normal file
113
data_dictionary.txt
Normal file
@ -0,0 +1,113 @@
|
|||||||
|
link_match : page link of match in Premier League Official website
|
||||||
|
season : match season
|
||||||
|
date : match date
|
||||||
|
home_team : home team
|
||||||
|
away_team : away team
|
||||||
|
result_full : match result
|
||||||
|
result_ht : match result in 1st time
|
||||||
|
home_clearances : home team clearances in the match
|
||||||
|
home_corners : home team corners in the match
|
||||||
|
home_fouls_conceded : home team fouls conceded in the match
|
||||||
|
home_offsides : home team offsides in the match
|
||||||
|
home_passes : home team passes in the match
|
||||||
|
home_possession : home team possession in the match
|
||||||
|
home_red_cards : home team red cards in the match
|
||||||
|
home_shots : home team shots in the match
|
||||||
|
home_shots_on_target : home team shots on target in the match
|
||||||
|
home_tackles : home team tackles in the match
|
||||||
|
home_touches : home team touches in the match
|
||||||
|
home_yellow_cards : home team yellow cards in the match
|
||||||
|
away_clearances : away tem clearances in the match
|
||||||
|
away_corners : away team corners in the match
|
||||||
|
away_fouls_conceded : away team fouls conceded in the match
|
||||||
|
away_offsides : away team offsides in the match
|
||||||
|
away_passes : away team passes in the match
|
||||||
|
away_possession : away team possession in the match
|
||||||
|
away_red_cards : away team red cards in the match
|
||||||
|
away_shots : away team shots in the match
|
||||||
|
away_shots_on_target : away team shots on target in the match
|
||||||
|
away_tackles : away team tackles in the match
|
||||||
|
away_touches : away team touches in the match
|
||||||
|
away_yellow_cards : away team yellow cards in the match
|
||||||
|
goal_home_ft : home team goals scored in the match
|
||||||
|
goal_away_ft : away team goals scored in the match
|
||||||
|
sg_match_ft : goals difference between home team and away team in the match
|
||||||
|
goal_home_ht : home team goals scored in 1st time in the match
|
||||||
|
goal_away_ht : away team goals scored in 1st time in the match
|
||||||
|
sg_match_ht : goals difference between home team and away team in 1st time in the match
|
||||||
|
clearances_avg_H : average home team clearances in matches as host in the season; accumulated until the last match
|
||||||
|
corners_avg_H : average home team corners in matches as host in the season; accumulated until the last match
|
||||||
|
fouls_conceded_avg_H : average home team fouls conceded in matches as host in the season; accumulated until the last match
|
||||||
|
offsides_avg_H : average home team offsides in matches as host in the season; accumulated until the last match
|
||||||
|
passes_avg_H : average home team passes in matches as host in the season; accumulated until the last match
|
||||||
|
possession_avg_H : average home team possession in matches as host in the season; accumulated until the last match
|
||||||
|
red_cards_avg_H : average home team red cards in matches as host in the season; accumulated until the last match
|
||||||
|
shots_avg_H : average home team shots in matches as host in the season; accumulated until the last match
|
||||||
|
shots_on_target_avg_H : average home team shots on target in matches as host in the season; accumulated until the last match
|
||||||
|
tackles_avg_H : average home team tackles in matches as host in the season; accumulated until the last match
|
||||||
|
touches_avg_H : average home team touches in matches as host in the season; accumulated until the last match
|
||||||
|
yellow_cards_avg_H : average home team yellow cards in matches as host in the season; accumulated until the last match
|
||||||
|
goals_scored_ft_avg_H : average home team goals scored in matches as host in the season; accumulated until the last match
|
||||||
|
goals_conced_ft_avg_H : average home team goals conceded in matches as host in the season; accumulated until the last match
|
||||||
|
sg_match_ft_acum_H : goals difference in matches as host in the season; accumulated until the last match
|
||||||
|
goals_scored_ht_avg_H : average home team goals scored in 1st time in matches as host in the season; accumulated until the last match
|
||||||
|
goals_conced_ht_avg_H : average home team goals conceded in 1st time in matches as host in the season; accumulated until the last match
|
||||||
|
sg_match_ht_acum_H : goals difference in 1st time in matches as host in the season; accumulated until the last match
|
||||||
|
performance_acum_H : home team percentage of points gains in matches as host in the season; accumulated until the last match
|
||||||
|
clearances_avg_A : average away team clearances in matches as host in the season; accumulated until the last match
|
||||||
|
corners_avg_A : average away team corners in matches as host in the season; accumulated until the last match
|
||||||
|
fouls_conceded_avg_A : average away team fouls conceded in matches as host in the season; accumulated until the last match
|
||||||
|
offsides_avg_A : average away team offsides in matches as host in the season; accumulated until the last match
|
||||||
|
passes_avg_A : average away team passes in matches as host in the season; accumulated until the last match
|
||||||
|
possession_avg_A : average away team possession in matches as host in the season; accumulated until the last match
|
||||||
|
red_cards_avg_A : average away team red cards in matches as host in the season; accumulated until the last match
|
||||||
|
shots_avg_A : average away team shots in matches as host in the season; accumulated until the last match
|
||||||
|
shots_on_target_avg_A : average away team shots on target in matches as host in the season; accumulated until the last match
|
||||||
|
tackles_avg_A : average away team tackles in matches as host in the season; accumulated until the last match
|
||||||
|
touches_avg_A : average away team touches in matches as host in the season; accumulated until the last match
|
||||||
|
yellow_cards_avg_A : average away team yellow cards in matches as host in the season; accumulated until the last match
|
||||||
|
goals_scored_ft_avg_A : average away team goals scored in matches as host in the season; accumulated until the last match
|
||||||
|
goals_conced_ft_avg_A : average away team goals conceded in matches as host in the season; accumulated until the last match
|
||||||
|
sg_match_ft_acum_A : goals difference in matches as host in the season; accumulated until the last match
|
||||||
|
goals_scored_ht_avg_A : average away team goals scored in 1st time in matches as host in the season; accumulated until the last match
|
||||||
|
goals_conced_ht_avg_A : average away team goals conceded in 1st time in matches as host in the season; accumulated until the last match
|
||||||
|
sg_match_ht_acum_A : goals difference in 1st time in matches as host in the season; accumulated until the last match
|
||||||
|
performance_acum_A : away team percentage of points gains in matches as host in the season; accumulated until the last match
|
||||||
|
clearances_avg_home : average home team clearances in the season; accumulated until the last match
|
||||||
|
corners_avg_home : average home team corners in the season; accumulated until the last match
|
||||||
|
fouls_conceded_avg_home : average home team fouls conceded in the season; accumulated until the last match
|
||||||
|
offsides_avg_home : average home team offsides in the season; accumulated until the last match
|
||||||
|
passes_avg_home : average home team passes in the season; accumulated until the last match
|
||||||
|
possession_avg_home : average home team possession in the season; accumulated until the last match
|
||||||
|
red_cards_avg_home : average home team red cards in the season; accumulated until the last match
|
||||||
|
shots_avg_home : average home team shots in the season; accumulated until the last match
|
||||||
|
shots_on_target_avg_home: average home team shots on target in the season; accumulated until the last match
|
||||||
|
tackles_avg_home : average home team tackles in the season; accumulated until the last match
|
||||||
|
touches_avg_home : average home team touches in the season; accumulated until the last match
|
||||||
|
yellow_cards_avg_home : average home team yellow cards in the season; accumulated until the last match
|
||||||
|
goals_scored_ft_avg_home: average home team goals scored in the season; accumulated until the last match
|
||||||
|
goals_conced_ft_avg_home: average home team goals conceded in the season; accumulated until the last match
|
||||||
|
sg_match_ft_acum_home : goals difference in the season; accumulated until the last match
|
||||||
|
goals_scored_ht_avg_home: average home team goals scored in 1st time in the season; accumulated until the last match
|
||||||
|
goals_conced_ht_avg_home: average home team goals conceded in 1st time in the season; accumulated until the last match
|
||||||
|
sg_match_ht_acum_home : goals difference in 1st time in the season; accumulated until the last match
|
||||||
|
performance_acum_home : home team percentage of points gains in the season; accumulated until the last match
|
||||||
|
clearances_avg_away : average away team clearances in the season; accumulated until the last match
|
||||||
|
corners_avg_away : average away team corners in the season; accumulated until the last match
|
||||||
|
fouls_conceded_avg_away : average away team fouls conceded in the season; accumulated until the last match
|
||||||
|
offsides_avg_away : average away team offsides in the season; accumulated until the last match
|
||||||
|
passes_avg_away : average away team passes in the season; accumulated until the last match
|
||||||
|
possession_avg_away : average away team possession in the season; accumulated until the last match
|
||||||
|
red_cards_avg_away : average away team red cards in the season; accumulated until the last match
|
||||||
|
shots_avg_away : average away team shots in the season; accumulated until the last match
|
||||||
|
shots_on_target_avg_away: average away team shots on target in the season; accumulated until the last match
|
||||||
|
tackles_avg_away : average away team tackles in the season; accumulated until the last match
|
||||||
|
touches_avg_away : average away team touches in the season; accumulated until the last match
|
||||||
|
yellow_cards_avg_away : average away team yellow cards in the season; accumulated until the last match
|
||||||
|
goals_scored_ft_avg_away: average away team goals scored in the season; accumulated until the last match
|
||||||
|
goals_conced_ft_avg_away: average away team goals conceded in the season; accumulated until the last match
|
||||||
|
sg_match_ft_acum_away : goals difference in the season; accumulated until the last match
|
||||||
|
goals_scored_ht_avg_away: average away team goals scored in 1st time in the season; accumulated until the last match
|
||||||
|
goals_conced_ht_avg_away: average away team goals conceded in 1st time in the season; accumulated until the last match
|
||||||
|
sg_match_ht_acum_away : goals difference in 1st time in the season; accumulated until the last match
|
||||||
|
performance_acum_away : away team percentage of points gains in the season; accumulated until the last match
|
4071
df_full_premierleague.csv
Normal file
4071
df_full_premierleague.csv
Normal file
File diff suppressed because it is too large
Load Diff
106
main.py
Normal file
106
main.py
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
import pandas as pd
|
||||||
|
from simpful import *
|
||||||
|
|
||||||
|
df = pd.read_csv('df_full_premierleague.csv')
|
||||||
|
|
||||||
|
|
||||||
|
# Ostatnie 5 spotkań
|
||||||
|
#Forma: 0-6 punktow = słaba, średnia 6-10, dobra 10-15 punktow
|
||||||
|
#Bilans bramek ujemny dodatni
|
||||||
|
#Strzały 6- mało pomiędzy średnio 12 - dużo
|
||||||
|
#Posiadanie piłki słabe 30-40, średnie = 40-55, dobre = 56-64
|
||||||
|
#Podania ponizej 300-400 słabo powyżej 500 dużo
|
||||||
|
|
||||||
|
|
||||||
|
def generateTrainingData(dataframe):
|
||||||
|
columns = ['season','date','home_team','away_team','result_full','home_passes','away_passes',
|
||||||
|
'home_possession','away_possession','home_shots','away_shots']
|
||||||
|
return dataframe[columns]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def last5Matches(sezon, druzynaA, data, df):
|
||||||
|
# Wybierz rekordy dla danej pary drużyn i sezonu
|
||||||
|
subset = df[((df['season'] == sezon) & ((df['home_team'] == druzynaA) | (df['away_team'] == druzynaA)))]
|
||||||
|
|
||||||
|
# Filtruj dane, aby zawierały te przed daną datą
|
||||||
|
przed_dana_data = subset[pd.to_datetime(subset['date']) < pd.to_datetime(data)]
|
||||||
|
|
||||||
|
# Posortuj wg daty w odwrotnej kolejności
|
||||||
|
przed_dana_data = przed_dana_data.sort_values(by='date', ascending=False)
|
||||||
|
|
||||||
|
# Wybierz 5 ostatnich przed daną datą
|
||||||
|
ostatnie_przed_data = przed_dana_data.head(5)
|
||||||
|
|
||||||
|
return ostatnie_przed_data
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
def getResult(score,teamHome):
|
||||||
|
x,y = score.split('-')
|
||||||
|
x = int(x)
|
||||||
|
y = int(y)
|
||||||
|
|
||||||
|
if (x > y and teamHome == True) or (x < y and teamHome == False):
|
||||||
|
return "win"
|
||||||
|
elif x == y:
|
||||||
|
return "draw"
|
||||||
|
else:
|
||||||
|
return "loss"
|
||||||
|
|
||||||
|
|
||||||
|
def calculatePoints(matches, team):
|
||||||
|
points = 0
|
||||||
|
for index, row in matches.iterrows():
|
||||||
|
if team == row['home_team']:
|
||||||
|
teamHome = True
|
||||||
|
else:
|
||||||
|
teamHome = False
|
||||||
|
x = getResult(row['result_full'], teamHome)
|
||||||
|
print(x)
|
||||||
|
if x == "win":
|
||||||
|
points = points + 3
|
||||||
|
elif x == "draw":
|
||||||
|
points = points + 1
|
||||||
|
return points
|
||||||
|
|
||||||
|
|
||||||
|
def calculateGoalDifference(matches, team):
|
||||||
|
goal_diff = 0
|
||||||
|
for index, row in matches.iterrows():
|
||||||
|
if team == row['home_team']:
|
||||||
|
teamHome = True
|
||||||
|
else:
|
||||||
|
teamHome = False
|
||||||
|
x,y = row['result_full'].split('-')
|
||||||
|
x = int(x)
|
||||||
|
y = int(y)
|
||||||
|
if teamHome:
|
||||||
|
goal_diff = goal_diff + (x-y)
|
||||||
|
else:
|
||||||
|
goal_diff = goal_diff + (y-x)
|
||||||
|
return goal_diff
|
||||||
|
|
||||||
|
def categorize_passes(pass_count):
|
||||||
|
if pass_count < 400:
|
||||||
|
return 0 #słabo
|
||||||
|
elif 400 <= pass_count <= 500:
|
||||||
|
return 1 #średnio
|
||||||
|
else:
|
||||||
|
return 2 #dużo
|
||||||
|
|
||||||
|
wynik = last5Matches('10/11', 'Stoke City', '2010-10-02', df)
|
||||||
|
#print(wynik.to_markdown())
|
||||||
|
print(wynik)
|
||||||
|
#wynik = last5Matches('10/11', 'Blackburn Rovers', '2010-10-02', df)
|
||||||
|
#print(wynik.to_markdown())
|
||||||
|
#print(wynik)
|
||||||
|
|
||||||
|
print(calculatePoints(wynik,'Stoke City'))
|
||||||
|
print(calculateGoalDifference(wynik, 'Stoke City'))
|
||||||
|
|
||||||
|
df = generateTrainingData(df)
|
||||||
|
print(df)
|
||||||
|
|
||||||
|
|
41
rules.py
Normal file
41
rules.py
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
import simpful
|
||||||
|
|
||||||
|
def kategoryzuj_strzaly(ilosc_strzalow):
|
||||||
|
FS = FuzzySystem()
|
||||||
|
TLV = AutoTriangle(3, terms=['mało', 'średnio', 'dużo'], universe_of_discourse=[0, 25])
|
||||||
|
FS.add_linguistic_variable("strzaly", TLV)
|
||||||
|
|
||||||
|
shots1 = TriangleFuzzySet(0, 0, 6, term='mało')
|
||||||
|
shots2 = TriangleFuzzySet(6, 12, 18, term='średnio')
|
||||||
|
shots3 = TriangleFuzzySet(12, 25, 25, term='dużo')
|
||||||
|
FS.add_linguistic_variable("bilans", LinguisticVariable([shots1, shots2, shots3], universe_of_discourse=[0, 25]))
|
||||||
|
|
||||||
|
FS.add_rules(["IF strzaly IS mało THEN bilans IS mało",
|
||||||
|
"IF strzaly IS średnio THEN bilans IS średnio",
|
||||||
|
"IF strzaly IS dużo THEN bilans IS dużo"])
|
||||||
|
|
||||||
|
FS.set_variable("strzaly", ilosc_strzalow)
|
||||||
|
bilans = FS.inference()
|
||||||
|
if bilans['bilans'] >= 12:
|
||||||
|
return 2
|
||||||
|
elif bilans['bilans'] <= 6:
|
||||||
|
return 0
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
def kategorie_strzalow(druzyna, sezon, data, df):
|
||||||
|
ostatnie_spotkania = last5Matches(sezon, druzyna, data, df)
|
||||||
|
|
||||||
|
shots = []
|
||||||
|
for index, spotkanie in ostatnie_spotkania.iterrows():
|
||||||
|
if spotkanie['home_team'] == druzyna:
|
||||||
|
ilosc_strzalow = spotkanie['home_shots']
|
||||||
|
else:
|
||||||
|
ilosc_strzalow = spotkanie['away_shots']
|
||||||
|
|
||||||
|
kategoria = kategoryzuj_strzaly(ilosc_strzalow)
|
||||||
|
shots.append(kategoria)
|
||||||
|
ostatnie_spotkania['cat_shots'] = shots
|
||||||
|
|
||||||
|
return ostatnie_spotkania
|
Loading…
Reference in New Issue
Block a user