当前位置: 首页 > article >正文

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.kler.cn/a/408307.html

相关文章:

  • 4-SpringCloud整合服务间的调用即负载均衡
  • [RabbitMQ] 重试机制+TTL+死信队列
  • C#对INI配置文件进行读写操作方法
  • 维护在线重做日志(一)
  • 2024年亚太地区数学建模大赛A题-复杂场景下水下图像增强技术的研究
  • WebStorm 2024.3/IntelliJ IDEA 2024.3出现elementUI提示未知 HTML 标记、组件引用爆红等问题处理
  • harbor和docker配置https访问
  • Git | 通过Gihub+git组合来学习理解团队项目合作中分支的创建、合并、删除操作
  • 【C语言】指针1
  • 嵌入式开发中Java可以替代Qt吗?
  • LeetCode 1975. Maximum Matrix Sum
  • [Atcoder Beginner Contest 381 D]1122 Substring 题解
  • GWO-SVMD分解 | Matlab实现GWO-SVMD灰狼算法优化逐次变分模态分解
  • Linux应用编程(C语言编译过程)
  • vue2面试题10|[2024-11-24]
  • .NET新知识点笔记
  • 【STM32】GPIO(超详细)
  • 内存分配与回收策略
  • 设计模式——模板模式
  • (二)Sping Boot学习——Sping Boot注意事项
  • 【踩坑日记】【教程】如何在ubuntu服务器上配置公钥登录以及bug解决
  • 分布式数据库中间件可以用在哪些场景呢
  • 【Y20030006】基于php+mysql的课程学习网站的设计与实现(附源码 配置 文档)
  • w055基于web的服装生产管理的设计与实现
  • 【设计模式】如何用C++实现适配器模式
  • Odoo :免费且开源的农牧行业ERP管理系统