逻辑回归模型及应用-sklearn

article/2025/8/24 4:00:52

逻辑回归模型及应用

本次实验对于使用机器学习完成分类与预测任务的基本流程。
数据集导入->训练集和测试集的划分->数据标准化->模型导入与训练->测试集结果预测->分类情况可视化->混淆矩阵以及多指标精度评价。
以及使用sklearn库中的逻辑模型,数据预处理,数据集进行具体操作。
最后使用seaborn进行散点图的绘制。使用基础的精度评估指标评价模型。
sklearn库中的preprocessing.StandardScaler()函数做了一个减均值除方差的过程。
在这里插入图片描述

线性函数为表达式为:Y=KX+B;
其中K为1*n维向量,对应X的“权重占比”。加上一个偏置B进行计算
逻辑函数为sigmoid函数:非线性转化二分类处理
在这里插入图片描述
在这里插入图片描述

将两者结合构成逻辑回归函数:
在这里插入图片描述
用与进行二分类。
处理多分类任务时,sklearn中的logistic函数会使用多个逻辑回归函数进行比较分类,以达到分类效果。
内容一:对sklearn库中的鸢尾花数据集进行提取分析。抽取部分数据:花瓣长度、花瓣宽度和两个类别:0,1类,利用逻辑回归模型进行二分类。熟悉使用流程
(1)数据集导入
(2)训练集和测试集的划分
(3)数据标准化
(4)模型导入与训练
(5)测试集结果预测
(6)分类情况可视化
(7)混淆矩阵以及多指标精度评价

#数据以及库的导入
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets  # 导入数据库
from sklearn import model_selection
from sklearn import preprocessing
from sklearn import linear_modeliris = datasets.load_iris()  # 导入鸢尾花数据
print(iris.data.shape,iris.target.shape)  #数据大小
print(iris.feature_names)  # 相关特征名称
#创建dataframe数据结构
iris_feature=pd.DataFrame(iris.data,columns=iris.feature_names)
iris_target=pd.DataFrame(iris.target,columns=['species'])
#按列进行dataframe的数据连接
irisData=pd.concat([iris_feature,iris_target],axis=1)

在这里插入图片描述

#定义函数用于绘制热力图
def Hotimg(conm):plt.imshow(conm,cmap=plt.cm.Blues)plt.xticks(range(len(conm)),iris.target_names)plt.yticks(range(len(conm)),iris.target_names)plt.colorbar()plt.xlabel("Labels")plt.ylabel("Predicted labels")plt.title("confusion of Log")#显示数值for i in range(len(conm)):for j in range(len(conm)):plt.text(i,j,conm[j][i])plt.show()
#筛选用于二分类的数据,类别为01的
irisData=irisData[irisData['species']<2]
#数据集的划分model_selection中train_test_split(Data,size):待划分数据,测试集占比 
train_set,test_set=model_selection.train_test_split(irisData,test_size=0.2)
#输出用于观察
print(train_set.shape)
print(test_set.shape)
train_set

在这里插入图片描述

#数据预处理
transform= preprocessing.StandardScaler()
#对测试集和验证机分别进行标准化预处理
X_train=transform.fit_transform(train_set[['petal length (cm)','petal width (cm)']])
X_test=transform.fit_transform(test_set[['petal length (cm)','petal width (cm)']])
#标准分类
Y_train=train_set['species']
Y_test=test_set['species']
#模型导入
#从线性模型中选择逻辑回归模型
lgr=linear_model.LogisticRegression()
#使用训练集数据训练模型
lgr.fit(X_train,Y_train)
#获得模型参数进行数据类型转化
#参数:coef*X+intercept=Y
coef,intercept=np.array(lgr.coef_),np.array(lgr.intercept_)
#对测试集进行预测
y_pred=lgr.predict(X_test)
y_pred

在这里插入图片描述

#分界情况可视化
#制作x横坐标范围为训练数据中极小值到极大值,间隔为0.1
x1=np.arange(X_train[:,0].min(),X_train[:,0].max(),step=0.1)
#y=k0*x0+k1*k1+b && y=0时为分界点 => x1=-(x1*k1+b)/k0
x2=pd.DataFrame(0-(x1*coef[0][0]+intercept)/coef[0][1],columns=["petal width"])
#转为dataframe数据结构
x1=pd.DataFrame(x1,columns=["petal length"])
#按列拼接合成dataframe
x=pd.concat([x1,x2],axis=1)
#添加分界线,设置x,y轴标签,数据内容,颜色
sns.relplot(x='petal length',y='petal width',data=x,color='r')
#添加训练集中的散点,以训练集中不同标签作为类别划分
sns.scatterplot(x=X_train[:,0],y=X_train[:,1],hue=Y_train)

