from fcl_parser import FCLParser import skfuzzy.control as ctrl import pandas as pd def test(): 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] 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)): 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: 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])+'|') num = 0 cor = 0 home_count = 0 draw_count = 0 away_count = 0 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)) if __name__ == "__main__": while True: 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) 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")