问题描述
我正在使用数据集 Carseats 来适应分类树。我在这里所做的是尝试创建一个新变量“高”来指示销售额是高还是低,然后使用所有其他变量来预测变量“高”。
attach(Carseats)
High <- ifelse(Sales <= 8,"No","Yes")
Carseats <- data.frame(Carseats,High)
tree.carseats <- tree(High~.-Sales,Carseats)
summary(tree.carseats)
但我有两个问题:
-
当我运行上面的 tree() 函数时,我很容易得到对象“tree.carseats”以及警告消息“In tree(High ~ . - Sales,Carseats) : NAs 通过强制引入” .我已使用 any(is.na()) 检查此模型中的所有变量,但未发现 NA。那么这条警告信息有什么问题呢?
-
当我运行 summary() 函数时,我失败并得到错误信息: “y 中的错误 - frame$yval[object$where] : 二元运算符的非数字参数" 这个错误的原因是什么?
解决方法
首先,不要attach
,这是 R 中最无用的指令,而且有潜在危险。
至于警告,可以通过强制 High
为 factor 来解决。
library(ISLR)
library(tree)
str(Carseats)
Carseats$High <- factor(ifelse(Carseats$Sales <= 8,"No","Yes"))
tree.carseats <- tree(High ~ . -Sales,Carseats)
summary(tree.carseats)
#
#Classification tree:
#tree(formula = High ~ . - Sales,data = Carseats)
#Variables actually used in tree construction:
#[1] "ShelveLoc" "Price" "Income" "CompPrice" "Population"
#[6] "Advertising" "Age" "US"
#Number of terminal nodes: 27
#Residual mean deviance: 0.4575 = 170.7 / 373
#Misclassification error rate: 0.09 = 36 / 400