在这里插入图片描述

#使用sklearn中的confusion_matrix计算混淆矩阵
from sklearn import metrics
conm=metrics.confusion_matrix(y_pred,Y_test)
Hotimg(conm)
#识别准确度
accuracy=np.sum(conm,axis=0)[0]/sum(sum(conm))
print("Accuracy:{0}".format(accuracy))
#识别精度
precision=conm[0,0]/np.sum(conm,axis=0)[0]
print("Precision:{0}".format(precision))
#反馈率
recall=conm[0,0]/(conm[0,0]+conm[1,1])
print("Recall:{0}".format(recall))

在这里插入图片描述
内容二:使用全部属性,用逻辑回归分类所有类型的鸢尾花。详细步骤以及精度评价
(1)数据集导入
(2)训练集和测试集的划分
(3)数据标准化
(4)模型导入与训练
(5)测试集结果预测
(6)分类情况可视化
(7)混淆矩阵以及多指标精度评价

#数据以及库的导入
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from sklearn import datasets  # 导入数据库
from sklearn import model_selection
from sklearn import preprocessing
from sklearn import linear_modeliris = datasets.load_iris()  # 导入鸢尾花数据
print(iris.data.shape,iris.target.shape)  #数据大小
print(iris.feature_names)  # 相关特征名称
#创建dataframe数据结构
iris_feature=pd.DataFrame(iris.data,columns=iris.feature_names)
iris_target=pd.DataFrame(iris.target,columns=['species'])
#按列进行dataframe的数据连接
irisData=pd.concat([iris_feature,iris_target],axis=1)

在这里插入图片描述

#数据集和测试集的划分
#设置训练集:测试集比例为8:2
train_set,test_set=model_selection.train_test_split(irisData,test_size=0.2)
print(train_set.shape)
print(test_set.shape)

在这里插入图片描述

#数据标准化
transform=preprocessing.StandardScaler()
#分别对训练集和验证机进行标准化
x_train=transform.fit_transform(train_set[["sepal length (cm)","sepal width (cm)","petal length (cm)","petal width (cm)"]])
x_test=transform.fit_transform(test_set[["sepal length (cm)","sepal width (cm)","petal length (cm)","petal width (cm)"]])
#标签分类
y_train=train_set['species']
y_test=test_set['species']
#模型导入与训练
lgr=linear_model.LogisticRegression()
#训练
lgr.fit(x_train,y_train)
#获得模型参数
coef,intercept=np.array(lgr.coef_),np.array(lgr.intercept_)
#预测
y_pred=lgr.predict(x_test)
y_pred

在这里插入图片描述

#绘制图片,由于四维或者三维图不好画,所以以sepal length (cm)	sepal width (cm)为轴绘图
x_train=irisData[["petal length (cm)","petal width (cm)"]]
#制作x横坐标范围为训练数据中极小值到极大值,间隔为0.1
x1=np.arange(x_train['petal length (cm)'].min(),x_train['petal width (cm)'].max(),step=0.1)
#转为dataframe数据结构
x1=pd.DataFrame(x1,columns=["petal length"])
#添加训练集中的散点,以训练集中不同标签作为类别划分
sns.scatterplot(x=x_train['petal length (cm)'],y=x_train['petal width (cm)'],hue=irisData['species'])#打印输出逻辑回归函数中用于二分类的三条线性函数
print("y1={:.3}*sepal length+{:.3}*sepal width+{:.3}*petal length+{:.3}*peetal width+{:.3}".format(coef[0][0],coef[0][1],coef[0][2],coef[0][3],intercept[0]))
print('y2={:.3}*sepal length+{:.3}*sepal width+{:.3}*petal length+{:.3}*peetal width+{:.3}'.format(coef[1][0],coef[1][1],coef[1][2],coef[1][3],intercept[1]))
print('y3={:.3}*sepal length+{:.3}*sepal width+{:.3}*petal length+{:.3}*peetal width+{:.3}'.format(coef[2][0],coef[2][1],coef[2][2],coef[2][3],intercept[2]))

