回归与聚类算法————分类算法-逻辑回归与二分类

目录

1、逻辑回归的应用场景

2、 逻辑回归的原理

2.1 输入

2.2 激活函数

2.3 损失以及优化

2.3.1 损失

2.3.2优化

3、逻辑回归API

4, 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测

5, 分类的评估方法

5.1 混淆矩阵

5.2 精确率(Precision)与召回率(Recall)

5.2.3 分类评估报告API

5.3 ROC曲线与AUC指标

5.3.1 TPR与FPR

5.3.2 ROC曲线

5.3.3 AUC指标

5.3.4 API

5.3.5、总结

1、逻辑回归的应用场景

  • 广告点击率
  • 是否为垃圾邮件
  • 是否患病
  • 金融诈骗
  • 虚假账号

看到上面的例子,我们可以发现其中的特点,那就是都属于两个类别之间的判断。逻辑回归就是解决二分类问题的利器

2、 逻辑回归的原理

2.1 输入

回归与聚类算法————分类算法-逻辑回归与二分类

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

2.2 激活函数

  • sigmoid函数

回归与聚类算法————分类算法-逻辑回归与二分类
  • 线性回归的结果输入到sigmoid函数当中,得到逻辑回归的输出
  • 输出结果:[0, 1]区间中的一个概率值,默认为0.5为阈值

通过设定阈值,将回归任务转化为分类问题

2.3 损失以及优化

对于线性回归模型可以采用 (预测值-真实值)^2/总数来决定。

而逻辑回归模型预测值/真实值为二分类,无法通过上述损失函数

2.3.1 损失

逻辑回归的损失,称之为 对数似然损失,公式如下:

回归与聚类算法————分类算法-逻辑回归与二分类

回归与聚类算法————分类算法-逻辑回归与二分类

由于将损失定义为分段函数,很难用梯度下降去优化,因此采用

回归与聚类算法————分类算法-逻辑回归与二分类

2.3.2优化

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

3、逻辑回归API

from  sklearn.linear_model import LogisticRegression
  • LogisticRegression(solver=’liblinear’, penalty=’l2′, C = 1.0)
  • solver:优化求解方式(默认开源的liblinear库实现,内部使用了坐标轴下降法来迭代优化损失函数)
    • SAG:根据数据集自动选择,随机平均梯度下降
  • penalty:正则化的种类
  • C:正则化力度

LogisticRegression方法相当于 SGDClassifier(loss=”log”, penalty=” “),SGDClassifier实现了一个普通的随机梯度下降学习,也支持平均随机梯度下降法(ASGD),可以通过设置average=True。而使用LogisticRegression(实现了SAG)

4, 案例:癌症分类预测-良/恶性乳腺癌肿瘤预测

原始数据的下载地址:https://archive.ics.uci.edu/ml/machine-learning-databases/

数据描述
(1)699条样本,共11列数据,第一列用语检索的id,后9列分别是与肿瘤
相关的医学特征,最后一列表示肿瘤类型的数值。
(2)包含16个缺失值,用”?”标出。

import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression

def logisticregression():
"""
    逻辑回归进行癌症预测
    :return: None
"""
    # 1、读取数据,处理缺失值以及标准化
    column_name = ['Sample code number', 'Clump Thickness', 'Uniformity of Cell Size', 'Uniformity of Cell Shape',
                   'Marginal Adhesion', 'Single Epithelial Cell Size', 'Bare Nuclei', 'Bland Chromatin',
                   'Normal Nucleoli', 'Mitoses', 'Class']

    data = pd.read_csv("https://archive.ics.uci.edu/ml/machine-learning-databases/breast-cancer-wisconsin/breast-cancer-wisconsin.data",
                       names=column_name)

    # 删除缺失值
    data = data.replace(to_replace='?', value=np.nan)

    data = data.dropna()

    # 取出特征值
    x = data[column_name[1:10]]

    y = data[column_name[10]]

    # 分割数据集
    x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3)

    # 进行标准化
    std = StandardScaler()

    x_train = std.fit_transform(x_train)

    x_test = std.transform(x_test)

    # 使用逻辑回归
    lr = LogisticRegression()

    lr.fit(x_train, y_train)

    print("得出来的权重:", lr.coef_)

    # 预测类别
    print("预测的类别:", lr.predict(x_test))

    # 得出准确率
    print("预测的准确率:", lr.score(x_test, y_test))
    return None
