使用下面的代码,我正在尝试执行leave-one-out交叉验证。SVM交叉验证总是一样的
library(e1071)
library(plyr)
trainingdata<-read.table('data.txt', sep=",", header=TRUE)
f0 <- function(x) any(x!=1) & any(x!=0) & is.numeric(x)
trainingdata<-cbind(colwise(identity, f0)(trainingdata))
C <- 0
M <- 0
count <- nrow(trainingdata)
for(i in 1:count)
{
actual <- trainingdata[i,]$label
trainingtemp <- trainingdata[-c(i), ]
model <- svm(factor(label)~., data=trainingtemp, method="C-classification",
kernel="sigmoid", C=0.1, gamma=0.01, cross=10)
testdata <- trainingdata[i, ]
prediction <- predict(model, testdata)
prediction <- paste(prediction)
if(actual==prediction)
C <- C+1
else
M <- M+1
}
write.csv(data.frame(C,M))
,我不明白的问题是,我总是为C(正确分类)和M(正确分类)相同的值。结果在下列条件下是相同的:
1 - 我试图与成本和伽玛(也尝试best.svm()函数)
2不同的值 - 尝试分类+不同内核的不同的方法也。
3 - 数据集中共有大约50个特征。即使在构建模型(svm(label〜x1 ...)或svm(label〜x2 ...)时使用任何一个特征,结果也不会产生影响。)
是否有任何问题?代码数据是相当大的,以被张贴在这里
对不起。事实上,这是一个错误。我实际上是通过trainingtemp。那是我错误地尝试过的最后一个变化。 – Shahzad