2.2、logistic回归

article/2025/9/12 5:07:19

一、什么是logistics回归

首先我们先要了解回归的概念,现有一些数据点,我们用 一条直线对这些点进行拟合,该线称为最佳拟合直线,这个拟合过程就称作回归。logistic回归虽然说是回归,但确是为了解决分类问题,是二分类任务的首选方法,简单来说,输出结果不是0就是1。

举个简单的例子:癌症检测——输入病理的图片并且辨别患者是否患有癌症

二、logistics回归和线性回归

线性回归:线性回归是机器学习中比较基本的一个算法。其基本思想大致可以理解为给定一个数据集,通过线性回归得到一条曲线,尽可能地去拟合这个数据集。

logistics回归:逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

对于图二来说,在角落加上一块蓝色点之后,线性回归的线会向下倾斜,参考紫色的线。

logistic回归(参考绿色的线)分类的还是很准确,logistic回归在解决分类问题上还是不错的

三、logistic回归的原理

Sigmoid函数:

Sigmoid函数图像:

 Sigmoid函数的导数为:

 Logistic回归通过Sigmoid函数,输入拟合函数后,将输出值固定在[0,1]区间。所以我们可以将输出值视为概率值。通常情况下,当概率值小于0.5时,输出为0;当时概率值大于0.5时,输出为1:

 

四、logistic回归损失函数

如果logistic回归仍然采用和线性回归一样的代价函数,由于拟合函数的改变,会使最终的代价函数变为非凸的函数,从而无法很好地利用梯度下降法去求解。为此,在logistic回归中,代价函数变成了交叉熵损失函数:

 

 为了简化公式,上述分段函数可以进一步写成:

 于是,针对m个训练集,最终的代价函数为:

接下来的流程就和线性回归一致了,即利用梯度下降,通过多次迭代,最终得到一组合适的参数θ 

 五、项目举例

鸢尾分类

1、LogisticRegression 类

