Дерево 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)