2

RのJ48ディシジョンツリーでトレーニングとテストを使用したいのですが、私のコードは次のとおりです。

library("RWeka")

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

summary(resultJ48)

データを 70% のトレーニングと 30% のテストに分割したいのですが、J48 アルゴリズムを使用してそれを行うにはどうすればよいですか?

どうもありがとう!

4

4 に答える 4

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)
于 2016-05-08T16:24:33.323 に答える
1

キャレット パッケージの createDataPartitionを確認することをお勧めします。

于 2016-05-08T00:53:37.503 に答える
1

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 に実装します。それが役に立てば幸い :)

于 2016-05-08T07:57:03.523 に答える
0

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)
于 2018-07-22T09:37:33.870 に答える