You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R中基于ISLR的Auto数据集拆分训练测试集实现LDA并生成混淆矩阵

R语言线性判别分析(LDA)实现代码

前置依赖

需要提前安装ISLR、MASS两个包,安装命令如下:

install.packages(c("ISLR", "MASS"))

完整实现代码

# 加载依赖包
library(ISLR)
library(MASS)

# 导入Auto数据集
data(Auto)

# 构造二分类响应变量:mpg高于全数据集中位数标记为high,否则标记为low
Auto$mpg_class <- ifelse(Auto$mpg > median(Auto$mpg), "high", "low")

# 拆分训练集与测试集:年份不等于75为训练集,年份等于75为测试集
train_set <- Auto[Auto$year != 75, ]
test_set <- Auto[Auto$year == 75, ]

# 拟合LDA模型
lda_model <- lda(mpg_class ~ cylinders + displacement + horsepower + weight + acceleration + origin, data = train_set)

# 测试集预测
lda_pred_res <- predict(lda_model, newdata = test_set)

# 输出混淆矩阵
confusion_mat <- table(真实类别 = test_set$mpg_class, 预测类别 = lda_pred_res$class)
print(confusion_mat)

# 可选:输出预测准确率
cat("测试集预测准确率:", sum(diag(confusion_mat))/sum(confusion_mat), "\n")

问题说明

调用replace后所有值都被设为high,大概率是replace的条件判断逻辑错误,比如条件表达式返回全为TRUE,或者误将全量数据的判断条件应用到了测试集子集上。上述代码先对全数据集构造分类标签再拆分训练/测试集,逻辑更简洁,避免子集操作的条件错误。

内容的提问来源于stack exchange,提问作者The Pointer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 22:06:06