RのJ48ディシジョンツリーでトレーニングとテストを使用したいのですが、私のコードは次のとおりです。
library("RWeka")
data <- read.csv("try.csv")
resultJ48 <- J48(classificationTry~., data)
summary(resultJ48)
データを 70% のトレーニングと 30% のテストに分割したいのですが、J48 アルゴリズムを使用してそれを行うにはどうすればよいですか?
どうもありがとう!
RのJ48ディシジョンツリーでトレーニングとテストを使用したいのですが、私のコードは次のとおりです。
library("RWeka")
data <- read.csv("try.csv")
resultJ48 <- J48(classificationTry~., data)
summary(resultJ48)
データを 70% のトレーニングと 30% のテストに分割したいのですが、J48 アルゴリズムを使用してそれを行うにはどうすればよいですか?
どうもありがとう!
パッケージの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)
キャレット パッケージの createDataPartitionを確認することをお勧めします。
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)