2016-05-07 6 views
1

Я хочу использовать поезд и тест в J48 принятии дерева на R. вот мой код:J48 дерева в R - поезд и испытание классификация

library("RWeka") 

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

summary(resultJ48) 

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

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

+0

Как насчет выборки данных без замены (см 'sample'?) –

ответ

1

использовать функцию 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) 
+0

что смысл dataTest.pred? Вы просто помещаете всю информацию вместе, создаете pred в dataTest, чтобы сохранить результат? – moshem

+0

также, как я могу видеть резюме результатов таким образом? – moshem

+0

использовать 'summary (resultJ48)', чтобы получить выход «weka-specific» «Правильно классифицированные экземпляры ....» --- dataTest.pred содержит результаты вашего обученного классификатора, применяемого к 30-процентным данным обучения. Я думал, что вы, вероятно, захотите использовать выходные данные J48 в своих тестовых данных. Поэтому я просто написал то, что казалось мне естественным. То, что вы на самом деле хотели сделать, я не могу сделать вывод, потому что вы просто написали что-то очень общее в своем вопросе. 'table()' просто сравнивает значения testdata и предсказанные значения атрибута testdata. SImple путаница. – knb

1

Это не в Р. Но в 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 с такой же логикой. Надеюсь, это поможет :)