2016-09-25 110 views
0

我正在建立一个有因子变量但数字条目的模型。我将它们转换为数字。当我尝试用SVM径向内核构建模型时,我收到了一些我不明白的奇怪消息。以下是我所做的。我不能训练我的数据使用支持向量机训练功能的支持向量机

Subset of data 
class ac_000  ad_000 ag_007 
neg  2130706438 280  25896 
neg  228   100  292936 
pos  42328  856  51190 
neg  24   24  0 
neg  370   346  0 
pos  1534  1388 794698 

factorconvert <- function(f){as.numeric(levels(f))[f]} 
DF[, 2:4] <- lapply(DF[, 2:4], factorconvert) 

SVM 
ctrl<-trainControl(method="repeatedcv"), 
repeats=5, 
summaryFunction=twoClassSummary, 
classProbs=TRUE) 

Train and Tune the SVM 
svm.tune <- train(x=trainX, y= trainData$Class,method = "svmRadial", 
tuneLength = 9, preProc =c("center","scale"),metric="ROC",trControl=ctrl) 

Error in if (any(co)) { : missing value where TRUE/FALSE needed In 
addition: Warning message: In FUN(newX[, i], ...) : NAs introduced by 
coercion. 

any(is.any(DF)). 

我还用na.omit()删除了数据中的所有NA。 我重新检查了数据。没有缺失值存在。我需要帮助。

+0

请至少包含一部分数据,以使问题具有可重现性。没有这个,很难帮助你。看看[帮助中心](http://stackoverflow.com/help/mcve)。谢谢! – lrnzcig

+0

实际数据的大小是多少? – abhiieor

+0

1.检查factorconvert的结果。它可能无法正常工作。它不符合您提供的数据。 2.输入一些原始数据。这个集合太小而无法测试。如果您不想使用您的数据,请尝试使用GermanCredit数据(包含在插入程序包中)或其他一些数据集复制错误。 – phiver

回答

0

如果您直接希望将数据集中的字符串转换为数字形式而不分栏,可能会发生这种情况。我想你可能想在使用“factorconvert()”转换后检查你的数据,并检查第一列是否包含任何NA值。 让我知道这是否解决您的问题。