首页 > 编程语言 >Python多分类Logistic回归详解与实践

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

时间:2025-01-03 23:58:25浏览次数:1  
标签:iris Python train 模型 详解 Logistic test data

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

一、Logistic回归简介

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

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

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

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

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

二、数据准备

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

以下是数据准备的代码:

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'

以下是模型训练的代码:

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)}')

四、模型评估

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

以下是模型评估的代码:

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))

五、代码整合与运行

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

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回归的基本实现流程。此外,本文还介绍了模型优化的一些常用方法,以帮助读者在实际应用中提高模型的性能。希望本文能为初学者提供有价值的参考,并在实践中不断提升自己的技能。

标签:iris,Python,train,模型,详解,Logistic,test,data
From: https://www.cnblogs.com/TS86/p/18651233

相关文章

  • 【金融安全】境外投资ODI备案详解
    一、基本概念ODI(OverseasDirectInvestment)是指中国境内企业通过新设、并购等方式在境外拥有非金融企业所有权、控制权等权益的投资行为。ODI备案,即境外直接投资备案,是指中国企业在进行境外投资前,根据中国政府的相关规定,向国家发展和改革委员会(发改委)、商务部以及外汇管理局等......
  • 仿照 github代码提交代码活跃图 Python实现全年运动活跃图
     Python代码如下:1importmatplotlib.pyplotasplt2importnumpyasnp34#假设有一年的运动数据,每天的运动次数5np.random.seed(0)6activity_data=np.random.randint(0,11,size=365)78#创建一个7天*53周的网格9days_in_week=710weeks......
  • 如何使用 Python 和 FFmpeg 下载 B站视频
    在这篇文章中,我们将讨论如何使用Python脚本结合FFmpeg下载并合并B站视频的流,生成一个完整的视频文件。具体来说,我们将通过B站的API获取视频的音频和视频流,然后使用FFmpeg下载并将它们合并成一个.mp4文件。前提条件Python:你需要安装Python,推荐使用Python3.6或......
  • 数据库进阶教程之存储过程(万字详解)
    文章目录一、存储过程概述1.1、什么是存储过程1.2、存储过程特点1.3、存储过程优缺点二、存储过程创建2.1、创建格式2.2、变量2.3、变量作用域三、存储过程参数3.1、in3.2、out3.3、inout四、存储过程条件4.1、if…else…endif4.2、if…elseif…else…endif4.3、cas......
  • Python-二分法的进阶与Bisect库详解
    1.1前言:在进阶之前可能很多学过二分法的人都认为二分查找十分简单,但事实不完全如此。比如你是否熟练的知道while的条件有等于时返回究竟是mid还是left,还是right,还是随便返回一个没有等于时又是返回什么……本文将给大家讲解二分法的进阶和bisect库函数的运用,并且再讲解之后......
  • 【华为OD-E卷 - 组合出合法最小数 100分(python、java、c++、js、c)】
    【华为OD-E卷-组合出合法最小数100分(python、java、c++、js、c)】题目给一个数组,数组里面哦都是代表非负整数的字符串,将数组里所有的数值排列组合拼接起来组成一个数字,输出拼接成的最小的数字输入描述一个数组,数组不为空,数组里面都是代表非负整数的字符串,可以是0开头,......
  • 最新的序列数据预测模型SOFTS详解
    模型背景在时间序列预测领域的发展历程中,研究者们不断探索更高效、准确的方法。传统方法如递归神经网络(RNN)和卷积神经网络(CNN)虽然取得了一定成果,但存在无法有效捕捉长期依赖性的局限性。近年来,Transformer模型因其出色的长期依赖关系捕捉能力,在时间序列预测任务中展......
  • DCGAN模型详解
    模型背景在深度学习领域迅速发展的背景下,生成对抗网络(GAN)作为一种革命性的生成模型应运而生。IanGoodfellow等人于2014年首次提出GAN概念,开创了生成模型的新纪元。这一创新源于对深度学习在图像生成方面潜力的探索,旨在解决非监督学习中的关键问题:如何让机器创造出看似真......
  • 【金融安全】详解红筹架构的搭建
    #金融与法律#红筹架构什么是红筹架构红筹架构通常是指中国内地企业在境外(如中国香港、开曼群岛、英属维尔京群岛等地)设立特殊目的公司(SPV),然后将境内企业的资产或权益注入到这些SPV中,最终通过这些境外控股公司在境外交易所上市。红筹架构允许企业绕开国内直接上市的限制,利用国际......
  • 基于Python的毕业设计选题题目建议 开题指导
    目录毕设选题数据分析与可视化机器学习与深度学习Web开发选题迷茫选题的重要性更多选题指导最后     大四是整个大学期间最忙碌的时光,一边要忙着准备考研,考公,考教资或者实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。大四的同学马上要......