首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在卡雷特需要真/假的地方缺少值

在卡雷特需要真/假的地方缺少值
EN

Stack Overflow用户
提问于 2015-11-13 08:22:54
回答 1查看 7.5K关注 0票数 2

我有一个数据框架,其中包含“日期变量”。(测试数据和代码可用这里)

但是,我使用"function = caretFunc“。它显示错误信息。

代码语言:javascript
复制
    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

我能做什么?

复制错误的代码:

代码语言:javascript
复制
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"))
EN

回答 1

Stack Overflow用户

发布于 2015-11-13 20:45:11

在以下输入变量(向分类器提供的输入变量)中有NAs (缺失值):

代码语言:javascript
复制
colnames(mydata)[unique(which(is.na(mydata[,1:48]), arr.ind = TRUE)[,2])]

给予:

代码语言:javascript
复制
 [1] "Aport_Distance"       "Univ_Distance"        "ParkR_Distance"
 [4] "TRA_StationDistance"  "THSR_StationDistance" "Schools_Distance"
 [7] "Lib_Distance"         "Sport_Distance"       "ParkS_Distance"
[10] "Hyper_Distance"       "Shop_Distance"        "Post_Distance"
[13] "Hosp_Distance"        "Gas_Distance"         "Incin_Distance"
[16] "Mort_Distance" 

此外,看起来您的日期变量(事务处理日期和豪宅日期)似乎在rfe(..)中被转换为rfe(..)

支持向量机回归器似乎无法按原样处理NAs

我会将日期转换为“自给定的参考日期以来的年份”:

代码语言:javascript
复制
mydata$estate_TransAge <- as.numeric(as.Date("2015-11-01") - mydata$estate_TransDate) / 365.25
mydata$estate_HouseAge <- as.numeric(as.Date("2015-11-01") - mydata$estate_HouseDate) / 365.25

# define the set of input variables
inputVars = setdiff(colnames(mydata),

                    # exclude these
                    c("estate_TransDate", "estate_HouseDate", "estate_TotalPrice")
                   )

并删除作为回归器输入的任何列中的带有任何NA的条目:

代码语言:javascript
复制
traindata <- mydata[complete.cases(mydata[,inputVars]),]

然后使用以下命令运行rfe:

代码语言:javascript
复制
rfectrl <- rfeControl(functions=caretFuncs, method="cv",number=10,verbose=TRUE,returnResamp = "final")
results <- rfe(
               traindata[,inputVars], 
               traindata[,"estate_TotalPrice"],
               rfeControl=rfectrl,
               method = "svmRadial"
              )

在我的例子中,这需要很长时间才能完成,所以我只在1%的数据上使用以下方法进行了测试:

代码语言:javascript
复制
traindata <- sample_frac(traindata, 0.01)

问题仍然是,如果给您的数据,以预测价格的一些输入变量如NA

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33688421

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档