Python多分类Logistic回归详解与实践

news/2025/1/8 17:43:07/

在机器学习中,Logistic回归是一种基本但非常有效的分类算法。它不仅可以用于二分类问题,还可以扩展应用于多分类问题。本文将详细介绍如何使用Python实现一个多分类Logistic回归模型,并给出详细的代码示例。

一、Logistic回归简介

Logistic回归是一种线性模型,用于二分类问题。它通过Sigmoid函数将线性回归的输出映射到(0, 1)区间内,从而得到样本属于某一类的概率。对于多分类问题,可以使用Softmax函数将输出映射到多个类别上,使得每个类别的输出概率之和为1。

Logistic回归模型的一般形式为:

请添加图片描述

其中,θ 是模型参数,x 是输入特征。

对于多分类问题,假设有 k 个类别,则Softmax函数的形式为:

请添加图片描述

其中,θi 是第 i 个类别的参数向量。

二、数据准备

在实现多分类Logistic回归之前,我们需要准备一些数据。这里我们使用经典的Iris数据集,该数据集包含三个类别的鸢尾花,每个类别有50个样本,每个样本有4个特征。

以下是数据准备的代码:

python">import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler# 加载Iris数据集
iris = load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
data['target'] = iris.target# 显示数据的前5行
print(data.head())# 划分训练集和测试集
X = data[iris.feature_names]  # 特征
y = data['target']  # 目标变量
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 特征缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
三、模型训练

在训练多分类Logistic回归模型时,我们需要使用LogisticRegression类,并指定multi_class='multinomial'参数以使用多项逻辑回归。此外,我们还需要指定优化算法,这里使用solver='lbfgs'

以下是模型训练的代码:

python">from sklearn.linear_model import LogisticRegression# 创建Logistic回归模型
model = LogisticRegression(multi_class='multinomial', solver='lbfgs')# 训练模型
model.fit(X_train, y_train)# 输出模型的训练分数
print(f'Training score: {model.score(X_train, y_train)}')
四、模型评估

训练完模型后,我们需要对模型进行评估,以了解其在测试集上的表现。常用的评估指标包括准确率、混淆矩阵和分类报告。

以下是模型评估的代码:

python">from sklearn.metrics import accuracy_score, confusion_matrix, classification_report# 对测试集进行预测
y_pred = model.predict(X_test)# 计算和显示准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')# 计算和显示混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print('Confusion Matrix:\n', conf_matrix)# 计算和显示分类报告
print(classification_report(y_test, y_pred))
五、代码整合与运行

以下是完整的代码示例,可以直接运行:

python">import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, confusion_matrix, classification_report# 加载Iris数据集
iris = load_iris()
data = pd.DataFrame(data=iris.data, columns=iris.feature_names)
data['target'] = iris.target# 显示数据的前5行
print(data.head())# 划分训练集和测试集
X = data[iris.feature_names]  # 特征
y = data['target']  # 目标变量
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)# 特征缩放
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 创建Logistic回归模型
model = LogisticRegression(multi_class='multinomial', solver='lbfgs')# 训练模型
model.fit(X_train, y_train)# 输出模型的训练分数
print(f'Training score: {model.score(X_train, y_train)}')# 对测试集进行预测
y_pred = model.predict(X_test)# 计算和显示准确率
accuracy = accuracy_score(y_test, y_pred)
print(f'Accuracy: {accuracy}')# 计算和显示混淆矩阵
conf_matrix = confusion_matrix(y_test, y_pred)
print('Confusion Matrix:\n', conf_matrix)# 计算和显示分类报告
print(classification_report(y_test, y_pred))
六、结果分析

运行上述代码后,你将得到模型的训练分数、准确率、混淆矩阵和分类报告。以下是对这些结果的分析:

  1. 训练分数:这是模型在训练集上的准确率,通常会比测试集上的准确率要高。如果训练分数过高而测试分数过低,可能表明模型出现了过拟合。
  2. 准确率:这是模型在测试集上的准确率,是衡量模型性能的重要指标。准确率越高,说明模型的性能越好。
  3. 混淆矩阵:混淆矩阵是一个表格,用于显示模型在各个类别上的预测结果。通过混淆矩阵,我们可以了解模型在各个类别上的表现,以及是否存在类别混淆的情况。
  4. 分类报告:分类报告提供了每个类别的精确率、召回率和F1分数等指标。精确率表示预测为正样本的实例中真正为正样本的比例;召回率表示所有真正的正样本中被正确预测的比例;F1分数是精确率和召回率的调和平均数,用于综合衡量模型的性能。
