Дерево J48 в R - классификация поездов и тестов

Я хочу использовать train и test в дереве решений J48 для R. Вот мой код:

library("RWeka")

data <- read.csv("try.csv")
resultJ48 <- J48(classificationTry~., data)

summary(resultJ48)

но я хочу разделить мои данные на 70% -ый поезд и 30% -ый тест, как я могу использовать алгоритм J48, чтобы сделать это?

большое спасибо!

4 ответа

Решение

Использовать sample.split() функция caTools пакет. Это более легкий, чем caret пакет (который является мета-пакетом, если я правильно помню):

library(caTools)

library(RWeka)

data <- read.csv("try.csv")
spl = sample.split(data$someAttribute, SplitRatio = 0.7)

dataTrain = subset(data, spl==TRUE)
dataTest = subset(data, spl==FALSE)

resultJ48 <- J48(as.factor(classAttribute)~., dataTrain) 
dataTest.pred <- predict(resultJ48, newdata = dataTest)
table(dataTest$classAttribute, dataTest.pred)

Это не в R. Но в Java... Но вы поймете логику с этим.

int trainSize = (int) Math.round(trainingSet.numInstances() * 0.7); //70% split 
int testSize = trainingSet.numInstances() - trainSize;
Instances train = new Instances(trainingSet, 0, trainSize);
Instances test = new Instances(trainingSet, trainSize, testSize)

Реализуйте в R с той же логикой. Надеюсь, поможет:)

Если вы не хотите использовать больше пакетов, кроме RWeka, вы можете сделать это с помощью runif:

library("RWeka")
data <- read.csv("try.csv")

randoms=runif(nrow(data))

resultJ48 <- J48(classificationTry~., data[randoms<=0.7,])
PredTest <- predict(resultJ48, newdata = data[randoms>0.7,])
table(data[randoms>0.7,]$classificationTry, PredTest)
Другие вопросы по тегам