每次尝试实现 ksvm 时,我都会遇到此错误。 我的代码:
Train11<- read.csv('Train.csv', head=TRUE)
Train11 <- (sapply(Train11, as.numeric)) #convert all data to numeric
Train11 <- as.data.frame(Train11)
ModelV2<-ksvm(CityAssessment~., data=Train11, type= "C-svc", kernel="vanilladot", C=0.1,prob.model=TRUE)
Setting default kernel parameters
Error in indexes[[j]] : subscript out of bounds
我不知道我哪里错了。数据集的尺寸为 686 x 72。数据集中没有任何 NA 值(我已经检查过!),也没有无限值。
非常感谢!
我遇到了同样的问题,结果我的目标向量中只有一个类。
对于将来阅读本文的任何人。我也有同样的问题。
这可能是由于 kernlab 包内部处理类概率 (prob.model = TRUE) 的方式造成的。如果 n 很小或者类严重不平衡,内部 3 倍 cv 会失败,可能是由于 user2173836 描述的原因。
解决方案:
1.) 设置 ksvm(..., prob.model = FALSE)
或
2.) 仅运行具有足够大的 n 和类别平衡的模型。对于我的问题,运行许多单个 SVM 作为与 MTL-SVM 的基线比较,我可以跳过这些“坏”任务。
一旦您的模型是分类模型(“C-svc”),请检查响应变量是否具有两个或更多类。