【发布时间】:2019-03-01 18:31:08
【问题描述】:
我正在关注this tutorial,以了解 R 和机器学习中插入符号包的基础知识。
我收到一条我不理解的警告消息,我不知道这是否有问题。当我将教程步骤应用于我自己的数据以及按照教程进行操作时,都会发生这种情况。
orange <- read.csv('https://raw.githubusercontent.com/selva86/datasets/master/orange_juice_withmissing.csv')
trainRowNumbers <- createDataPartition(orange$Purchase, p=0.8, list=FALSE)
# Step 2: Create the training dataset
trainData <- orange[trainRowNumbers,]
# Step 3: Create the test dataset
testData <- orange[-trainRowNumbers,]
#Impute
preProcess_missingdata_model <- preProcess(trainData, method='knnImpute')
preProcess_missingdata_model
library(RANN) # required for knnInpute
trainData <- predict(preProcess_missingdata_model, newdata = trainData)
#One-hot encoding
dummies_model <- dummyVars(Purchase ~ ., data=trainData)
trainData_mat <- predict(dummies_model, newdata = trainData)
我得到: 警告信息: 在 model.frame.default(Terms, newdata, na.action = na.action, xlev = object$lvls) 中: 变量“购买”不是一个因素
但是:
is.factor(trainData$Purchase)
[1] TRUE
我有两个问题:
- 这是怎么回事?
- 这很重要吗?
- (额外加分)为什么 R 警告/错误消息如此糟糕且缺乏信息?
【问题讨论】:
-
看一眼就不清楚了。如果您想深入了解源代码,请尝试
print(caret:::predict.dummyVars)然后print(model.frame.default)或在 Rstudio 中View(caret:::predict.dummyVars)然后View(model.frame.default) -
我遇到了同样的问题,但是当我打电话给
print(class(df$column_name))时,我得到了“因素”,奇怪的行为,我在查看View(model.frame.defualt)时似乎不明白为什么
标签: r warnings r-caret one-hot-encoding