logisticregression()

5, 分类的评估方法

5.1 混淆矩阵

在分类任务下,预测结果(Predicted Condition)与正确标记(True Condition)之间存在四种不同的组合,构成混淆矩阵(适用于多分类)

回归与聚类算法————分类算法-逻辑回归与二分类

5.2 精确率(Precision)与召回率(Recall)

  • 精确率:预测结果为正例的样本中真实结果为正例的比例
  • 召回率:真实结果为正例的样本中预测结果为正例的比例
    回归与聚类算法————分类算法-逻辑回归与二分类

5.2.3 分类评估报告API

from sklearn.metrics import classification_report
  • classification_report (y_true, y_pred, labels=[], target_names=None )
  • y_true:真实目标值
  • y_pred:估计器预测目标值
  • labels:指定类别对应的数字
  • target_names:目标类别名称
  • return:每个类别精确率与召回率
#预付报告
    report=classification_report(y_test,y_predict,labels=[2,4],target_names=["良性","恶性"])
    print(report)

5.3 ROC曲线与AUC指标

5.3.1 TPR与FPR

  • TPR = TP / (TP + FN)—-召回率
  • 所有真实类别为1的样本中,预测类别为1的比例
  • FPR = FP / (FP + FN)
  • 所有真实类别为0的样本中,预测类别为1的比例

5.3.2 ROC曲线

ROC曲线的横轴就是FPRate,纵轴就是TPRate,当二者相等时,表示的意义则是:对于不论真实类别是1还是0的样本,分类器预测为1的概率是相等的,此时AUC为0.5

回归与聚类算法————分类算法-逻辑回归与二分类

5.3.3 AUC指标

ROC曲线下面区域的面积

  • AUC = 1,是完美分类器,采用这个预测模型时,存在至少一个阈值能得出完美预测。但绝大多数预测的场合,不存在完美分类器。
  • 0.5 < AUC < 1,优于随机猜测。这个分类器(模型)妥善设定阈值的话,能有预测价值。
  • AUC = 0.5,跟随机猜测一样(例:丢铜板),模型没有预测价值。
  • AUC < 0.5,比随机猜测还差;但只要总是反向预测而行,就优于随机猜测

5.3.4 API

from sklearn.metrics import roc_auc_score
  • sklearn.metrics.roc_auc_score(y_true, y_score)
  • 计算ROC曲线面积,即AUC值
  • y_true:每个样本的真实类别,必须为0(反例),1(正例)
  • y_score:每个样本预测的概率值

5.3.5、总结

  • AUC只能用来评价二分类
  • AUC非常适合评价样本不平衡中的分类器性能

