par(mfrow=c(1,1),mar=c(4,4,2,2))
Dataplay<-read.table("Tennisclub1.csv",sep=",",header=T)
m<-3 # Numero di dati su cui effettuare il CART
n<-nrow(Dataplay);nm<-n-m;nm1<-nm+1
Tennis<-Dataplay[1:nm,];Tennis<-data.frame(Tennis)
summary(Tennis)
summary(Dataplay)
# Classificazione e regressione ad albero
library(rpart)
rpart.control(minsplit=4, cp=0.12,maxcompete=4, maxsurrogate=5, usesurrogate=2, xval=10,surrogatestyle=0, maxdepth=30)
Tennis.tr<- rpart(Azione~Esterno+Temperatura+umidita+Vento,method="class",parms=list(split="gini",prior=c(.50,.50)),cost=c(1,1,1,1),data=Tennis)
post(Tennis.tr,file="",title="Circolo del Tennis",pretty=TRUE,use.n=TRUE,digits=2,branch=0.5)
#plot(Tennis.tr,uniform=TRUE,branch=0.5,margin=0.1,compress=TRUE)
#text(Tennis.tr)
printcp(Tennis.tr,digits=2)
plotcp(Tennis.tr,minline=TRUE,lty=2,lwd=1,col="red",upper="size")
summary(Tennis.tr)
Tennis.pru<-prune(Tennis.tr,cp=0.1)
post(Tennis.pru,file="",title="Circolo del Tennis",pretty=TRUE,use.n=TRUE,digits=2,branch=0.5)
#plot(Tennis.pru,uniform=TRUE,branch=0.5,margin=0.1,compress=TRUE)
#text(Tennis.pru)
Tennis.pred<-predict(Tennis.pru, type="class")
Confus<-table(Tennis.pred,Tennis$Azione)
print(Confus)
summary(Confus)
Confus<-prop.table(Confus)
print(Confus,digits=3)
Tennis.pred<-predict(Tennis.tr,Dataplay[nm1:n,], type="prob")
print(Tennis.pred)
Tennis1.tr <- rpart(Azione~Esterno+Temperatura+umidita+Vento,method="class",parms=list(split="gini",prior=c(.65,.35)),data=Tennis,cp=0.0001)
plotcp(Tennis1.tr)
# pruning the tree
Tennis1.prune <- prune(Tennis1.tr,cp=0.01)
# plotting the tree
plot(Tennis1.prune)
text(Tennis1.prune)
# Il segmento che segue serve in caso di regression e non di classification
# Computing the MSE
TestVals<-matrix(2,nm)
for (i in 1:nm){if (Tennis[i,5]=="Gioca") TestVals[i]<-1}
Vals<-predict(Tennis1.tr)
predictions<-factor(Vals[,1]>0.5,labels=levels(Tennis[,5]))
PredVals<-matrix(2,nm)
for (i in 1:nm){if (predictions[i]=="Gioca") PredVals[i]<-1}
sqrt(sum((TestVals-PredVals)^2)/nm)
TestVals<-as.vector(TestVals)
PredVals<-as.vector(PredVals)
TestVals%*%PredVals/(sum(TestVals^2)*sum(PredVals^2))