机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

这篇具有很好参考价值的文章主要介绍了机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 前言

1.1 Logistic回归的介绍

逻辑回归(Logistic regression,简称LR)是一种经典的二分类算法,它将输入特征与一个sigmoid函数进行线性组合,从而预测输出标签的概率。该算法常被用于预测离散的二元结果,例如是/否、真/假等。

优点:

  • 实现简单。Logistic回归的参数可以用极大似然估计法进行求解,算法本身非常简单。

  • 速度快。Logistic回归计算量小,训练速度快。

  • 输出结果易于理解。Logistic回归的输出结果是概率,易于解释。

  • 容易扩展。Logistic回归可用于多分类问题和不平衡数据集。

缺点:

  • 只适用于线性可分的问题。当特征之间存在非线性关系时,Logistic回归的效果会受到限制。

  • 对异常值敏感。由于Logistic回归使用了sigmoid函数,对于异常值非常敏感。

  • 容易欠拟合。当特征与目标变量之间的关系非常复杂时,Logistic回归很容易出现欠拟合现象。

1.2 Logistic回归的应用

Logistic回归广泛应用于许多领域,包括:

  1. 金融风险评估。银行和信用卡公司使用Logistic回归来评估借款人的信用风险,预测贷款违约的概率。

  2. 医学诊断。Logistic回归可以用于预测患者是否患有某种疾病或病情的严重程度。

  3. 市场分析。Logistic回归可以用于预测产品或服务的市场需求,并帮助企业做出更好的决策。

  4. 自然语言处理。Logistic回归可以用于文本分类,例如判断一段文本是否属于某个主题或情感极性。

  5. 图像处理。Logistic回归可以用于图像分类和目标检测,例如识别数字和字母。

总之,Logistic回归是一种灵活的算法,可以应用于许多不同的领域和问题,特别是在需要预测二元结果的场景中表现出色。

2 iris数据集数据处理

iris数据集共有150个样本,目标变量为花的类别其都属于鸢尾属下的三个亚属(target),分别是山鸢尾 (Iris-setosa),变色鸢尾(Iris-versicolor)和维吉尼亚鸢尾(Iris-virginica)。

四个特征,分别是花萼长度(sepal length)、花萼宽度(sepal width)、花瓣长度(petal length)、花瓣宽度(petal width)。

2.1 导入函数

import numpy as np 
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns

2.2 导入数据

from sklearn.datasets import load_iris
data = load_iris() 
iris_target = data.target 
iris_features = pd.DataFrame(data=data.data, columns=data.feature_names) #利用Pandas转化为DataFrame格式

2.3 简单数据查看

## 查看数据的整体信息
iris_features.info()

## 查看每个类别数量
pd.Series(iris_target).value_counts()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

## 查看head或tail
iris_features.head()
#iris_features.tail()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

## 对于特征进行一些统计描述
iris_features.describe()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

3 可视化

3.1 条形图/散点图

## 合并标签和特征信息
iris_all = iris_features.copy() ##进行浅拷贝,防止对于原始数据的修改
iris_all['target'] = iris_target

## 可视化
sns.pairplot(data=iris_all,diag_kind='hist', hue= 'target')
plt.show()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

从结果可以发现,在2D情况下不同的特征组合对于不同类别的花的散点分布,以及大概的区分能力。

3.2 箱线图

## 构建画布2x2
import matplotlib.pyplot as plt
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(10, 8))