sklearn.linear_model.LogisticRegression (penalty='l2', *, dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='lbfgs', max_iter=100, multi_class='auto', verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

2、案例

import matplotlib.pyplot as plt
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score# 载入数据集,Y的值有0,1,2三种情况,每种特征150个样本
iris = load_iris()
X = iris.data[:, :2]   #获取花卉两列数据集
Y = iris.target# 对数据做一些格式转换
X=pd.DataFrame(X)
Y=pd.DataFrame(Y)
X.columns=["Sepal length","Sepal width"]
Y.columns=["class"]
print(X.head())
print(Y.head())
Y=Y.loc[:,"class"]# 画出散点图,先看一下数据分布情况
setosa = plt.scatter(X.loc[:, "Sepal length"][Y == 0],X.loc[:, "Sepal width"][Y == 0],color='red', marker='o', label='setosa')versicolor = plt.scatter(X.loc[:, "Sepal length"][Y == 1],X.loc[:, "Sepal width"][Y == 1],color='blue', marker='*', label='versicolor')virginica = plt.scatter(X.loc[:, "Sepal length"][Y == 2],X.loc[:, "Sepal width"][Y == 2],color='yellow', marker='x', label='virginica')plt.legend((setosa, versicolor, virginica),('setosa', 'versicolor', 'virginica'))
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")
plt.show()# 建立逻辑回归模型,开始训练
lr = LogisticRegression()
lr = lr.fit(X,Y)# 预测、计算分类准确度
y_pred= lr.predict(X)
print("准确结果")
print(accuracy_score(Y,y_pred))
print("---------------------------------------------")# 打印出预测结果,以及逻辑回归得到的三条分界线的斜率和截距
print("预测结果为:")
print(y_pred)
print("---------------------------------------------")
print("逻辑回归得到的三条分界线的斜率为:")
print(lr.coef_)
print("---------------------------------------------")
print("逻辑回归得到的三条分界线的截距为:")
print(lr.intercept_)#可视化分类结果
# 由函数关系在散点图上绘制出三条边界线,直观的看一下分类效果
# c+a*x1+b*x2=0
fig = plt.figure()
a1 = lr.coef_[0][0]
b1 = lr.coef_[0][1]
c1 = lr.intercept_[0]a2 = lr.coef_[1][0]
b2 = lr.coef_[1][1]
c2 = lr.intercept_[1]a3 = lr.coef_[2][0]
b3 = lr.coef_[2][1]
c3 = lr.intercept_[2]
x = X.loc[:, "Sepal length"]y1 = -(c1 + a1 * x) / b1
y2 = -(c2 + a2 * x) / b2
y3 = -(c3 + a3 * x) / b3
plt.plot(x, y1)
plt.plot(x, y2)
plt.plot(x, y3)setosa = plt.scatter(X.loc[:, "Sepal length"][Y == 0],X.loc[:, "Sepal width"][Y == 0],color='red', marker='o', label='setosa')versicolor = plt.scatter(X.loc[:, "Sepal length"][Y == 1],X.loc[:, "Sepal width"][Y == 1],color='blue', marker='*', label='versicolor')virginica = plt.scatter(X.loc[:, "Sepal length"][Y == 2],X.loc[:, "Sepal width"][Y == 2],color='yellow', marker='x', label='virginica')plt.legend((setosa, versicolor, virginica),('setosa', 'versicolor', 'virginica'))
plt.xlabel("Sepal length")
plt.ylabel("Sepal width")plt.xlim((4, 8))
plt.ylim((2, 4.5))plt.show()


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

相关文章

Logistic Regression(逻辑回归)详细讲解

Logistic Regression(逻辑回归) 以前在学校学到Logistic Regression的时候,虽然最后会使用,但是对于许多地方有很多的疑惑,今天在这里详细梳理一下Logistic Regression的过程: Logistic Regression逻辑回归 回归的思想Logistic R…

第13章Stata Logistic回归分析

目录 13.1二元Logistic回归分析 案例延伸 延伸1:设定模型预测概率得具体值 延伸2:使用Probit模型对二分类因变量进行拟合 13.2多元Logistic回归分析 案例延伸 延伸:根据模型预测每个样本视力低下程度的可能性 13.3有序Logistic回归 …

机器学习笔记-Logistic回归

0 - 回顾 l i n e a r r e g r e s s i o n linear\ regression linear regression如果使用平方错误的话,我们可以很方便的解析出最好的 w w w是什么。即 w b e s t X † y w_{ best}X^{\dagger} y wbest​X†y 1 - 逻辑斯蒂回归问题 1.1 - 问题的提出 从一个人…

logistic回归详解

逻辑斯谛回归(logistic regression)是统计学习中的经典分类方法,虽然带有回归的字眼,但是该模型是一种分类算法,逻辑斯谛回归是一种线性分类器,针对的是线性可分问题。利用logistic回归进行分类的主要思想是…

机器学习笔记(六)Logistic回归

目录 一、什么是Logistics回归 二、sigmoid函数 三、梯度上升法 四、代码实现 数据导入 决策边界 梯度上升 五、总结 一、什么是Logistics回归 logistic回归是一种广义线性回归(generalized linear model),因此与多重线性回归分析有很多相…

【机器学习】Logistic回归(重新整理)

Logistic回归学习笔记 Logistic回归学习线路预备知识:建议先去B站学习一下信息量,熵,BL散度,交叉熵的概念。Logistic回归的函数模型损失函数、损失最小化架构对数损失作为损失函数损失最小化架构 分类函数最大概率分类函数阈值分类…

C语言 fprintf 函数 - C语言零基础入门教程

目录 一.fprintf 函数简介二.fprintf 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fprintf 函数简介 fprintf 是 C / C 中的一个格式化库函数,位于头文件 中,其作用是格式化输出到一个流文件中&#xff1…

【printf函数的具体用法】

一、printf()函数 1、基本输出语句 printf()函数是C语言的输出函数,功能是按指定的输出格式把相应的参数值在标准的输出设备中显示出来。 printf 的格式 printf(格式控制串,参数1,参数2,…),…

C语言printf函数详解

文章目录 1、类型符(type)2、宽度(width)3、对齐标志(flags)4、精度(prec)5、格式化输出到字符串6、版权声明 C语言格式化输出的函数有printf、sprintf和snprintf等,功能…

printf函数讲解

printf函数讲解 #include <stdio.h>/*辗转相除法求最大公约数*/ int gcd(int m, int n); int factrial(int a); int main(void){int m, n, t;scanf_s("%d %d", &m, &n);if (m < n){t m;m n;n t;}//n gcd(m, n);//printf("%d", n);pr…

C语言中fscanf和fprintf函数的使用

目录 一、前言 二、对比 1、scanf和fscanf&#xff1a; 2、printf和fprintf&#xff1a; 三、结论&#xff1a; 四、代码实现 1、fprintf相关代码 2、fscanf代码实现 3、 用fscanf和fprintf实现scanf和printf功能&#xff1a; 一、前言 在了解fscanf和fprintf之前我…

printf()函数详解

感谢博主的分享&#xff1a;https://me.csdn.net/blog/K346K346 1.printf()简介 printf()是C语言标准库函数&#xff0c;用于将格式化后的字符串输出到标准输出。标准输出&#xff0c;即标准输出文件&#xff0c;对应终端的屏幕。printf()申明于头文件stdio.h。 函数原型&am…

有关于fprintf()函数的用法

fprintf&#xff08;简介&#xff09; fprintf是C/C中的一个格式化库函数&#xff0c;位于头文件中&#xff0c;其作用是格式化输出到一个流文件中&#xff1b;函数原型为int fprintf( FILE *stream, const char *format, [ argument ]…)&#xff0c;fprintf()函数根据指定的格…

雷达理论的模糊函数

在雷达理论中&#xff0c;模糊与分辨是两个既有联系又有区别的概念。对多个目标来说&#xff0c;模糊就是不能分辨。雷达的分辨力取决于模糊图中心主瓣的宽度。雷达模糊度不仅考虑主瓣宽度&#xff0c;还考虑模糊图旁瓣的影响。因此&#xff0c;在研究雷达分辨理论之前&#xf…

驱动板LVDS输出接口(发送器),液晶面板LVDS输入接口(接收器)

1&#xff0e;LVDS输出接口概述 液晶显示器驱动板输出的数字信号中&#xff0c;除了包括RGB数据信号外&#xff0c;还包括行同步、场同步、像素时钟等信号&#xff0c;其中像素时钟信号的最高频率可超过28MHz。采用TTL接口&#xff0c;数据传输速率不高&#xff0c;传输距离较短…

两种LVDS数传接口--车载视频传输

本文介绍两种LVDS数传接口&#xff1a;GMSL和FPD Link&#xff0c;这两种接口在汽车视频传输方面的应用是比较广泛的&#xff0c;尤其是Camera和处理器之间的链路&#xff0c;通过STP或者同轴电缆能使整个链路达到15m。 1、FPD Link Flat Panel Display Link(FPD Link)最早是…

LVDS接口分类与数据格式

转发路径&#xff1a;https://blog.csdn.net/a617996505/article/details/82386952 1.LVDS接口分类与数据格式 单路6it LVDS 这种接口电路中&#xff0c;采用单路方式传输&#xff0c;每个基色信号采用6位数据&#xff0c;共18位RGB数据&#xff0c;因此&#xff0c;也称18位…

Xilinx fpga实现LVDS高速ADC接口

LVDS 即Low-Voltage Differential Signaling。FPGA的selecteIO非常强大&#xff0c;支持各种IO接口标准&#xff0c;电压电流都可以配置。其接口速率可以达到几百M甚至上千M。使用lvds来接收高速ADC产生的数据会很方便。像ISERDES&#xff0c;IDDR&#xff0c;IDELAY&#xff0…

LVDS接口和接口电路概述

1、LVDS接口概述 LVDS&#xff0c;即Low Voltage Differential Signaling&#xff0c;是一种低压差分信号技术接口。克服以TTL电平方式传输宽带高码率数据时功耗大、EMI电磁干扰大等缺点而研制的一种数字视频信号传输方式。LVDS输出接口利用非常低的电压摆幅&#xff08;约350m…

常见视频高速接口分析MIPI,LVDS,RGB,HDMI

文章目录 一、RGB接口二、LVDS接口三、MIPI接口四、HDMI接口 一、RGB接口 &#xff08;1&#xff09;接口定义 RGB颜色是工业界的一种颜色标准&#xff0c;是通过对红、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的&#xff0c;RGB即是代表红…