R 警告";“变量不是一个因素”;使用插入符号对一个热编码使用预测

R 警告";“变量不是一个因素”;使用插入符号对一个热编码使用预测,r,warnings,r-caret,one-hot-encoding,R,Warnings,R Caret,One Hot Encoding,下面我将学习R和机器学习中caret软件包的基本知识 我收到一条我不明白的警告信息,我不知道这是否是个问题。当我将教程步骤应用于我自己的数据时,以及当我遵循教程时,都会发生这种情况 orange <- read.csv('https://raw.githubusercontent.com/selva86/datasets/master/orange_juice_withmissing.csv') trainRowNumbers <- createDataPartition(orang

下面我将学习R和机器学习中caret软件包的基本知识

我收到一条我不明白的警告信息,我不知道这是否是个问题。当我将教程步骤应用于我自己的数据时,以及当我遵循教程时,都会发生这种情况

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)    
我有两个问题:

  • 发生了什么事
  • 这重要吗
  • (额外说明)为什么R警告/错误消息如此糟糕且缺乏信息

  • 您可以通过在~之前移除标签来轻松修复它

    在本例中,您的代码如下所示:

    #One-hot encoding
    dummies_model <- dummyVars(~ ., data=trainData)
    trainData_mat <- predict(dummies_model, newdata = trainData)
    
    #一个热编码
    
    dummies_model我刚刚发现这个问题,因为我在教程中遇到了同样的问题。最后,我对本教程的解决方案是这样做:

    dummies_model <- dummyVars(~ ., data = trainData[, names(trainData) != "Purchase"])
    

    dummie\u模型快速查看不清楚。如果你想深入到源代码中,试着打印(插入符号::predict.dummyVars)
    然后打印(model.frame.default)
    或者在Rstudio
    视图(插入符号::predict.dummyVars)
    然后查看(model.frame.default)我得到了同样的问题,但是当我调用
    print(class(df$column\u name))
    我得到了“factor”,奇怪的行为,在查看
    视图(model.frame.default)
    dummies_model <- dummyVars(~ ., data = trainData[, names(trainData) != "Purchase"])