gpt4 book ai didi

r - SVM-RFE算法在R中的实现

转载 作者:行者123 更新时间:2023-11-30 09:10:52 36 4
gpt4 key购买 nike

我正在使用 R 代码来实现来自此来源的 SVM-RFE 算法 http://www.uccor.edu.ar/paginas/seminarios/Software/SVM_RFE_R_implementation.pdf但我做了一个小修改,以便 r 代码使用 gnum 库。代码如下:

svmrfeFeatureRanking = function(x,y){
n = ncol(x)

survivingFeaturesIndexes = seq(1:n)
featureRankedList = vector(length=n)
rankedFeatureIndex = n

while(length(survivingFeaturesIndexes)>0){
#train the support vector machine
svmModel = SVM(x[, survivingFeaturesIndexes], y, C = 10, cache_size=500,kernel="linear" )



#compute ranking criteria
rankingCriteria = svmModel$w * svmModel$w

#rank the features
ranking = sort(rankingCriteria, index.return = TRUE)$ix

#update feature ranked list
featureRankedList[rankedFeatureIndex] = survivingFeaturesIndexes[ranking[1]]
rankedFeatureIndex = rankedFeatureIndex - 1

#eliminate the feature with smallest ranking criterion
(survivingFeaturesIndexes = survivingFeaturesIndexes[-ranking[1]])

}

return (featureRankedList)
}

该函数接收一个矩阵作为x输入和一个因子作为输入y。我将该函数用于某些数据,并且在最后一次迭代中收到以下错误消息:

 Error in if (nrow(x) != length(y)) { : argument is of length zero 

调试代码,我得到了这个:

3 SVM.default(x[, survivingFeaturesIndexes], y, C = 10, cache_size = 500, 
kernel = "linear")
2 SVM(x[, survivingFeaturesIndexes], y, C = 10, cache_size = 500,
kernel = "linear")
1 svmrfeFeatureRanking(sdatx, ym)

那么,这个函数的错误是什么?

最佳答案

看起来当只剩下一个功能时,您的矩阵会转换为列表。试试这个:

svmModel = SVM(as.matrix(x[, survivingFeaturesIndexes]), y, C = 10, cache_size=500,kernel="linear" )

关于r - SVM-RFE算法在R中的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38891965/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com