-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.py
More file actions
75 lines (63 loc) · 3.35 KB
/
main.py
File metadata and controls
75 lines (63 loc) · 3.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
import pandas as pd
df1 = pd.read_excel("foot.xlsx", sheet_name="MultiMatchs")
df2 = pd.read_excel("foot.xlsx", sheet_name="MultiLeagues")
coef_E_D_range = [0.51,0.52,0.53,0.54,0.55,0.56,0.57,0.58,0.59,0.6,0.61,0.62,0.63,0.64,0.65,0.66,0.67,0.68,0.69]
coef_F_D_range = [0.49]
coef_H_range = [0.1]
coef_I_range = [0.05]
coef_K_range = [0.39]
moy_H = df2["G+"].mean()
moy_I = df2["G-"].mean()
max_J = df2["PTS"].max()
results = []
def safe_get_score(row, team_col, col_name):
matching_row = df2.loc[df2["Equipes"] == row[team_col]]
if not matching_row.empty:
return matching_row[col_name].values[0]
else:
return 0
i = 0
for coef_E_D in coef_E_D_range:
for coef_F_D in coef_F_D_range:
for coef_H in coef_H_range:
for coef_I in coef_I_range:
for coef_K in coef_K_range:
print(i)
col_name = f"Score_E_D{coef_E_D}_F_D{coef_F_D}_H{coef_H}_I{coef_I}_J{coef_K}_K{coef_K}"
df2[col_name] = ((df2["W"] / df2["J"]) * coef_E_D + (df2["N"] / df2["J"]) * coef_F_D + (df2["G+"] / moy_H) * coef_H + (df2["G-"] / moy_I) * coef_I + (1 - (df2["PTS"] / max_J)) * coef_K) * 100
df1["J_test"] = df1.apply(
lambda row: (safe_get_score(row, "Équipe 1", col_name) /
(safe_get_score(row, "Équipe 1", col_name) +
safe_get_score(row, "Équipe 2", col_name))) * 100
if row["Équipe 1"] in df2["Equipes"].values else 0,
axis=1
)
df1["K_test"] = df1.apply(
lambda row: (safe_get_score(row, "Équipe 2", col_name) /
(safe_get_score(row, "Équipe 1", col_name) +
safe_get_score(row, "Équipe 2", col_name))) * 100
if row["Équipe 2"] in df2["Equipes"].values else 0,
axis=1
)
df1["L_test"] = df1.apply(lambda row: "True" if
(row["J_test"] > row["K_test"] and row["Équipe 1 score"] > row["Équipe 2 score"]) or
(row["J_test"] < row["K_test"] and row["Équipe 1 score"] < row["Équipe 2 score"]) or
(row["J_test"] == row["K_test"] and row["Équipe 1 score"] == row["Équipe 2 score"]) or
(row["Équipe 1 score"] == row["Équipe 2 score"] and 45 < row["J_test"] < 55)
else "False", axis=1)
df1["Accuracy"] = df1["L_test"].apply(lambda x: 1 if x == "True" else 0)
m2_value = df1["Accuracy"].sum() / (df1["Accuracy"].count() - 1) * 100
results.append({
'coef_E_D': coef_E_D,
'coef_F_D': coef_F_D,
'coef_H': coef_H,
'coef_I': coef_I,
'coef_K': coef_K,
'Accuracy': m2_value
})
i += 1
best_combination = pd.DataFrame(results).loc[pd.DataFrame(results)['Accuracy'].idxmax()]
print(f"Meilleure combinaison : {best_combination}")
print(f"Valeur de Accuracy : {best_combination['Accuracy']}")
print("Tous les tests ont été effectués et sauvegardés.")
df1.to_excel("Accuracy_max.xlsx", index=False)