Applicazioni pratiche di machine learning/Previsioni su scommesse sportive: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica
colorazione codice R
Riga 1:
==Caricamento librerie==
<syntaxhighlight lang="rsplus">
library(dplyr)
library(caret)
</syntaxhighlight>
 
== Parte 1: Dati ==
Line 7 ⟶ 9:
 
'''Caricamento dati:'''
<syntaxhighlight lang="rsplus">
 
I1_17_18 <- read.csv("I1_17_18.csv")
I1_18_19 <- read.csv("I1_18_19.csv")
I1_19_20 <- read.csv("I1_19_20.csv")
</syntaxhighlight>
 
 
Creazione colonna "risultato", contenente gli 1,X,2 risultati della corrispondente partita, da aggiungere al dataframe degli anni 2017 e 2018:
 
<syntaxhighlight lang="rsplus">
 
risultato <- rep(NA,nrow(I1_17_18))
risultato[which(I1_17_18$FTR=="A")]="2"
Line 23 ⟶ 25:
df1<-I1_17_18[,which(colnames(I1_17_18) %in% colnames(I1_19_20))]
df1 <- cbind(df1,risultato)
</syntaxhighlight>
 
 
 
Creazione colonna "risultato", contenente gli 1,X,2 risultati della corrispondente partita, da aggiungere al dataframe degli anni 2018 e 2019:
 
<syntaxhighlight lang="rsplus">
risultato <- rep(NA,nrow(I1_18_19))
risultato[which(I1_18_19$FTR=="A")]="2"
Line 35 ⟶ 38:
df2<-I1_18_19[,which(colnames(I1_18_19) %in% colnames(I1_19_20))]
df2 <- cbind(df2,risultato)
</syntaxhighlight>
 
 
 
Creazione colonna "risultato", contenente gli 1,X,2 risultati della corrispondente partita, da aggiungere al dataframe degli anni 2019 e 2020:
 
<syntaxhighlight lang="rsplus">
 
risultato <- rep(NA,nrow(I1_19_20))
risultato[which(I1_19_20$FTR=="A")]="2"
Line 48 ⟶ 51:
df3<-I1_19_20[,which(colnames(I1_19_20) %in% colnames(I1_18_19))]
df3 <- cbind(df3,risultato)
</syntaxhighlight>
 
 
Si scelgono per la previsione le seguenti variabili contenenti le probabilità di scommessa 1,X,2 sulle partite fatte dai bookmakers:
Line 95 ⟶ 98:
...e si uniscono i 3 dataframes contenenti le probabilità di vincita in casa, pareggio o trasferta negli anni 2017,2018,2019,2020 :
 
<syntaxhighlight lang="rsplus">
 
df1<-rbind(df1,df2)
df1<-rbind(df1,df3)
Line 102 ⟶ 105:
 
head(df1)
</syntaxhighlight>
 
Si eliminano dal dataframe df1 le righe contenenti gli eventuali valori mancanti nelle probabilità...
 
<syntaxhighlight lang="rsplus">
 
df1 <- df1[-which(rowSums(is.na(df1))>0),]
</syntaxhighlight>
 
 
 
Line 117 ⟶ 121:
Si suddivide il dataset df1 in un training set costituito dal 90% delle partite e in un testing set costituito dal rimanente 10% di partite e come predictors si scelgono le probabilità indicate dai vari bookmakers escludendo data della partita e nomi delle squadre in casa e trasferta. La variabile da predire è "risultato" .
 
<syntaxhighlight lang="rsplus">
 
n <-nrow(df1)
training <- df1[1:round(n*0.9),c(4:22)]
Line 129 ⟶ 133:
p1 <- predict(model,newdata = testing)
print(confusionMatrix(p1,testing$risultato))
</syntaxhighlight>
 
 
'''Confusion Matrix and Statistics of training set:'''