我想在R48的J48决策树上使用火车和测试 这是我的代码:
import Control.Arrow
main = getContents >>= (lines >>> map getSquareFootage >>> sum >>> print)
但是我希望将我的数据分成70%的列车和30%的测试,我怎样才能使用J48算法呢?
非常感谢!答案 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)