七、模型优化

虽然上述代码已经实现了一个基本的多分类Logistic回归模型,但在实际应用中,我们可能还需要对模型进行优化,以提高其性能。以下是一些常用的优化方法:

  1. 特征选择:选择对模型性能有重要影响的特征进行训练,可以提高模型的准确性和泛化能力。
  2. 正则化:通过添加正则化项来防止模型过拟合。Logistic回归中常用的正则化方法包括L1正则化和L2正则化。
  3. 调整超参数:通过调整模型的超参数(如学习率、迭代次数等)来优化模型的性能。
  4. 集成学习:将多个模型的预测结果进行组合,以提高模型的准确性和稳定性。常用的集成学习方法包括袋装法(Bagging)和提升法(Boosting)。
八、结论

本文详细介绍了如何使用Python实现一个多分类Logistic回归模型,并给出了详细的代码示例。通过数据准备、模型训练、模型评估和结果分析等步骤,我们了解了多分类Logistic回归的基本实现流程。此外,本文还介绍了模型优化的一些常用方法,以帮助读者在实际应用中提高模型的性能。希望本文能为初学者提供有价值的参考,并在实践中不断提升自己的技能。


http://www.ppmy.cn/news/1561604.html

相关文章

亚矩阵云手机:跨境出海直播的全方位利器

在跨境出海直播领域,亚矩阵云手机扮演着举足轻重的角色,为跨境业务中面临的诸多挑战提供了行之有效的解决方案。以下将对其作用与解决方案展开详细阐述。 一、亚矩阵云手机在跨境出海直播中的关键作用 (一)突破地域限制&#xff0…

英伟达 RTX 5090 显卡赋能医疗大模型:变革、挑战与展望

一、英伟达 RTX 5090 与 RTX 4090 技术参数对比 1.1 核心架构与制程工艺 在探讨英伟达 RTX 4090 与 RTX 5090 的差异时,核心架构与制程工艺无疑是最为关键的基础要素,它们从根本上决定了两款显卡的性能上限与应用潜力。 1.1.1 核心架构差异 RTX 4090…

望获实时Linux系统与大语言模型深度融合,开创实时智能无限可能!

大语言模型的崛起为智能化应用开辟了新的可能性。借助深度学习技术,这些模型能够理解和生成自然语言,处理复杂的文本和语义信息。这使得它们在诸如人机问答、内容生成和数据分析等领域展现出巨大的潜力。在实时控制领域,大语言模型能够显著提…

conda快速安装并配置pycharm

1、镜像下载地址 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/2、安装完成后配置环境变量 安装记得all users 配置环境 3、配置镜像 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda config --add channels https…

大疆无人机炸机,视频文件打不开怎么办

3-9 现在无人机已经非常普及和大众化,可以说已经是个大人玩具。 但是有时候会出意外,比如出现炸机的情况,当出现炸机的时候,无人机拍摄的视频有可能会出现播放不了的现象,比如下面这个,拍摄的是一个乡村的…

书籍推荐:MySQL 是怎样运行的-从根上理解 MySQL

2022-06-03 日看完这本书,大概花了一周的时间。整体上看得比较慢,书中的内容比较深,我看的时候需要查一下资料。 对我来说,在讲 MySQL 原理的书中,这本书可以排在第一,这本书侧重于 MySQL 的原理&#xff…

微信小程序获取图片使用session(上篇)

概述&#xff1a; 我们开发微信小程序&#xff0c;从后台获取图片现实的时候&#xff0c;通常采用http get的方式&#xff0c;例如以下代码 <image class"user_logo" src"{{logoUrl}}"></image>变量logoUrl为ur图片l的请求地址 但是对于很多…

Solaris操作系统

Solaris操作系统是Sun Microsystems&#xff08;现为Oracle公司的一部分&#xff09;开发的一种UNIX操作系统。它以其高可靠性、强大的网络功能和出色的性能而闻名。以下是对Solaris操作系统的详细介绍&#xff1a; 历史背景 Solaris的起源可以追溯到SunOS&#xff0c;这是Su…