diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 964f33f..df67756 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -3,7 +3,6 @@
-
@@ -90,22 +89,22 @@
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
@@ -132,25 +131,6 @@
-
-
-
- file://$PROJECT_DIR$/main.py
- 119
-
-
-
- file://$PROJECT_DIR$/main.py
- 120
-
-
-
- file://$PROJECT_DIR$/main.py
- 121
-
-
-
-
diff --git a/main.py b/main.py
index 9a2a9eb..4091879 100644
--- a/main.py
+++ b/main.py
@@ -2,131 +2,163 @@ from fcl_parser import FCLParser
import skfuzzy.control as ctrl
import pandas as pd
-s1 = '2018/2019'
-s2 = '2019/2020'
-teams = pd.read_csv('teams_list.csv')
-matches = pd.read_csv('matches_list.csv')
-not_in_df = ['Podbeskidzie']
-matches_input = []
-for i in range(0,matches.shape[0]):
- team1 = matches['Team1'][i][:-1]
- team2 = matches['Team2'][i][1:-1]
- gameweek = matches['Gameweek'][i]
- season = matches['Season'][i]
+def test():
+ s1 = '2018/2019'
+ s2 = '2019/2020'
+ teams = pd.read_csv('teams_list.csv')
+ matches = pd.read_csv('matches_list.csv')
- points2017 = {
- "Legia Warszawa": 70,
- "Jagiellonia Białystok": 67,
- "Lech Poznań": 60,
- "Górnik Zabrze": 60,
- "Wisła Płock": 57,
- "Wisła Kraków": 55,
- "Zagłębie Lubin": 52,
- "Korona Kielce": 49,
- "Cracovia Kraków": 50,
- "Śląsk Wrocław": 50,
- "Pogoń Szczecin": 45,
- "Arka Gdynia": 43,
- "Lechia Gdańsk": 39,
- "Piast Gliwice": 37,
- "Miedź Legnica": 35,
- "Zagłębie Sosnowiec": 35,
- }
+ not_in_df = ['Podbeskidzie']
+ matches_input = []
+ for i in range(0,matches.shape[0]):
+ team1 = matches['Team1'][i][:-1]
+ team2 = matches['Team2'][i][1:-1]
+ gameweek = matches['Gameweek'][i]
+ season = matches['Season'][i]
+
+ points2017 = {
+ "Legia Warszawa": 70,
+ "Jagiellonia Białystok": 67,
+ "Lech Poznań": 60,
+ "Górnik Zabrze": 60,
+ "Wisła Płock": 57,
+ "Wisła Kraków": 55,
+ "Zagłębie Lubin": 52,
+ "Korona Kielce": 49,
+ "Cracovia Kraków": 50,
+ "Śląsk Wrocław": 50,
+ "Pogoń Szczecin": 45,
+ "Arka Gdynia": 43,
+ "Lechia Gdańsk": 39,
+ "Piast Gliwice": 37,
+ "Miedź Legnica": 35,
+ "Zagłębie Sosnowiec": 35,
+ }
- if((team1 not in not_in_df) and (team2 not in not_in_df)):
- try:
-
- form_1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Form.values[0]
- temp_1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Points.values[0]
- xGform_1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].xGform.values[0]
-
- form_2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Form.values[0]
- temp_2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Points.values[0]
- xGform_2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].xGform.values[0]
-
- except:
- print(team1 + team2 + str(gameweek))
-
- if ((gameweek < 7) & (season==s1)):
+ if((team1 not in not_in_df) and (team2 not in not_in_df)):
try:
- t1 = points2017[team1]
- except:
- t1 = 35
- try:
- t2 = points2017[team2]
- except:
- t2 = 35
- points = t1 - t2
- elif ((gameweek < 7) & (season==s2)):
- try:
- t1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == 37) & (teams['Season'] == s1)].Points.values[0]
- except:
- t1 = 35
- try:
- t2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == 37) & (teams['Season'] == s1)].Points.values[0]
- except:
- t2 = 35
- points = t1 - t2
- else:
- points = temp_1 - temp_2
- #0.365234375
+ form_1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Form.values[0]
+ temp_1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Points.values[0]
+ xGform_1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].xGform.values[0]
- temp = teams.loc[ (teams['Team'] == team1) & (teams['Gameweek'] == gameweek)].Result.values[0]
- ground_truth = 0
- if(temp == 'W'):
- ground_truth = -1
- elif(temp == 'D'):
+ form_2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Form.values[0]
+ temp_2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].Points.values[0]
+ xGform_2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == gameweek) & (teams['Season'] == season)].xGform.values[0]
+
+ except:
+ print(team1 + team2 + str(gameweek))
+
+ if ((gameweek < 7) & (season==s1)):
+ try:
+ t1 = points2017[team1]
+ except:
+ t1 = 35
+ try:
+ t2 = points2017[team2]
+ except:
+ t2 = 35
+ points = t1 - t2
+
+ elif ((gameweek < 7) & (season==s2)):
+ try:
+ t1 = teams.loc[(teams['Team'] == team1) & (teams['Gameweek'] == 37) & (teams['Season'] == s1)].Points.values[0]
+ except:
+ t1 = 35
+ try:
+ t2 = teams.loc[(teams['Team'] == team2) & (teams['Gameweek'] == 37) & (teams['Season'] == s1)].Points.values[0]
+ except:
+ t2 = 35
+ points = t1 - t2
+ else:
+ points = temp_1 - temp_2
+ #0.365234375
+
+ temp = teams.loc[ (teams['Team'] == team1) & (teams['Gameweek'] == gameweek)].Result.values[0]
ground_truth = 0
+ if(temp == 'W'):
+ ground_truth = -1
+ elif(temp == 'D'):
+ ground_truth = 0
+ else:
+ ground_truth = 1
+ matches_input.append([form_1, form_2, points, xGform_1, xGform_2, ground_truth])
+
+ p = FCLParser() # Create the parser
+ p.read_fcl_file('C:\Studia\LSR-master\lsr\worker.fcl')
+
+ cs1 = ctrl.ControlSystem(p.rules)
+ module = ctrl.ControlSystemSimulation(cs1)
+ predictions = []
+ for i in range(0,matches.shape[0]):
+ module.input['form1'] = matches_input[i][0]
+ module.input['form2'] = matches_input[i][1]
+ module.input['points'] = matches_input[i][2]
+ module.input['xGform1'] = matches_input[i][3]
+ module.input['xGform2'] = matches_input[i][4]
+ module.compute()
+ x = module.output['result']
+ x = float("{:.4f}".format(x))
+
+ #y = int(round(x))
+ if x > 0.1:
+ y = 1
+ elif x < -0.1:
+ y = -1
else:
- ground_truth = 1
- matches_input.append([form_1, form_2, points, xGform_1, xGform_2, ground_truth])
+ y = 0
+ predictions.append(y)
+ print("|FCL: " +str(x) + "|ROUND: " + str(y) + "|GROUND: " + str(matches_input[i][5]) + "|PKT DIFFERENCE: " + str(matches_input[i][2])+'|')
-p = FCLParser() # Create the parser
-p.read_fcl_file('worker.fcl')
+ num = 0
+ cor = 0
+ home_count = 0
+ draw_count = 0
+ away_count = 0
-cs1 = ctrl.ControlSystem(p.rules)
-module = ctrl.ControlSystemSimulation(cs1)
-predictions = []
-for i in range(0,matches.shape[0]):
- module.input['form1'] = matches_input[i][0]
- module.input['form2'] = matches_input[i][1]
- module.input['points'] = matches_input[i][2]
- module.input['xGform1'] = matches_input[i][3]
- module.input['xGform2'] = matches_input[i][4]
- module.compute()
- x = module.output['result']
- x = float("{:.4f}".format(x))
+ for i in range(0,matches.shape[0]):
+ if (matches_input[i][5] == -1): home_count+=1
+ if (matches_input[i][5] == 0): draw_count += 1
+ if (matches_input[i][5] == 1): away_count += 1
+ if(predictions[i]==matches_input[i][5]):
+ cor+=1
+ num+=1
+ else:
+ num+=1
+ from collections import Counter
+ print("Predictions: " + str(Counter(predictions).keys()))
+ print("Predictions: " + str(Counter(predictions).values()))
+ print("GT: " + str(home_count) + " " + str(draw_count) + " " + str(away_count))
+ print(float(cor/num))
- #y = int(round(x))
- if x > 0.1:
- y = 1
- elif x < -0.1:
- y = -1
- else:
- y = 0
- predictions.append(y)
- print("|FCL: " +str(x) + "|ROUND: " + str(y) + "|GROUND: " + str(matches_input[i][5]) + "|PKT DIFFERENCE: " + str(matches_input[i][2])+'|')
+if __name__ == "__main__":
+ while True:
+ p = FCLParser() # Create the parser
+ p.read_fcl_file('C:\Studia\LSR-master\lsr\worker.fcl')
-num = 0
-cor = 0
-home_count = 0
-draw_count = 0
-away_count = 0
+ cs1 = ctrl.ControlSystem(p.rules)
+ module = ctrl.ControlSystemSimulation(cs1)
+ print("Wpisz 'test' albo dodaj wartości (po przecinku): forma1, forma2, punkty, xGforma1, xGforma2")
+ command = input()
+ if command == "test":
+ test()
+ else:
+ values = command.split(sep=',')
+ module.input['form1'] = float(values[0])
+ module.input['form2'] = float(values[1])
+ module.input['points'] = float(values[2])
+ module.input['xGform1'] = float(values[3])
+ module.input['xGform2'] = float(values[4])
+ module.compute()
+ x = module.output['result']
+ x = float("{:.4f}".format(x))
+ print(x)
+ if x > 0.1:
+ print("Wygra drużyna 2")
+ elif x < -0.1:
+ print("Wygra drużyna 1")
+ else:
+ print("Będzie remis")
-for i in range(0,matches.shape[0]):
- if (matches_input[i][5] == -1): home_count+=1
- if (matches_input[i][5] == 0): draw_count += 1
- if (matches_input[i][5] == 1): away_count += 1
- if(predictions[i]==matches_input[i][5]):
- cor+=1
- num+=1
- else:
- num+=1
-from collections import Counter
-print("Predictions: " + str(Counter(predictions).keys()))
-print("Predictions: " + str(Counter(predictions).values()))
-print("GT: " + str(home_count) + " " + str(draw_count) + " " + str(away_count))
-print(float(cor/num))
diff --git a/worker.fcl b/worker.fcl
index 9774e17..532494b 100644
--- a/worker.fcl
+++ b/worker.fcl
@@ -60,8 +60,7 @@ RULEBLOCK
ACCU : MAX;
ACT : MIN;
- // 0.365234375
- //tego nic nie daje
+
RULE 0 : if form1 is great and form2 is bad then result is home
// rozbicie home
RULE 3 : if form1 is great and form2 is avg and points is low then result is draw
@@ -73,7 +72,7 @@ RULEBLOCK
RULE 7 : if form1 is great and form2 is great and points is avg then result is home
RULE 8 : if form1 is great and form2 is great and points is high then result is home
- //rozbicie tego jednego home coś dało
+ //rozbicie home
RULE 31 : if form1 is avg and form2 is bad and points is low then result is draw
RULE 32 : if form1 is avg and form2 is bad and points is avg then result is home
RULE 33 : if form1 is avg and form2 is bad and points is high then result is home
@@ -92,7 +91,6 @@ RULEBLOCK
RULE 62 : if form1 is bad and form2 is bad and points is avg then result is draw
RULE 63 : if form1 is bad and form2 is bad and points is high then result is home
- // to rozbicie nic nie daje
RULE 66 : if form1 is bad and form2 is avg then result is away
// rozbicie away
RULE 67 : if form1 is bad and form2 is great and points is low then result is away