У меня есть фрейм данных, который содержит «переменную даты». (тестовые данные и код доступны здесь)
Однако я использую «function = caretFunc». Он показывает сообщение об ошибке.
Error in { : task 1 failed - "missing value where TRUE/FALSE needed"
In addition: Warning messages:
1: In FUN(newX[, i], ...) : NAs introduced by coercion
2: In FUN(newX[, i], ...) : NAs introduced by coercion
3: In FUN(newX[, i], ...) : NAs introduced by coercion
4: In FUN(newX[, i], ...) : NAs introduced by coercion
5: In FUN(newX[, i], ...) : NAs introduced by coercion
6: In FUN(newX[, i], ...) : NAs introduced by coercion
7: In FUN(newX[, i], ...) : NAs introduced by coercion
8: In FUN(newX[, i], ...) : NAs introduced by coercion
9: In FUN(newX[, i], ...) : NAs introduced by coercion
10: In FUN(newX[, i], ...) : NAs introduced by coercion
Что я могу сделать?
Код для воспроизведения ошибки:
library(mlbench)
library(caret)
library(maps)
library(rgdal)
library(raster)
library(sp)
library(spdep)
library(GWmodel)
library(e1071)
library(plyr)
library(kernlab)
library(zoo)
mydata <- read.csv("Realestatedata_all_delete_date.csv", header=TRUE)
mydata$estate_TransDate <- as.Date(paste(mydata$estate_TransDate,1,sep="-"),format="%Y-%m-%d")
mydata$estate_HouseDate <- as.Date(mydata$estate_HouseDate,format="%Y-%m-%d")
rfectrl <- rfeControl(functions=caretFuncs, method="cv",number=10,verbose=TRUE,returnResamp = "final")
results <- rfe(mydata[,1:48],mydata[,49],sizes = c(1:48),rfeControl=rfectrl,method = "svmRadial")
print(results)
predictors(results)
plot(results, type=c("g", "o"))
estate_TransDate
иestate_HouseDate
), rfe занимает гораздо больше времени, а не возвращается относительно быстро с сообщением об ошибке. Если вы наберетеwarnings()
после запуска кода, вы увидите множествоIn FUN(newX[, i], ...) : NAs introduced by coercion
. Я предполагаю, что он пытается преобразовать объекты даты в числовое значение, которое затем создает NA. Вероятно, лучше «нормализовать» эти поля даты, например. заменив их количеством дней или лет с контрольной даты, т.е. 01.01.1973 дляestate_TransDate
и 01.01.1900 дляestate_HouseDate
или для обоих - person Andre Holzner   schedule 13.11.2015sessionInfo()
- person topepo   schedule 13.11.2015