鸢尾花逻辑回归多分类R实现
时间: 2025-06-01 11:52:37 浏览: 15
### R语言实现鸢尾花数据集上的逻辑回归多分类
以下是使用R语言基于`iris`数据集进行逻辑回归多分类的具体方法和示例代码:
#### 数据加载与准备
在R中可以直接调用内置的`iris`数据集。为了便于后续操作,可以先查看数据结构并分离特征变量(X)和目标变量(y)。
```r
# 加载数据集
data(iris)
# 查看数据集前几行
head(iris)
# 将类别转换为因子型
iris$Species <- as.factor(iris$Species)
```
#### 训练集与测试集划分
采用随机抽样的方式将数据划分为训练集和测试集。
```r
# 设置随机种子以保证可重复性
set.seed(2023)
# 创建索引用于划分数据集
train_index <- sample(1:nrow(iris), size = round(0.8 * nrow(iris)), replace = FALSE)
# 划分训练集和测试集
train_data <- iris[train_index, ]
test_data <- iris[-train_index, ]
```
#### 构建逻辑回归模型
对于多分类问题,R中的`glm()`函数可以通过设置参数`family = "multinomial"`来支持多项式逻辑回归[^6]。然而,默认情况下`glm()`仅适用于二分类问题。因此,在此场景下推荐使用专门的包如`nnet`中的`multinom()`函数。
```r
# 安装并加载必要的包
if (!require(nnet)) install.packages("nnet")
library(nnet)
# 使用 multinom 函数构建多分类逻辑回归模型
model <- multinom(Species ~ ., data = train_data)
# 打印模型摘要
summary(model)
```
#### 模型预测与评估
完成模型训练后,可以在测试集上进行预测,并计算准确率或其他性能指标。
```r
# 对测试集进行预测
predicted_classes <- predict(model, newdata = test_data)
# 显示真实值与预测值对比
comparison <- cbind(test_data$Species, predicted_classes)
colnames(comparison) <- c("True Class", "Predicted Class")
# 输出混淆矩阵
conf_matrix <- table(Predicted = predicted_classes, Actual = test_data$Species)
print(conf_matrix)
# 计算总体准确率
accuracy <- sum(diag(conf_matrix)) / sum(conf_matrix)
cat("Accuracy:", accuracy, "\n")
```
以上即为完整的流程说明以及对应的R代码实现。
---
阅读全文
相关推荐




















