11.19机器学习_逻辑回归

devtools/2024/11/28 0:11:19/

十二 逻辑回归

1.概念

逻辑回归(Logistic Regression)是机器学习中的一种分类模型,逻辑回归是一种分类算法,虽然名字中带有回归,但是它与回归之间有一定的联系。由于算法的简单和高效,在实际中应用非常广泛。

逻辑回归一般用于二分类问题,比如:

是好瓜还是坏瓜

健康还是不健康

可以托付终身还是不可以

2.原理

逻辑回归的输入是线性回归的输出

线性回归: h ( w ) = w 1 x 1 + w 2 x 2 + . . . . + b h(w)=w_1x_1+w_2x_2+....+b h(w)=w1x1+w2x2+....+b

sigmoid激活函数 : f ( x ) = 1 1 + e − x f(x)=\frac{1}{1+e^{-x}} f(x)=1+ex1

sigmoid函数的值是在[0,1]区间中的一个概率值,默认为0.5为阈值可以自己设定,大于0.5认为是正例,小于则认为是负例

把上面的 h ( w ) h(w) h(w) 线性的输出再输入到sigmoid函数当中 f ( w ) = 1 1 + e − h ( w ) f(w)=\frac{1}{1+e^{-h(w)}} f(w)=1+eh(w)1

损失函数:

损失函数图:

当y=1时:

通过损失函数图像,我们知道:

当y=1时,我们希望 h θ ( x ) h\theta(x) hθ(x) 值越大越好

当y=0时,我们希望 h θ ( x ) h\theta(x) hθ(x) 值越小越好

综合0和1的损失函数:

手动算一下下:

然后使用梯度下降算法,去减少损失函数的值,这样去更新逻辑回归前面对应算法的权重参数,提升原本属于1类别的概率,降低原本是0类别的概率.

3.API

逻辑斯蒂

sklearn.linear_model.LogisticRegression()
参数:fit_intercept bool, default=True 指定是否计算截距max_iter int, default=100  最大迭代次数。迭代达到此数目后,即使未收敛也会停止。
模型对象:.coef_ 权重.intercept_ 偏置predict()预测分类predict_proba()预测分类(对应的概率)score()准确率

4.示例

#导包
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
#加载数据
X,y = load_iris(return_X_y=True)
print(y)#二分类 删除第三类
X=X[y!=2]
y=y[y!=2]
print(y)#数据集划分
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.25,random_state=33)
print(X_train.shape,y_train.shape)#逻辑回归模型
model=LogisticRegression()#训练
model.fit(X_train,y_train)#权重
print(model.coef_)#偏置
print(model.intercept_)#预测分类
y_predict=model.predict(X_test)
print(y_predict)
print(y_test)#预测分类对应的概率
proba=model.predict_proba(X_test)
print(proba)#评估
print(model.score(X_test,y_test))

http://www.ppmy.cn/devtools/137523.html

相关文章

C#-利用反射自动绑定请求标志类和具体执行命令类

文章速览 概述例程请求类命名空间父类示例子类示例 命令类命名空间子类示例 记录的数据结构实现绑定方法 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 概述 需求: 将指定的两种类型的…

C++ —— 以真我之名 如飞花般绚丽 - 智能指针

目录 1. RAII和智能指针的设计思路 2. C标准库智能指针的使用 2.1 auto_ptr 2.2 unique_ptr 2.3 简单模拟实现auto_ptr和unique_ptr的核心功能 2.4 shared_ptr 2.4.1 make_shared 2.5 weak_ptr 2.6 shared_ptr的缺陷:循环引用问题 3. shared_ptr 和 unique_…

Vue.Draggable使用nested-with-vmodel进行拖拽

Vue.Draggable使用nested-with-vmodel进行拖拽 1. 介绍 ‌draggable‌是一个基于Sortable.js的Vue组件,用于实现拖拽功能。它支持触摸设备、拖拽和选择文本、智能滚动、不同列表之间的拖拽等功能,并且与Vue的视图模型同步刷新,兼容Vue2的过…

标贝科技大模型声音复刻 快速获取高品质专属AI声音

这两天,科技界发生了一件炸裂的事情——代表科技最高峰的诺贝尔物理学奖,居然颁给了两位人工智能领域的科学家,约翰霍普菲尔德和杰弗里辛顿。他们在机器学习和人工神经网络领域的开创性研究,不仅为现代机器学习奠定了基础&#xf…

TCP IP协议和网络安全

传输层的两个协议: 可靠传输 TCP 分段传输 建立对话(消耗系统资源) 丢失重传netstat -n 不可靠传输 UDP 一个数据包就能表达完整的意思或屏幕广播 应用层协议(默认端口): httpTCP80 网页 ftpTCP21验证用户身…

Unity图形学之BRDF双向反射分布函数

1.描述了入射光线在非透明物体表面如何进行反射,也就是说多少光发生了漫反射,多少光发生了镜面反射 BRDF 函数计算的是“特定反射方向的光强与入射光强的比例” 2.各向异性 与 均向性 相反,是指在不同方向具有不同行为的性质,也就…

Lock锁和AQS之间的关系与区别:基于第一原理的深入分析

引言 在Java并发编程中,锁(Lock)和队列同步器(AbstractQueuedSynchronizer,简称AQS)是两个核心概念。它们为多线程环境下的同步和互斥提供了强大的支持。本文将从第一原理出发,深入探讨Lock锁和…

springboot配置https,并使用wss

学习链接 springboot如何将http转https SpringBoot配置HTTPS及开发调试 Tomcat8.5配置https和SpringBoot配置https 可借鉴的参考: springboot如何配置ssl支持httpsSpringBoot配置HTTPS及开发调试的操作方法springboot实现的https单向认证和双向认证(java生成证…