LSR/main.py

68 lines
2.2 KiB
Python
Raw Normal View History

2020-06-04 19:21:01 +02:00
from fcl_parser import FCLParser
import skfuzzy.control as ctrl
import pandas as pd
teams = pd.read_csv('teams_list.csv')
matches = pd.read_csv('matches_list.csv')
2020-06-09 19:57:26 +02:00
not_in_df = ['Podbeskidzie']
2020-06-04 19:21:01 +02:00
matches_input = []
2020-06-09 19:57:26 +02:00
for i in range(0,matches.shape[0]):
2020-06-04 19:21:01 +02:00
team1 = matches['Team1'][i][:-1]
team2 = matches['Team2'][i][1:-1]
gameweek = matches['Gameweek'][i]
if((team1 not in not_in_df) and (team2 not in not_in_df)):
2020-06-09 19:57:26 +02:00
try:
form_1 = teams.loc[ (teams['Team'] == team1) & (teams['Gameweek'] == gameweek)].Form.values[0]
temp_1 = teams.loc[ (teams['Team'] == team1) & (teams['Gameweek'] == gameweek)].Points.values[0]
form_2 = teams.loc[ (teams['Team'] == team2) & (teams['Gameweek'] == gameweek)].Form.values[0]
temp_2 = teams.loc[ (teams['Team'] == team2) & (teams['Gameweek'] == gameweek)].Points.values[0]
except:
print(team1 + team2 + str(gameweek))
2020-06-04 19:21:01 +02:00
points = temp_1 - temp_2
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, ground_truth])
p = FCLParser() # Create the parser
p.read_fcl_file('worker.fcl')
cs1 = ctrl.ControlSystem(p.rules)
module = ctrl.ControlSystemSimulation(cs1)
2020-06-04 21:29:51 +02:00
predictions = []
2020-06-10 10:28:41 +02:00
for i in range(0,matches.shape[0]):
2020-06-04 19:21:01 +02:00
module.input['form1'] = matches_input[i][0]
module.input['form2'] = matches_input[i][1]
2020-06-10 11:29:47 +02:00
module.input['points'] = matches_input[i][2]
2020-06-04 19:21:01 +02:00
module.compute()
2020-06-04 21:29:51 +02:00
x = module.output['result']
2020-06-09 17:11:27 +02:00
x = float("{:.4f}".format(x))
2020-06-10 11:29:47 +02:00
#y = int(round(x))
if x > 0.2:
y = 1
elif x < -0.2:
y = -1
else:
y = 0
2020-06-04 21:29:51 +02:00
predictions.append(y)
2020-06-09 19:57:26 +02:00
print("|FCL: " +str(x) + "|ROUND: " + str(y) + "|GROUND: " + str(matches_input[i][3]) + "|PKT DIFFERENCE: " + str(matches_input[i][2])+'|')
2020-06-04 21:29:51 +02:00
num = 0
cor = 0
2020-06-10 10:28:41 +02:00
for i in range(0,matches.shape[0]):
2020-06-04 21:29:51 +02:00
if(predictions[i]==matches_input[i][3]):
cor+=1
num+=1
else:
num+=1
print(float(cor/num))