Original: https://blog.csdn.net/zcolaz/article/details/123637841
Author: 荷泽泽
Title: 回归与聚类算法————分类算法-逻辑回归与二分类

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/631522/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • U-Net介绍

    Unet 发表于 2015 年,属于 FCN 的一种变体。Unet 的初衷是为了解决生物医学图像的问题,由于效果确实很好后来也被广泛的应用在语义分割的各个方向,如卫星图像分割,工业…

    人工智能 2023年7月25日
    0102
  • 8Manage:电子寻源采购管理指南

    如果正确设置寻源采购流程,它可以成为一个强大的战略工具,为你的企业提供竞争优势。本文将带你了解什么是寻源,什么是电子寻源,以及如何为你的独特需求挑选和设置合适的寻源采购管理系统。 …

    人工智能 2023年6月28日
    089
  • GB28181语音对讲

    前段时间,我们国标平台上集成了音频对讲功能,还录了一些坑,方便后人。 [En] Some time ago, the audio intercom function was int…

    人工智能 2023年5月27日
    070
  • 树莓派视觉小车 — 物体跟踪(OpenCV)

    目录 物体跟踪效果展示 过程: 一、初始化 二、运动控制函数 三、舵机角度控制 四、摄像头&&图像处理 1、打开摄像头 2、把图像转换为灰度图 3、 高斯滤波(去噪…

    人工智能 2023年6月22日
    0229
  • 【TVM系列一】开发环境搭建

    文章同步更新在公众号 AIPlayer,欢迎扫码关注,共同进步 目录 一、前言 二、开发环境搭建 1、Anconda安装 2、TVM库源码编译 3、TVM python软件包使用配…

    人工智能 2023年5月26日
    063
  • 30 个 Python 技巧,加速你的数据分析处理速度

    今天给大家分享的是我日常在做数据处理中总结的一些 Python 技巧 文章目录 * – 交流+完整代码 – pandas的下载 – 创建Data…

    人工智能 2023年7月18日
    034
  • 机器学习——时间序列预测方法

    目录 传统时序建模 自回归模型(Autoregressive model,简称AR) 移动平均模型(Moving Average model,简称MA ) 自回归滑动平均模型(Au…

    人工智能 2023年6月15日
    0154
  • SUPERPOINT-SLAM

    error: #error C++14 or later compatible compiler is required to use PyTorch. 4 | #error C+…

    人工智能 2023年7月14日
    069
  • 入门电机系列之4步进电机

    入门电机系列,基于STM32硬件 本文章学习借鉴于野火团队资料,以表感谢。官网http://products.embedfire.com/舵机的原理与应用。 文章目录 入门电机系列…

    人工智能 2023年6月28日
    087
  • 【多智能体感知与协同调度】

    多智能体感知与协同调度 非结构化场景多智能体网联协同感知与动态决策 * 平台 整体实现框架 SLAM建图 hdl 定位 障碍物检测 局部路径规划与路径跟随 上层调度算法 Demo …

    人工智能 2023年6月2日
    068
  • 数据分析之数据可视化

    数据可视化主要借助于图形化手段,清晰有效地传达与沟通信息。通过图表使冗长的数据表达更加形象化,可以把问题的重点有效传递给观者。 一 看懂不同类型的图表 在实现数据可视化之前,我们首…

    人工智能 2023年7月15日
    079
  • 空洞卷积详解

    入门小菜鸟,希望像做笔记记录自己学的东西,也希望能帮助到同样入门的人,更希望大佬们帮忙纠错啦~侵权立删。 目录 一、感受野(知道的可以直接跳) 二、空洞卷积的原理 三、空洞卷积的作…

    人工智能 2023年6月15日
    086
  • python操作neo4j

    Neo4j是图数据库,即数据不是保存在表或集合中,而是保存为节点以及节点之间的关系。Neo4j数据主要由节点、边、属性构成。 在Neo4j中,节点以及边都能够包含保存值的属性1、安…

    人工智能 2023年6月4日
    084
  • 【SpringBoot】一文了解SpringBoot配置高级

    文章目录 * – 前言 – @ConfigurationProperties – + * 使用场景 * 小结 – 宽松绑定/松散绑定…

    人工智能 2023年6月26日
    071
  • 【人工智能】Mindspore框架中保存加载模型

    前言 MindSpore着重提升易用性并降低AI开发者的开发门槛,MindSpore原生适应每个场景包括端、边缘和云,并能够在按需协同的基础上,通过实现AI算法即代码,使开发态变得…

    人工智能 2023年7月28日
    057
  • 数据分析实战 | 双维有序结构提速大数据量用户行为分析

    用户分析(或帐户分析),是指对用户、帐户明细数据进行统计分析计算。常见的有:用户行为分析、银行帐户统计、漏斗转化率、保险单分析等等。 这类场景涉及众多用户的历史数据,总数据量巨大(…

    人工智能 2023年7月15日
    061
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球