【问题标题】:SVM Prediction is dropping valuesSVM 预测正在下降值
【发布时间】:2019-07-27 11:28:17
【问题描述】:

我在数据集上运行 SVM 模型,该模型在训练/拟合模型上运行良好。但是,当我为预测/测试数据运行它时,由于某种原因,它似乎正在删除行,当我尝试将“pred_SVM”添加回数据集中时,长度是不同的。 下面是我的代码

#SVM MODEL
 SVM_swim <- svm(racetime_mins ~ event_date+ event_month +year 
 +event_id + 
              gender + place + distance+ New_Condition+
              raceNo_Updated +  
              handicap_mins +points+
              Wind_Speed_knots+ 
              Air_Temp_Celsius +Water_Temp_Celsius +Wave_Height_m,
          data = SVMTrain, kernel='linear')
summary(SVM_swim)

#Predict Race_Time Using Test Data
pred_SVM <- predict(SVM_swim, SVMTest, type ="response")
View(pred_SVM)
#Add predicted Race_Times back into the test dataset.
SVMTest$Pred_RaceTimes<- pred_SVM
View(SVMTest) #Returns 13214 rows
View(pred_SVM) #Returns 12830

$&lt;-.data.frame(*tmp*, Pred_RaceTime, value = c(2 = 27.1766438249356, : 替换有12830行,数据有13214

【问题讨论】:

  • 我不能真正帮助您处理 svm,但通常当协变量之一缺少值时,数据会被丢弃。另外,我建议使用标签 r 而不是 rstudio,因为它是与 Rstudio 无关的 R 问题。

标签: r svm predict


【解决方案1】:

正如命令中提到的,您需要删除数据集中的 NA 值。 SVM 正在为您处理它,因此,pred_SVM 输出的计算没有 NA 值。

要测试您的数据中是否存在NA,只需运行:sum(is.na(SVMTest))

我很确定您会看到一个大于零的数字。

在开始构建您的 SVM 算法之前,删除所有 NA 值,

dataset <- dataset[complete.cases(dataset), ]

然后将数据分成训练集和测试集后,您就可以运行了,

SVM_swim <- svm(.....,data = SVMTrain, kernel='linear')

【讨论】:

    猜你喜欢
    • 2014-04-03
    • 2020-08-16
    • 2018-02-03
    • 2016-11-18
    • 2020-07-05
    • 2013-05-22
    • 2019-07-21
    • 2018-11-01
    • 2013-04-30
    相关资源
    最近更新 更多