## 可视化
for i, col in enumerate(iris_features.columns):
    sns.boxplot(ax=axes[i//2, i%2], x='target', y=col, saturation=0.5, palette='pastel', data=iris_all)
    axes[i//2, i%2].set_title(col)

plt.tight_layout()
plt.show()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

3.3 三维散点图

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(figsize=(10,8))
ax = fig.add_subplot(111, projection='3d')

iris_all_class0 = iris_all[iris_all['target']==0].values
iris_all_class1 = iris_all[iris_all['target']==1].values
iris_all_class2 = iris_all[iris_all['target']==2].values
# 'setosa'(0), 'versicolor'(1), 'virginica'(2)
ax.scatter(iris_all_class0[:,0], iris_all_class0[:,1], iris_all_class0[:,2],label='setosa')
ax.scatter(iris_all_class1[:,0], iris_all_class1[:,1], iris_all_class1[:,2],label='versicolor')
ax.scatter(iris_all_class2[:,0], iris_all_class2[:,1], iris_all_class2[:,2],label='virginica')
plt.legend()

plt.show()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

4 建模预测

4.1 二分类预测

## 划分为训练集和测试集
from sklearn.model_selection import train_test_split

## 选择其类别为0和1的样本 (不包括类别为2的样本)
iris_features_part = iris_features.iloc[:100]
iris_target_part = iris_target[:100]

## 训练集测试集7/3分
x_train, x_test, y_train, y_test = train_test_split(iris_features_part, iris_target_part, test_size = 0.3, random_state = 2020)

## 从sklearn中导入逻辑回归模型
from sklearn.linear_model import LogisticRegression
clf = LogisticRegression(random_state=0, solver='lbfgs')

# 训练模型
clf.fit(x_train, y_train)
## 查看其对应的w
print('the weight of Logistic Regression:',clf.coef_)

## 查看其对应的w0
print('the intercept(w0) of Logistic Regression:',clf.intercept_)

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

## 预测模型
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)
from sklearn import metrics

## 利用accuracy(准确度)评估模型效果
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_train,train_predict))
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))

## 查看混淆矩阵 (预测值和真实值的各类情况统计矩阵)
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print('The confusion matrix result:\n',confusion_matrix_result)

# 可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

结果准确度为1,代表所有的样本都预测正确了,绝杀

4.2 多分类预测

## 训练集测试集还是7/3分
x_train, x_test, y_train, y_test = train_test_split(iris_features, iris_target, test_size = 0.3, random_state = 2020)

## 建模 
clf = LogisticRegression(random_state=0, solver='lbfgs')

## 训练模型
clf.fit(x_train, y_train)

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

## 预测模型
train_predict = clf.predict(x_train)
test_predict = clf.predict(x_test)

## p = p(y=1|x,\theta)),预测模型概率
train_predict_proba = clf.predict_proba(x_train)
test_predict_proba = clf.predict_proba(x_test)

print('The test predict Probability of each class:\n',test_predict_proba)
## 其中第一列代表预测为0类的概率,第二列代表预测为1类的概率,第三列代表预测为2类的概率。

## 利用accuracy评估模型效果
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_train,train_predict))
print('The accuracy of the Logistic Regression is:',metrics.accuracy_score(y_test,test_predict))

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

比起二分类的1略小,但均大于0.9

## 查看混淆矩阵
confusion_matrix_result = metrics.confusion_matrix(test_predict,y_test)
print('The confusion matrix result:\n',confusion_matrix_result)

# 可视化
plt.figure(figsize=(8, 6))
sns.heatmap(confusion_matrix_result, annot=True, cmap='Blues')
plt.xlabel('Predicted labels')
plt.ylabel('True labels')
plt.show()

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)

根据结果发现,其在三分类的结果的预测准确度上有所下降,但好在测试集还有91%,这是由于versicolor(1)virginica(2)这两个类别的特征,我们从可视化的时候也可以发现,其特征的边界具有一定的模糊性(边界类别混杂,没有明显区分边界),所有在这两类的预测上出现了一定的错误。

5 讨论

Logistic回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分类问题(即输出只有两种,分别代表两个类别),所以利用了Logistic函数(或称为Sigmoid函数

原理的简单解释:当z=>0时, y=>0.5,分类为1,当z<0时, y<0.5,分类为0,其对应的y值我们可以视为类别1的概率预测值,而多分类其实就是将多个二分类的逻辑回归组合。

机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)文章来源地址https://www.toymoban.com/news/detail-478171.html

