SVM 预测正在丢弃值

SVM Prediction is dropping values

我 运行 在数据集上建立 SVM 模型,运行 在 train/fitted 模型上表现良好。但是,当我 运行 它用于 prediction/test 数据时,它似乎出于某种原因正在删除行,当我尝试将 '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

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

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

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

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

在开始构建 SVM 算法之前,通过

删除所有 NA
dataset <- dataset[complete.cases(dataset), ]

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

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