Hallo beste studenten,
Heel erg bedankt voor jullie reacties. We zijn al heel ver gekomen en zijn goed op weg.
Dit is de code die we zover hebben: We hebben de gegevens verzamelt van deze dataset: https://www.football-data.co.uk/mmz4281/2223/N1.csv
import numpy as np
import matplotlib.pyplot as plt
import math
import pandas as pd
"1"
df = pd.read_csv (r'c:\Users\vozdy\Desktop\Voetbal gokken PWS 2023-2024\N1.csv')
dataset = df[1:307]
data = dataset[['HomeTeam', 'AwayTeam','FTHG', 'FTAG']]
"2"
home_total = data[['FTHG']].sum()
home_average = data[['FTHG']].mean()
away_total = data[['FTAG']].sum()
away_average = data[['FTAG']].mean()
"3"
gs_home_df = data[data['HomeTeam']=="Heerenveen"]
gs_home_total = gs_home_df[['FTHG']].sum()
gs_home_average = gs_home_df[['FTHG']].mean()
gs_conceed_total = gs_home_df[['FTAG']].sum()
gs_conceed_average = gs_home_df[['FTAG']].mean()
"4"
fb_away_df = data[data['AwayTeam']=="Sparta Rotterdam"]
fb_score_total = fb_away_df[['FTAG']].sum()
fb_score_average = fb_away_df[['FTAG']].mean()
fb_conceed_total = fb_away_df[['FTHG']].sum()
fb_conceed_average = fb_away_df[['FTHG']].mean()
"5"
d = {'Goals scored at home by all': [529, 306, 1.729],
'Away goals scored by all': [406, 306, 1.327],
'Home goals scored by Heerenveen': [21, 17, 1.235],
'Home goals conceed by Heerenveen': [26, 17, 1.529],
'Away goals scored by Sparta Rotterdam': [28, 17, 1.647],
'Home goals conceed by Sparta Rotterdam': [19, 17, 1.118]
}
final = pd.DataFrame(d, index=['goals','matches','average'])
"6"
gs_attack_str = gs_home_average / home_average
fb_attack_str = fb_score_average / away_average
gs_defence_str = gs_conceed_average / away_average
fb_defence_str = fb_conceed_average / home_average
"7"
gs_expect = gs_attack_str * fb_defence_str * home_average
fb_expect = fb_attack_str * gs_defence_str * away_average
"8"
def poisson_probability(l, x):
probability = ((l**x) * math.exp(-l)) / math.factorial(x)
return probability*100
gs_goals_prob = []
for i in range(6):
expect = poisson_probability(gs_expect, i)
gs_goals_prob.append(expect)
X = [0,1,2,3,4,5]
gs_goals_probs = np.round(gs_goals_prob,2)
fig, ax = plt.subplots(1, 1, figsize=(8, 6))
ax.plot(X, gs_goals_probs, 'bo', ms=8)
plt.ylabel("Probability", fontsize="16")
plt.xlabel("X - No. of Goals", fontsize="16")
plt.title("Heerenveen_goal_score", fontsize="18")
ax.vlines(X, 0, gs_goals_probs, colors='b', lw=5, alpha=0.5)
for i, v in enumerate(gs_goals_probs):
ax.text(i, v, str(v), color='red', fontweight='bold')
plt.show()
"9"
fb_goals_prob = []
for i in range(6):
expect = poisson_probability(fb_expect, i)
fb_goals_prob.append(expect)
fb_goals_probs = np.round(fb_goals_prob,2)
fig, ax = plt.subplots(1, 1, figsize=(8, 6))
ax.plot(X, fb_goals_probs, 'bo', ms=8)
plt.ylabel("Probability", fontsize="16")
plt.xlabel("X - No. of Goals", fontsize="16")
plt.title("Sparta Rotterdam goal score", fontsize="18")
ax.vlines(X, 0, fb_goals_probs, colors='b', lw=5, alpha=0.5)
for i, v in enumerate(fb_goals_probs):
ax.text(i, v, str(v), color='red', fontweight='bold')
plt.show()
Als deze code word gerunt zal het een uitslag geven. De code werkt dus. Van deze code heb ik twee vragen.
- Hoe kan ik deze code aanpassen door in plaats van met de hand de club naam in de code te zetten (bijvoorbeeld Heerenveen Thuis en Sparta uit) pas de club naam hoef in te typen als ik de code ga runnen. Hiervoor zou ik meer informatie van de andere club moeten importeren wat ik al heb gedaan. Alleen weet ik nog niet hoe ik dit in de code zou kunnen verwerken. Dit zou een goede vraag kunnen zijn voor de studenten die computer Science studeren.
- Stel dat de code afwijkt van de uiteindelijke uitslag. Welke factoren beïnvloed dan deze afwijking en welke stappen kunnen we nemen zodat uiteindelijk als we een tweede proto type code gaan schrijven de uitslag dan minder zal afwijken?
Heel erg bedankt nog voor de reactie op de vorige vraag. We hebben veel kunnen oppikken en leren!
Groetjes!
-Vincent van der Velden