到了这里,关于机器学习实战:Python基于Logistic逻辑回归进行分类预测(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 吴恩达老师《机器学习》课后习题2之逻辑回归(logistic_regression)

    吴恩达老师《机器学习》课后习题2之逻辑回归(logistic_regression)

    用于解决输出标签y为0或1的二元分类问题 判断邮件是否属于垃圾邮件? 银行卡交易是否属于诈骗? 肿瘤是否为良性? 等等。 案例:根据学生的两门学生成绩,建立一个逻辑回归模型,预测该学生是否会被大学录取 数据集:ex2data1.txt python实现逻辑回归, 目标:建立分类器(求

    2024年02月09日
    浏览(13)
  • Logistic回归(逻辑回归)实战案例分析

    Logistic回归(逻辑回归)实战案例分析

    Lgistic回归也叫逻辑回归,是广义线性回归的一种,通常用于解决二分类问题。 表达式如下: 经过logit变换,则可以写成广义线性表达式 通常做回归是用其广义线性表达式,且logistic回归的结果概率表现为S型曲线,一般以小于0.5的样本都分类为0,大于0.5的样本都分类为1。

    2024年04月25日
    浏览(28)
  • 【Python机器学习】实验04 多分类实践(基于逻辑回归)

    【Python机器学习】实验04 多分类实践(基于逻辑回归)

    Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Se

    2024年02月11日
    浏览(14)
  • 【Python机器学习】实验04(1) 多分类(基于逻辑回归)实践

    【Python机器学习】实验04(1) 多分类(基于逻辑回归)实践

    Iris数据集是常用的分类实验数据集,由Fisher, 1936收集整理。Iris也称鸢尾花卉数据集,是一类多重变量分析的数据集。数据集包含150个数据样本,分为3类,每类50个数据,每个数据包含4个属性。可通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于(Se

    2024年02月14日
    浏览(10)
  • 【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)

    【Python机器学习】决策树、逻辑回归、神经网络等模型对电信用户流失分类实战(附源码和数据集)

    需要源码和数据集请点赞关注收藏后评论区留言私信~~~ 该实例数据来自kaggle,它的每一条数据为一个用户的信息,共有21个有效字段,其中最后一个字段Churn标志该用户是否流失   可用pandas的read_csv()函数来读取数据,用DataFrame的head()、shape、info()、duplicated()、nunique()等来初步

    2024年02月03日
    浏览(13)
  • Logistic回归(逻辑回归)及python代码实现

    Logistic回归(逻辑回归)及python代码实现

    在模式识别问题中,所关心的量是分类,比如是否会患有某种疾病,这时就不能用简单的线性回归来完成这个问题了。为了解决次问题,我们引入了非线性激活函数 g : R D → ( 0 , 1 ) g:{mathbb R}^Dto(0,1) g : R D → ( 0 , 1 ) 来预测类别标签的后验概率 p ( y = 1 ∣ x ) p(y=1|bf x) p ( y =

    2024年02月07日
    浏览(12)
  • 基于weka手工实现逻辑斯谛回归(Logistic回归)

    逻辑斯谛回归模型其实是一种分类模型,这里实现的是参考李航的《统计机器学习》以及周志华的《机器学习》两本教材来整理实现的。 假定我们的输入为 x x x , x x x 可以是多个维度的,我们想要根据 x x x 去预测 y y y , y ∈ { 0 , 1 } yin {0,1} y ∈ { 0 , 1 } 。逻辑斯谛的模型

    2024年02月15日
    浏览(10)
  • pytorch深度学习逻辑回归 logistic regression

    pytorch深度学习逻辑回归 logistic regression

    结果  

    2024年02月16日
    浏览(10)
  • Python实现逻辑回归(Logistic Regression)

    Python实现逻辑回归(Logistic Regression)

    💥 项目专栏:【Python实现经典机器学习算法】附代码+原理介绍 👑 最近粉丝群中很多朋友私信咨询一些决策树、逻辑回归等机器学习相关的编程问题,为了能更清晰的说明,所以建立了本专栏 专门记录基于原生Python实现一些入门必学的机器学习算法 ,帮助广大零基础用户

    2024年02月01日
    浏览(12)
  • 逻辑回归(Logistic回归又名对数几率回归)原理及python代码实现

            为了实现Logistic回归分类器,我们可以在每个特征上都乘以一个回归系数,然后把所有的结果值相加,将这个总和代人Sigmoid函数中,进而得到一个范围在0~1之间的数值。任何大于0.5的数据被分人1类 ,小于0.5即被归人0类 ,所以Logistic回归也可以被看成是一种概率估

    2024年01月18日
    浏览(9)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包