首页 > 解决方案 > 尝试拟合多元线性回归模型时 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、巴里西、巴蒂斯特、巴奇……

标签: rlinear-regression

解决方案


你能试试这个吗?

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)

推荐阅读