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

R语言gclus包wine数据集拆分后如何对指定子集执行LDA分析

R中对wine数据集指定子集执行线性判别分析(LDA)操作指南

R生态中线性判别分析最成熟的实现是MASS包内置的lda()函数,在你已经完成7:3训练测试集拆分的基础上,按以下步骤操作即可得到结果。

前置准备

首先完成依赖加载和数据格式修正,请将以下代码插入到你原有数据集拆分代码的最前面,避免分类标签识别错误:

# 加载LDA所需的MASS包,若首次运行报错请先执行 install.packages("MASS")
library(MASS)
data("wine")
# 将分类标签Class转为因子类型,避免模型将其识别为连续变量
wine$Class <- as.factor(wine$Class)

# 以下是你原有的数据集拆分代码,放在类型转换之后即可
sample_size <- floor(0.70 * nrow(wine))
set.seed(123)
train_index <- sample(seq_len(nrow(wine)), size = sample_size)
train <- wine[train_index, ]
test <- wine[-train_index, ]

第一个子集(Class、Ash、OD280、Nonflavanoid)建模

该子集共包含3个预测变量,对应双判别轴(因葡萄酒共3个类别),操作代码如下:

# 筛选当前子集需要的变量
vars_set1 <- c("Class", "Ash", "OD280", "Nonflavanoid")
train_set1 <- train[, vars_set1]
test_set1 <- test[, vars_set1]

# 仅使用训练集拟合LDA模型
lda_fit1 <- lda(Class ~ ., data = train_set1)
# 输出模型核心结果:组先验概率、组均值、线性判别系数
print(lda_fit1)

# 在测试集上做预测,输出混淆矩阵计算准确率
pred_res1 <- predict(lda_fit1, newdata = test_set1)
confusion_mat1 <- table(真实标签 = test_set1$Class, 预测标签 = pred_res1$class)
print(confusion_mat1)
acc1 <- sum(diag(confusion_mat1)) / sum(confusion_mat1)
cat("子集1测试集分类准确率:", sprintf("%.2f%%", acc1*100), "\n")

第二个子集(Class、Hue、Magnesium、Flavanoids、Alcohol、Malic、Intensity、Alcalinity、Proline)建模

该子集共包含8个预测变量,建模逻辑与第一个子集完全一致,替换变量列表即可:

# 筛选当前子集需要的变量
vars_set2 <- c("Class", "Hue", "Magnesium", "Flavanoids", "Alcohol", "Malic", "Intensity", "Alcalinity", "Proline")
train_set2 <- train[, vars_set2]
test_set2 <- test[, vars_set2]

# 拟合LDA模型
lda_fit2 <- lda(Class ~ ., data = train_set2)
print(lda_fit2)

# 测试集预测与效果评估
pred_res2 <- predict(lda_fit2, newdata = test_set2)
confusion_mat2 <- table(真实标签 = test_set2$Class, 预测标签 = pred_res2$class)
print(confusion_mat2)
acc2 <- sum(diag(confusion_mat2)) / sum(confusion_mat2)
cat("子集2测试集分类准确率:", sprintf("%.2f%%", acc2*100), "\n")

补充说明

  • 建模全程仅使用训练集数据拟合参数,测试集数据完全不参与训练过程,避免数据泄露导致准确率估计虚高
  • 标准LDA假设各组样本服从多元正态分布、组间协方差矩阵齐性,若数据不满足该假设,可替换为MASS包中的qda()函数执行二次判别分析
  • 若需要绘制LDA判别投影图,可直接提取预测结果中的x元素,即每个样本在判别轴上的投影坐标

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 10:09:20