2016-05-07 9 views
1

I Zug und Test in J48 Entscheidungsbaum auf R. hier verwenden will, ist mein Code:J48 Baum in R - Zug und Test Klassifizierung

library("RWeka") 

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

summary(resultJ48) 

aber ich möchte, dass meine Daten in 70% aufzuspalten Zug und 30% Test, wie kann ich den J48 Algo dazu benutzen?

vielen Dank!

+0

Wie wäre es Datenabtastsektion ersatzlos (siehe 'sample'?) –

Antwort

1

Verwendung der sample.split() Funktion des caTools Paket. Es ist leichtgewichtig als die caret Paket (das ist ein Meta-Paket ist, wenn ich mich richtig erinnere):

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

was ist die Bedeutung von dataTest.pred? Sie fügen einfach alle Informationen zusammen und erstellen pred im Datentest, um das Ergebnis zu speichern. – moshem

+0

auch, wie kann ich die Zusammenfassung der Ergebnisse auf diese Weise sehen? – moshem

+0

Verwendung 'Zusammenfassung (resultJ48)' bekommt den „weka-spezifische“ Ausgang „korrekt klassifizierten Instanzen ....“ --- dataTest.pred die Ausgabe Ihrer trainierten Klassifikators halten, auf den Trainingsdaten 30% angewandt. Ich dachte, dass Sie wahrscheinlich die Ausgabe von J48 auf Ihren Testdaten verwenden möchten. Also schrieb ich etwas, was mir natürlich erschien. Was Sie wollte eigentlich tun ich nicht ableiten kann, weil Sie gerade etwas sehr allgemein in Frage geschrieben. 'table()' vergleicht nur testdata und vorhergesagte testdata Attributwerte. Einfache Verwirrungsmatrix. – knb

1

Es ist nicht in R. Aber in Java ... Aber Sie werden die Logik mit ihm verstehen.

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) 

Implementieren in R mit der gleichen Logik. Hoffe, es hilft :)