Search
TEST 04
V dnešním cvičení využijeme několik souborů s daty - všechny jsou v následujícím souboru cviceni_stromy.zip
Příklad: Hráči chodí hrát tenis, ale hrají pouze za příznivého počasí. Příklady jejich rozhodnutí jsou v následující tabulce. Atributy jsou “outlook”, “temperature”, “humidity”, “windy” a rozhodnutí je ve sloupečku “play”. Nalezněte podle čeho se hráči rozhodují, zda půjdou hrát.
“outlook”
“temperature”
“humidity”
“windy”
“play”
Úkol: Nalezněte nejinformovanější atribut podle kritéria entropie
Řešení příkladu
library(C50) library(rpart) library(rpart.plot) data(iris) ind <- sample(nrow(iris),0.7*nrow(iris)) iris_train <- iris[ind,] iris_test <- iris[-ind,] tree_rpart <- rpart(Species ~ .,data=iris_train,control=rpart.control(minsplit=10,cp=0),parms=list(split='information')) summary(tree_rpart) prp(tree_rpart, type=2, extra=101, nn=TRUE, fallen.leaves=TRUE, faclen=0, varlen=0, shadow.col="grey", branch.lty=3) # ověření na testovacích datech table(predict(tree_rpart,newdata=iris_test,type="class"),iris_test$Species) #konstrukce stromu pomocí algoritmu C5.0 tree_c50 <- C5.0(Species ~ ., data=iris_train) summary(tree_c50) table(predict(tree_c50,newdata=iris_test,type="class"), iris_test$Species)
Úkol:
C5.0
weather_test <- data.frame(outlook='sunny',temperature='cool',humidity='normal',windy='TRUE')
rpart.control
maxdepth=2
#class musí být typu factor mv$class<-factor(mv$class) #konstrukce modelu model <- rpart(class ~ a + b, data = mv, control = rpart.control(maxdepth=2)) #vizualizace stromu prp(model, type=2, extra=101, nn=TRUE, fallen.leaves=TRUE, faclen=0, varlen=0, shadow.col="grey", branch.lty=3) #vizualizace predikce stromem plot(mv$a, mv$b, col=predict(model,type="class"))
maxdepth=[1,…,5]
Demonstrace vlastností ID3 na algorithmu C5.0 (vylepšený ID3 algoritmus) C4.5 algorithm
kruh1 <- read.csv('kruh1.csv',header=T,sep=';') kruh2 <- read.csv('kruh2.csv',header=T,sep=';') kruh3 <- read.csv('kruh3.csv',header=T,sep=';') kruh4 <- read.csv('kruh4.csv',header=T,sep=';') kruhy <- rbind(kruh1,kruh2,kruh3,kruh4) plot(kruhy$a,kruhy$b,col=kruhy$class) kruhy$class <- factor(kruhy$class) #packages library(C50) model2 <- C5.0(x = kruhy[,1:2], y=kruhy$class) summary(model2) plot(kruhy$a,kruhy$b,col=predict(model2,type='class')) table(predict(model2,newdata=kruhy,type='class')) plot(kruhy$a,kruhy$b,col=predict(model2,newdata=kruhy,type='class'))
sample.kruh <- sample(2, nrow(kruh1), replace=TRUE, prob=c(0.7, 0.3)) kruh1.sample <- kruh1[sample.kruh==2,]