码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 机器学习第7天:逻辑回归


    文章目录

    介绍

    概率计算

    逻辑回归的损失函数

    单个实例的成本函数

    整个训练集的成本函数

    鸢尾花数据集上的逻辑回归

    Softmax回归

    Softmax回归数学公式

    Softmax回归损失函数

    调用代码

    参数说明

    结语


    介绍

    作用:使用回归算法进行分类任务

    思想:将回归值转为概率值,然后找到一个适当的数值,当概率大于这个值时,归为一类,当小于这个值时,归为另一类


    概率计算

    p=\sigma (x^{T}w)

    函数的输入值为特征的加权和 x^{T}w

    \sigma是sigmoid函数,公式为

    \sigma(t) =\frac{1}{1+e^{(-t)}}

    函数图像为

    可见它输出一个0-1的值,我们可以将这个值当作概率 

    则我们可以通过这个概率来分类,设定一个值,在这个值的两端进行分类


    逻辑回归的损失函数

    单个实例的成本函数

    当p>=0.5时

    c(w)=-log(p)

    当p<0.5时

    c(w)=-log(1-p)


    整个训练集的成本函数

    J(w)=\frac{1}{m}\sum_{i=1}^{m}[y^{i}log(p^{i})+(1-y^{i})log(1-p^{i})]

    这个损失函数也是一个凸函数,可以使用梯度下降法使损失最小化


    鸢尾花数据集上的逻辑回归

    鸢尾花数据集是机器学习中一个经典的数据集,它有花瓣和花萼的长和宽,任务是用它们来判断鸢尾花的种类

    看代码和效果

    1. from sklearn import datasets
    2. from sklearn.linear_model import LogisticRegression
    3. import matplotlib.pyplot as plt
    4. import numpy as np
    5. iris = datasets.load_iris()
    6. x = iris["data"][:, 3:]
    7. y = (iris["target"] == 2)
    8. model = LogisticRegression()
    9. model.fit(x, y)
    10. x_new = np.linspace(0, 3, 1000).reshape(-1, 1)
    11. y_proba = model.predict_proba(x_new)
    12. plt.plot(x_new, y_proba[:, 1], "g-", label="Iris virginica")
    13. plt.plot(x_new, y_proba[:, 0], "b--", label="Not Iris virginica")
    14. plt.xlabel("Petal width")
    15. plt.ylabel("probability")
    16. plt.legend()
    17. plt.show()

    可以看见,当花瓣长度变化的时候,两种花种类的概率随之变化

    简单介绍一下新的代码,predict.proba方法返回样本为可能的两种花的概率。


    Softmax回归

    上述方法主要用于二分类任务,我们再来看一种多分类方法,Softmax回归


    Softmax回归数学公式

    Softmax(s_{i})=\frac{e^{s_{i}}}{\sum_{j=1}^{n}e^{s_{j}}}

    Softmax函数也叫指数归一化函数,它对x进行指数处理再进行归一化得出一个概率

    这个函数的自变量为一个分数s,这个s由我们的数据的转置矩阵与一个参数相乘得来

    s = x^{T}\theta

    对于不同的类,参数\theta都不相同,模型训练的任务就是拟合这个参数


    Softmax回归损失函数

    L = -\frac{1}{m}\sum_{i=1}^{m}\sum_{K}^{k=1}y_{k}^{i}log(p_{k}^{i})

    当k=2时(二分类),此成本函数等于sigmoid逻辑回归的成本函数


    调用代码

    1. model = LogisticRegression(multi_class="multinomial", solver="lbfgs", C=10)
    2. model.fit(x, y)

    参数说明

    multi_class="multinomial": 表示采用多类别分类,即多类别的逻辑回归问题,与二元逻辑回归不同。

    solver="lbfgs": 表示使用LBFGS(Limited-memory Broyden–Fletcher–Goldfarb–Shanno)优化算法进行求解。

    C=10: 表示正则化参数,控制模型的正则化强度,C值越小,正则化强度越高。


    结语

    逻辑回归是一种简单的分类方法,二分类任务就用第一种方法,多分类任务就用第二种方法

  • 相关阅读:
    c++操作mysql(详解)
    (标签-ar|关键词-if条件)
    第四十七天 | 198.打家劫舍 213.打家劫舍|| 337.打家劫舍|||
    Vue2 router详解
    分库分表真的适合你的系统吗?聊聊分库分表和NewSQL如何选择
    解锁新机遇——易天欧洲ECOC通讯展预告,精彩即将开始!
    从零开始手写mmo游戏从框架到爆炸(二十四)— 装备系统二
    音频类型识别方案-audioset_tagging
    认定科技型中小企业,这些好处一定要知道
    实验18.RIP路由引入
  • 原文地址:https://blog.csdn.net/MuRanstr/article/details/134416104
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号