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

R语言中wine数据集LDA建模与预测操作报错如何解决

常见报错原因

运行报错基本由以下问题导致:

  • MASS包本身不包含wine数据集,未提前加载gclus包就运行data(wine)会提示找不到对象,甚至加载到其他包中的同名异义数据集
  • LDA函数要求分组变量必须为因子类型,原始wine数据集中Class是整数型编码,直接传入会触发模型拟合错误
  • 拆分数据集时未对齐训练集、测试集的建模字段,调用predict()时会出现变量不匹配报错
  • 将install.packages()放在常规运行脚本中重复执行,容易因镜像、权限问题中断流程
可直接运行的修正代码

1. 包加载与数据预处理

首次运行前先取消安装命令的注释,后续运行直接注释掉安装语句即可,避免重复安装:

# 首次运行执行安装
# install.packages("gclus")
# install.packages("car")
library(MASS)
library(gclus)

# 明确指定从gclus包加载wine数据集,避免数据集冲突
data(wine, package = "gclus")
# 将分类标签转为因子格式,是LDA建模的必要步骤
wine$Class <- as.factor(wine$Class)

2. 按7:3比例拆分训练集与测试集

固定随机种子保证结果可复现:

set.seed(123)
train_index <- sample(1:nrow(wine), size = 0.7 * nrow(wine))
train_set <- wine[train_index, ]
test_set <- wine[-train_index, ]

3. 第一个子集LDA建模与预测

对应字段为Class, Malic, Hue, Magnesium:

# 提取建模字段
sub1_col <- c("Class", "Malic", "Hue", "Magnesium")
train_sub1 <- train_set[sub1_col]
test_sub1 <- test_set[sub1_col]

# 拟合LDA模型
lda_fit1 <- lda(Class ~ ., data = train_sub1)
# 测试集预测
pred_result1 <- predict(lda_fit1, newdata = test_sub1)
# 输出混淆矩阵对比真实值与预测值
confusion1 <- table(真实标签 = test_sub1$Class, 预测标签 = pred_result1$class)
print(confusion1)
# 输出测试集准确率
acc1 <- sum(diag(confusion1)) / sum(confusion1)
cat("第一个子集测试集准确率:", round(acc1*100, 2), "%\n")

4. 第二个子集LDA建模与预测

对应字段为Class, Hue, Alcalinity, Phenols, Malic, Magnesium, Intensity, Nonflavanoid, Flavanoids:

sub2_col <- c("Class","Hue", "Alcalinity", "Phenols", "Malic", "Magnesium", "Intensity", "Nonflavanoid","Flavanoids")
train_sub2 <- train_set[sub2_col]
test_sub2 <- test_set[sub2_col]

lda_fit2 <- lda(Class ~ ., data = train_sub2)
pred_result2 <- predict(lda_fit2, newdata = test_sub2)
confusion2 <- table(真实标签 = test_sub2$Class, 预测标签 = pred_result2$class)
print(confusion2)
acc2 <- sum(diag(confusion2)) / sum(confusion2)
cat("第二个子集测试集准确率:", round(acc2*100, 2), "%\n")
补充说明
  • 如果运行时提示列名不存在,先执行colnames(wine)查看当前加载数据集的实际列名,修正拼写错误即可
  • 如果需要避免训练/测试集类别分布偏移,可以做分层抽样,保证两个集合的各类别占比和原数据集一致
  • LDA函数内部会自动处理变量尺度差异,不需要提前对特征做标准化处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 19:30:09