我在R中构建了一个简单的SVM计算机。 当我想预测测试集的类别并使用newdata时,得到的结果与使用newx时得到的结果不同。
无论出于何种原因,newx都会提供更好的结果。
set.seed(1)
x=matrix(rnorm(200*2), ncol=2)
x[1:100,]=x[1:100,]+2
x[101:150,]=x[101:150,]-2
y=c(rep(1,150),rep(2,50))
dat=data.frame(x=x,y=as.factor(y))
plot(x, col=y)
train=sample(200,100)
tune.out=tune(svm, y~., data=dat[train,], kernel="radial", ranges=list(cost=c(0.1,1,10,100,1000),gamma=c(0.5,1,2,3,4)))
table(true=dat[-train,"y"], pred=predict(tune.out$best.model,newdata = dat[-train,]))
table(true=dat[-train,"y"], pred=predict(tune.out$best.model,newx = dat[-train,]))
使用newx,混淆矩阵要好得多 有人可以告诉我怎么回事