r - 尝试拟合多元线性回归模型时 Predict() 函数的问题
问题描述
我已经使用我的训练集中的所有预测变量拟合了一个多线性回归模型,使用 lm() 的“姓氏”除外,现在我想根据我的测试集进行预测。但是,当我尝试使用 predict(model.fit, test) 执行此操作时,我收到有关变量“lastname”的错误
我试过传入一个不包括“姓氏”列的测试集,但这没有用
代码:
cf_df <- read.csv(file="cap_friendly_data.csv", header=TRUE, sep=",")
new_cols <- c('lastname', 'Position', 'Age.Years', 'Original.Cap.Hit', 'New.Signing.Status', 'PPG.Prior.Signing', 'PPG.Contract.Year', 'New.Cap.Hit')
new_stats <- cf_df[, new_cols]
#create training and testing datasets
set.seed(2430)
num_training_samples <- 2000
train_indices <- sample(1:nrow(new_stats), num_training_samples, replace = FALSE,)
train <- new_stats[train_indices, ]
test <- new_stats[-train_indices, ]
test_results <- test$New.Cap.Hit
#fit model
cap.fit <- lm(New.Cap.Hit ~ . - lastname, data = train)
summary(cap.fit)
predictions <- predict(cap.fit, test)
我以为我会从模型中得到一个预测列表,但我收到了这个错误消息:
predictions <- predict(cap.fit, test)
model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) 中的错误:因子 lastname 具有新级别 Ã…berg、Acciari、Acolatse、Alfredsson、Anderson、Angelidis、Arnold、Backes、巴里西、巴蒂斯特、巴奇……
解决方案
你能试试这个吗?
str(new_stats)
# remove column
new_stats = subset(new_stats, select = -c(lastname))
#create training and testing datasets
set.seed(2430)
num_training_samples <- 2000
train_indices <- sample(1:nrow(new_stats), num_training_samples, replace = FALSE,)
train <- new_stats[train_indices, ]
test <- new_stats[-train_indices, ]
test_results <- test$New.Cap.Hit
#fit model
cap.fit <- lm(New.Cap.Hit ~ ., data = train)
summary(cap.fit)
# do predictions
predictions <- predict(cap.fit, test)
推荐阅读
- python-3.x - ß 无法从带有 Python 的 UTF-16 编码的 XML 文件中读取
- java - 为什么 MultiMap.add() 产生像 {Test_Case: [[1.0, 2.0, 3.0]]} 但它应该是 {Test_Case: [1.0, 2.0, 3.0]}
- c# - TPL 数据流同步处理每个文件,但异步处理文件中的每一行
- powershell - 在 Add-Type:d C# 代码中使用委托声明会导致方法不可调用
- flutter - 错误:“int”类型不是“Map”类型的子类型
'在颤抖中 - mysql - mysql 工作台中的 ROW_NUMBER()
- javascript - 我可以在表单验证中使用参数吗?
- c++ - 如何让 Intellisense 在 Visual Studio 2019 中处理独立的 C++ 源文件?
- javascript - offsetHeight 和 scrollHeight 比较仅适用于 Angular 指令中的 setTimeout
- list - 如何在没有“并发修改”异常的情况下将所有列表项添加到另一个列表的每个项目