r - 警告“变量不是一个因素”使用预测使用插入符号进行 One-Hot 编码
问题描述
我正在按照本教程学习 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 警告/错误消息如此糟糕和无信息?
解决方案
我刚刚发现了这个问题,因为我在教程中遇到了同样的问题。最后,我对本教程的解决方案是这样做:
dummies_model <- dummyVars(~ ., data = trainData[, names(trainData) != "Purchase"])
这样,您就可以排除purchase
原本也会被拆分为虚拟变量的列。使用我的解决方案,您可以继续学习教程而不会收到任何警告。
推荐阅读
- python - 在字符串中查找单词,然后在 excel 中写入字符串,找到不同字体的单词
- android - @Override "Method..." 从另一个项目复制方法后
- javascript - 如何在 vue JavaScript 中将数据从一个组件恢复到另一个组件
- python - Python:如何在 Pandas 的循环中正确使用滚动平均值?
- r - 使用 tufte-book 在 bookdown 中设置 PDF 输出的纸张大小
- css - 对话框、快餐栏、...entryComponents 上的 Angular Material 自定义主题
- r - 在 R 中生成特殊矩阵的更有效函数
- sql - SQL罗斯文数据库查询重复行
- google-apps-script - 如何创建一个接受多个输入的谷歌脚本提示
- r - R 包在 Windows 上构建,但无法运行示例 - 使 R 会话崩溃