在这里插入图片描述

#混淆矩阵
from sklearn import metrics
conm=metrics.confusion_matrix(y_pred,y_test)
Hotimg(conm)
#精确率计算
accuracy=np.sum(conm,axis=0)[0]/sum(sum(conm))
print(accuracy)
#识别精度
precision=conm[0,0]/np.sum(conm,axis=0)[0]
print(precision)
#召回率
recall=conm[0,0]/(conm[0,0]+conm[1,1])
print(recall)

在这里插入图片描述


http://chatgpt.dhexx.cn/article/v2uAxa4L.shtml

相关文章

机器学习第四章之逻辑回归模型

逻辑回归模型 4.1 逻辑回归模型算法原理4.1.1 逻辑回归模型的数学原理(了解&#xff09;4.1.2 逻辑回归模型的代码实现&#xff08;重要&#xff09;4.1.3 逻辑回归模型的深入理解 4.2 案例实战 - 股票客户流失预警模型4.2.1 案例背景4.2.2 数据读取与变量划分4.2.3 模型搭建与…

逻辑回归算法模型

目录 前言从对数变换到逻辑回归二项逻辑回归模型逻辑回归模型的应用逻辑回归模型的评价实践案例 前言 从这一期开始&#xff0c;我们准备介绍一系列经典机器学习算法模型&#xff0c;主要包括逻辑回归&#xff0c;支持向量机&#xff0c;决策树&#xff0c;因子分析&#xff0…

入门篇(二)模型:逻辑回归(一步步从原理到实现)

《老饼讲解机器学习》专注于机器学习的学习网站http://ml.bbbdata.com/teach#187 目录 一、问题 二、逻辑回归的思想 三、模型表达式 &#xfeff;四、损失函数 (一) 单个样本评估正确的概率 (二) 所有样本评估正确的概率 (三) 损失函数 (四) 总结 五、模型求解 (一)…

Logistic逻辑回归模型与参数估计

一、引言 线性回归的因变量是连续变量&#xff0c;而逻辑回归解决的是因变量是分类变量的问题。当然&#xff0c;自变量既可以是连续的也可以是分类的&#xff0c;但是分类变量做自变量前需要做哑变量处理。 逻辑回归将分类因变量的0、1等 值转换为取其值的概率&#xff0c;将…

逻辑回归模型(一)——数学模型

学习李航的《统计学习算法》,今天周三&#xff0c;这周任务之一完成逻辑回归模型的博文记录。 逻辑回归&#xff08;Logistic Regression&#xff09;属于分类方法&#xff08;classification&#xff09;。逻辑回归与最大熵模型&#xff08;maximum entropy&#xff09;都属于…

【机器学习】1.逻辑回归模型(1)

目录 一、广义线性模型&#xff08;Generalized Linear Model&#xff09; 1、一个引例 2、定义 二、逻辑回归 1、对数几率模型&#xff08;logit model&#xff09; 2、逻辑回归与Sigmoid函数 三、逻辑回归模型的输出结果 四、逻辑回归的多分类拓展 1、OvO 2、OvR …

逻辑回归模型(Logistic Regression)及Python实现

https://www.cnblogs.com/sumai/p/5221067.html 1.模型 在分类问题中&#xff0c;比如判断邮件是否为垃圾邮件&#xff0c;判断肿瘤是否为阳性&#xff0c;目标变量是离散的&#xff0c;只有两种取值&#xff0c;通常会编码为0和1。假设我们有一个特征X&#xff0c;画出散点图&…

逻辑回归详解

逻辑回归通常用于解决分类问题&#xff0c;比如&#xff1a;客户是否该买某个商品&#xff0c;借款人是否会违约等。实际上&#xff0c;“分类”是逻辑回归的目的和结果&#xff0c;中间过程依旧是“回归”&#xff0c;因为通过逻辑回归模型&#xff0c;我们得到的是0-1之间的连…

什么是逻辑回归?

深度学习&#xff08;Deep Learning&#xff09;是机器学习&#xff08;Machine Learning&#xff09;的一大分支&#xff0c;它试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 逻辑回归&#xff08;Logistic Regression&#xff0c;也译作…

逻辑回归模型调参

文章目录 一、逻辑回归&#xff08;Logistic Regression&#xff09;二、样本不均衡问题处理1 、过采样方法(一)、随机过采样法(二)、SMOTE算法 2 、欠采样方法(一)、随机欠采样 三、网格搜索快速调优损失函数&#xff08;对数似然损失&#xff09; 四、模型评价ROC曲线 一、逻…

逻辑回归(模型的建立与求解)

跟我一起机器学习系列文章将首发于公众号&#xff1a;月来客栈&#xff0c;欢迎文末扫码关注&#xff01; 0 前言 在上一讲中&#xff0c;笔者通过五篇文章来详细的介绍了线性回归模型&#xff0c;那么本讲开始继续介绍下一个经典的机器学习算法逻辑回归&#xff08;Logistic…

逻辑回归模型

本文代码及数据集来自《Python大数据分析与机器学习商业案例实战》 逻辑回归模型本质就是将线性回归模型通过Sigmoid函数进行了一个非线性转换&#xff0c;得到一个介于0&#xff5e;1之间的概率值。因此&#xff0c;逻辑回归模型的本质是预测概率&#xff0c;而不是直接预测具…

解读Logistic回归模型

一、logistic回归的由来 logistic回归在百度百科是这样定义的&#xff1a; logistic回归又称logistic回归分析&#xff0c;是一种广义的线性回归分析模型&#xff0c;常用于数据挖掘&#xff0c;疾病自动诊断&#xff0c;经济预测等领域。 由此可见 logistic回归是从线性回归模…

logistic回归模型

logistic回归模型 前言logistic回归模型logit变换几率logistic模型二项逻辑回归模型损失函数 logistic回归模型的应用logistic回归模型的评价 前言 从这一期开始&#xff0c;我们准备介绍一系列机器学习算法模型&#xff0c;主要包括logistic回归&#xff0c;决策树&#xff0…

逻辑回归模型logistic原理详解

Hello! 小A又来咯&#xff01; 之前我们详细的介绍了使用线性回归模型来进行回归学习&#xff0c;那如果要做分类任务该怎么办呢&#xff1f; 考虑二分类任务&#xff0c;其输出值y属于集合[0,1]。而线性回归模型zw^T*xb是实值。为了进行分类任务&#xff0c;我们需要将实值z转…

Python实现逻辑回归模型教程

理解多个预测变量与连续响应变量之间关系通常适用线性回归&#xff0c;但当响应变量为类别变量时需要适用逻辑回归。 逻辑回归是尝试从数据集中把W观测记录分为不同类别的分类算法。 常见的分类回归场景有&#xff1a; 通过信用分和账户余额预测客户贷款是否违约通过篮球比赛中…

【机器学习笔记4】逻辑回归模型

目录 什么是逻辑回归&#xff1f; Sigmoid函数 决策边界 逻辑回归的损失函数 为什么平方误差模型不可行&#xff1f; 对数损失函数 单个样例损失&#xff1a; 整体损失函数 梯度下降算法 补充&#xff1a;F1-score评价指标 F1-Score简介 相关概念 F-Score 示例及…

逻辑回归模型详解(Logistic Regression)

目录 广义线性模型 极大似然法 逻辑回归的假设函数 逻辑回归的损失函数 交叉熵损失函数 为什么LR模型损失函数使用交叉熵不用均方差 交叉熵损失函数的数学原理 交叉熵损失函数的直观理解 交叉熵简介 对数损失函数和交叉熵损失函数 逻辑回归优缺点 其他 逻辑回归与…

机器学习算法(一):逻辑回归模型(Logistic Regression, LR)

目录 1 LR 1.1 直观表述 1.2 决策边界&#xff08;Decision Boundary&#xff09; 2. 权值求解 2.1 代价函数&#xff08;似然函数&#xff09; 2.1.1 为什么损失函数不用最小二乘&#xff1f;即逻辑斯蒂回归损失函数为什么使用交叉熵而不是MSE&#xff1f; 2.1.2 代价函…

详解逻辑回归

目录 1. 逻辑回归模型介绍1.1 Logistic分布1.2 Logistic回归1.3 代价函数1.4 求解1.5 正则化1.5.1 L1正则化1.5.2 L2正则化1.5.3 L1正则化和L2正则化区别 2 与其他模型的对比2.1 与线性回归2.2 与 SVM2.3 与朴素贝叶斯 3. 模型细节3.1 为什么适合离散特征3.2 为什么不用平方误差…