J48树在R - 训练和测试分类

时间:2016-05-07 20:09:38

标签: r classification weka decision-tree j48

我想在R48的J48决策树上使用火车和测试 这是我的代码:

import Control.Arrow

main = getContents >>= (lines >>> map getSquareFootage >>> sum >>> print)

但是我希望将我的数据分成70%的列车和30%的测试,我怎样才能使用J48算法呢?

非常感谢!

4 个答案:

答案 0 :(得分:2)

使用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)

答案 1 :(得分:1)

您可能需要collections.Counter()

答案 2 :(得分: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中用相同的逻辑实现。希望它有所帮助:)

答案 3 :(得分: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)