机器学习(四) ----------逻辑回归

目录

1 概述

2 极大似然估计

3 逻辑回归核心思想

3.1 对数似然损失(Log-likelihood Loss)

4 分类问题的评估方法

4.1 混淆矩阵(Confusion Matrix):

4.2 准确率(Accuracy)

4.3 精确率(Precision)和召回率(Recall)

4.3.1 精确率(Precision)

4.3.2召回率(Recall)

4.3.3 精确率和召回率的关系

4.4 ROC曲线(Receiver Operating Characteristic Curve)和AUC(Area Under the Curve)

4.4.1 ROC曲线描述

4.4.2 ROC 曲线图像中,4 个特殊点的含义

4.4.3 AUC(Area Under the Curve)

4.4.4 API

4.5 F1-score

5 逻辑回归API

6 案例



1 概述

逻辑回归(Logistic Regression)是一种广泛应用于分类问题的统计学习方法,尤其在二元分类问题上表现出色。

逻辑回归通过构建一个逻辑函数(也称为Sigmoid函数),将线性模型的输出转化为一个介于0和1之间的概率值,这个概率值表示了给定样本属于某个类别的可能性。这使得逻辑回归非常适合用于分类预测任务,例如预测用户是否会购买某商品、病人是否患有某种疾病或广告是否会被用户点击等。

逻辑回归的优点之一是其解释性强。通过查看逻辑回归模型的系数,可以了解不同特征对分类结果的影响程度。这使得逻辑回归不仅可以提供分类预测,还可以用于特征选择,帮助识别出对分类结果有显著影响的特征。

此外,逻辑回归还具有计算效率高、易于实现的特点。这使得它适用于大规模数据集和实时预测场景。在经济学、商业、医疗等领域,逻辑回归被广泛应用于预测分析、风险评估和决策支持等方面。

逻辑回归虽然主要用于二元分类问题,但也可以通过一些策略(如一对多、一对一等)扩展到多分类问题中。同时,逻辑回归还可以处理线性和非线性数据,并可以通过特征转换或使用非线性模型来处理非线性关系的数据。

2 极大似然估计

极大似然估计(Maximum Likelihood Estimate,MLE),也称为最大概似估计或最大似然估计,是一种求估计的统计学方法。它的核心思想是在一次抽样中,样本出现的概率是关于某个参数θ的函数。当给定一组观测值x1,x2,...,xn时,极大似然估计法会选择参数θ的一个估计值,使得当θ等于这个估计值时,样本出现的概率达到最大。

极大似然估计的原理建立在极大似然原理之上,即如果某一事件在多次重复试验中出现的概率最大,则可以认为该事件最有可能发生。例如,在两个箱子中抽取黑球的问题中,如果从一个箱子中抽取黑球的概率远大于从另一个箱子中抽取的概率,那么可以认为这个黑球更可能来自第一个箱子。

极大似然估计的具体求解步骤通常包括:

  1. 写出似然函数,即样本观测值的联合概率密度函数或概率质量函数。
  2. 对似然函数取对数,并整理得到对数似然函数。
  3. 对对数似然函数求导数,并令其等于零,解出参数θ的极大似然估计值。

极大似然估计方法具有广泛的应用,尤其在参数估计和统计推断领域。它不仅可以用于离散型随机变量,也可以用于连续型随机变量。同时,极大似然估计方法还具有一些重要的性质,如一致性、渐进正态性、渐进有效性等。

3 逻辑回归核心思想

逻辑回归的核心思想是利用线性回归模型(虽然名为“回归”,但逻辑回归实际上是一种分类算法)的预测结果,通过Sigmoid函数将其转化为概率值,从而进行分类。

3.1 对数似然损失(Log-likelihood Loss)

对数似然损失通过惩罚错误的分类,实现对分类器的准确度的量化。为了计算对数损失,分类器必须提供对输入的每个类别的概率值,而不仅仅是最可能的类别。在二分类问题中,预测值(模型的输出)和实际标签(真实值)都是二元的,通常取值为0或1。对于每个样本,对数似然损失函数会计算预测概率的对数值与实际标签的差值,然后取负值(因为对数函数在0到1之间是负的)。

公式:

Loss\left ( L \right ) = -\sum_{i=1}^{n}\left (y_i ln\left ( p_i \right ) +(1-y_i)ln(1-p_i) \right )

p_i = \frac{1}{1+e^{-(w^T+b)}}

1.p i 表示每个样本被分类正确时的概率
2.y i 表示每个样本的真实类别(0或1)

4 分类问题的评估方法

分类问题的评估方法多种多样,每种方法都有其特定的应用场景和优点。以下是一些常用的评估方法及对应的API(以Python的scikit-learn库为例):

4.1 混淆矩阵(Confusion Matrix)

混淆矩阵(Confusion Matrix)是分类问题中常用的一种评估工具,主要用于衡量分类器(或模型)的分类性能。混淆矩阵以表格的形式记录了分类器对样本的实际分类和预测分类之间的信息,通过它可以清晰地了解分类器在各类别上的表现。

混淆矩阵的每一行代表一个实际类别,每一列代表一个预测类别。对于二分类问题,混淆矩阵通常包含四个元素:

  • 真正例(True Positives, TP):实际为正例,预测也为正例的样本数。
  • 假正例(False Positives, FP):实际为负例,预测为正例的样本数(误报)。
  • 真反例(True Negatives, TN):实际为负例,预测也为负例的样本数。
  • 假反例(False Negatives, FN):实际为正例,预测为负例的样本数(漏报)。

对于多分类问题,混淆矩阵会扩展到更多的行和列,以涵盖所有可能的类别组合。

API:sklearn.metrics.confusion_matrix(y_true, y_pred)

4.2 准确率(Accuracy)

  • 定义:分类正确的样本数占总样本数的比例。
  • API:sklearn.metrics.accuracy_score(y_true, y_pred)

4.3 精确率(Precision)召回率(Recall)

4.3.1 精确率(Precision)

精确率定义为真正例(True Positives, TP)占所有被预测为正例(包括真正例TP和假正例FP)的样本的比例。计算公式为:

[ \text{Precision} = \frac{\text{TP}}{\text{TP} + \text{FP}} ]

精确率越高,说明分类器预测为正例的样本中真正为正例的比例越高,也就是预测为正例的可靠性越高。

API:sklearn.metrics.precision_score(y_true, y_pred) 

4.3.2召回率(Recall)

召回率定义为真正例(True Positives, TP)占所有真正例(包括真正例TP和假反例FN)的样本的比例。计算公式为:

[ \text{Recall} = \frac{\text{TP}}{\text{TP} + \text{FN}} ]

召回率越高,说明分类器找出所有真正例的能力越强,也就是对正例的覆盖能力越强。

API: sklearn.metrics.recall_score(y_true, y_pred)

4.3.3 精确率和召回率的关系

精确率和召回率是一对矛盾的指标。提高精确率可能会导致召回率下降,因为分类器可能变得更为谨慎,只将那些非常确信为正例的样本预测为正例;而提高召回率可能会导致精确率下降,因为分类器可能变得更为宽松,将更多的样本预测为正例,其中也包括了更多的误报。

在实际应用中,需要根据具体的需求和场景来平衡这两个指标。例如,在垃圾邮件过滤系统中,可能更关注精确率,以避免误将正常邮件标记为垃圾邮件;而在医疗诊断中,可能更关注召回率,以尽量不遗漏任何可能的病患。

4.4 ROC曲线(Receiver Operating Characteristic Curve)和AUC(Area Under the Curve)

4.4.1 ROC曲线描述

ROC曲线(Receiver Operating Characteristic Curve)又称受试者工作特征曲线,是通过改变二分类器的判定阈值,绘制出不同阈值下真正例率(True Positive Rate, TPR)与假正例率(False Positive Rate, FPR)的关系曲线。其中,TPR是指正确分类为正例的样本占所有正例样本的比例FPR是指错误分类为正例的样本占所有负例样本的比例

ROC曲线的横坐标为FPR,纵坐标为TPR,因此ROC曲线可以用一个二维平面上的点序列来表示,点的个数取决于分类器所取的阈值数目。ROC曲线能够反映分类算法在不同阈值下的性能表现。

4.4.2 ROC 曲线图像中,4 个特殊点的含义

点坐标说明:图像x轴FPR/y轴TPR, 任意一点坐标A(FPR值, TPR值)
        1.点(0, 0) :所有的负样本都预测正确,所有的正样本都预测为错误 。相当于点的(FPR值0, TPR值0)
        2.点(1, 0) :所有的负样本都预测错误,所有的正样本都预测错误。相当于点的(FPR值1, TPR值0)
        3.点(1, 1):所有的负样本都预测错误,表示所有的正样本都预测正确。相当于点的(FPR值1,TPR值1)
        4.点(0, 1):所有的负样本都预测正确,表示所有的正样本都预测正确 。相当于点的(FPR值0,TPR值1)
曲线越靠近 (0,1) 点则模型对正负样本的辨别能力就越强

4.4.3 AUC(Area Under the Curve)

AUC(Area Under the Curve)被定义为ROC曲线下与坐标轴围成的面积,其值范围在0到1之间。AUC越接近1.0,表示分类算法的性能越好;等于0.5时,则性能最低,无应用价值。AUC值常被用作评价模型优劣的一种性能指标,尤其是在ROC曲线不能清晰区分不同分类器性能时,AUC值的大小能更直接地反映模型的性能。

4.4.4 API

API:sklearn.metrics.roc_curve(y_true, y_score) 和 sklearn.metrics.roc_auc_score(y_true, y_score)

注意,在使用这些API时,y_true通常是真实的标签,y_pred是分类器预测的标签(对于精确率、召回率和F1 Score),而y_score是分类器为每个样本分配的概率或置信度分数(对于ROC曲线和AUC)。

4.5 F1-score

F1-score(也称为F1分数或F-measure)是统计学中用来衡量二分类模型精确度的一种指标,它同时考虑了分类模型的精确率(Precision)和召回率(Recall)。F1-score可以看作是精确率和召回率的调和平均数,用于平衡这两个指标,其计算公式为:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

F1-score的最大值为1,表示模型在精确率和召回率上都达到了最优;最小值为0,表示模型性能最差。当精确率和召回率接近时,F1-score会较高,说明模型在正负样本上的表现都相对较好。

F1-score在二进制分类问题中具有广泛的应用场景,例如垃圾邮件过滤、欺诈检测、疾病诊断等。在这些场景下,精确率和召回率的平衡非常重要,因为过高的精确率可能会导致召回率过低,从而漏掉一些重要的正例;而过高的召回率可能会导致精确率过低,从而引入过多的误报。

API:sklearn.metrics.f1_score(y_true, y_score)

此外,sklearn.metrics还提供了许多其他有用的分类评估方法,如classification_report(可以显示每个类别的精确率、召回率、F1 Score和支持数)和matthews_corrcoef(用于计算Matthews相关系数,一种衡量二分类问题的平衡度量)等。你可以根据自己的需求选择适合的评估方法。

5 逻辑回归API

sklearn.linear_model.LogisticRegression()

6 案例

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# 1.导入数据
cancer_data = pd.read_csv('data/breast-cancer-wisconsin.csv')

# 2.数据基本处理
# 2.1 缺失值处理
cancer_data = cancer_data.replace(to_replace='?',value=np.NAN)
cancer_data = cancer_data.dropna()
# 2.2 数据集划分
x_train,x_test,y_train,y_test = train_test_split(cancer_data.iloc[:,1:-1],cancer_data.iloc[:,-1],train_size=0.8,random_state=22)


# 3.特征预处理
transfor = StandardScaler()
x_train = transfor.fit_transform(x_train)
x_test = transfor.transform(x_test)


# 4。模型训练
lg = LogisticRegression()
lg.fit(x_train,y_train)

# 5.模型评估
print(lg.score(x_test, y_test))


# 6.模型预测
print(lg.predict(x_test))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/616173.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis-配置文件详解

Redis配置文件详解 units单位 配置大小单位,开头定义基本度量单位,只支持bytes,大小写不敏感。 INCLUDES Redis只有一个配置文件,如果多个人进行开发维护,那么就需要多个这样的配置文件,这时候多个配置 文…

kali搭建Vulhub靶场

简单概述 Vulhub是一个面向大众的开源漏洞靶场,借助Docker简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。旨在让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身。 Docker是一个开源的容器引擎,它有助于更快地交付应用…

20.接口自动化-Git

1、Git和SVN–版本控制系统 远程服务出问题后,可以先提交commit到本地仓库,之后再提交push远程仓库 git有clone Git环境组成部分 常用Git代码仓库服务-远程仓库 GitHub-服务器在国外,慢 GitLab-开源,可以在自己服务器搭建&…

NASA数据集——2002-2011年全球18.7 至 89.0 千兆赫的亮度温度、海冰浓度和海冰积雪深度三级网格产品(AE_SI12)数据

AMSR-E/Aqua Daily L3 12.5 km Brightness Temperature, Sea Ice Concentration, & Snow Depth Polar Grids V003 三级网格产品(AE_SI12)包括 18.7 至 89.0 千兆赫的亮度温度、海冰浓度和海冰积雪深度。 简介 美国国家航空航天局地球观测系统 Aqu…

STM32睡眠模式

文章目录 前言PWR介绍电源框图上电复位和掉电复位可编程电压检测器低功耗模式模式选择电源控制寄存器 睡眠模式停止模式待机模式 前言 在单片机产品中,例如遥控这类产品,长时间处于待机状态下,所以对于这类产品在待机时就应该尽可能的减少不…

STM32入门_江协科技_5~6_OB记录的自学笔记_GPIO输出_LED流水灯_蜂鸣器

5. GPIO 输出 5.1. GPIO简介 GPIO(General Purpose Input Output)通用输入输出口可配置为8种输入输出模式引脚电平:0V~3.3V,部分引脚可容忍5V(端口输入5V的电压,之前引脚定义表格中带FT标识的&#xff09…

python视频转码脚本

今天有一个临时的需求,就是需要将一个wmv的初步转码成mp4的格式。找了一圈,免费的工具少,即使有免费的工具,在功能上也是有所限制,或者会给你塞广告或者附带安装其它流氓小游戏或者杀毒程序。 我并非不支持正版&#…

vue 点击平滑到指定位置并绑定页面滑动效果

1.html元素 写出对应的数据块&#xff08;注意添加ref) 用于获取元素位置 <template><div class"index-page" ><div class"top-head" ref"index"><img src"logo.png" style"height: 40px;margin-right: 2…

《解锁数字化劳动合同签约:构建高效的电子合同签约平台》

随着数字化转型的推进&#xff0c;传统的纸质劳动合同签约方式已经无法满足现代企业对于效率和便捷性的需求。电子劳动合同签约平台应运而生&#xff0c;为企业和员工提供了一种更加高效、便捷的合同签署方式。本文将介绍电子劳动合同签约平台的业务架构&#xff0c;探讨其如何…

地图涟漪效果

参考API echarts图表集 useEcharts.js import { onBeforeUnmount, onDeactivated } from "vue"; // import * as echarts from "echarts";/*** description 使用 Echarts (只是为了添加图表响应式)* param {Element} myChart Echarts实例 (必传)* param …

python代码学习案例-用turtle库绘制爱心图形效果

Python爱心代码&#xff0c;我们可以使用多种方法&#xff0c;包括使用turtle库来绘制图形&#xff0c;或者使用字符打印来在控制台中显示爱心。 首先&#xff0c;确保你已经安装了Python&#xff0c;并且你的环境支持turtle库&#xff08;它通常是Python标准库的一部分&#…

Coursera吴恩达深度学习专项课程01: Neural Networks and Deep Learning 学习笔记 Week 01

Week 01 of Neural Networks and Deep Learning Course Certificate 本文是学习 https://www.coursera.org/learn/neural-networks-deep-learning 这门课的笔记 Course Intro 文章目录 Week 01 of Neural Networks and Deep Learning[0] Welcome to the Deep Learning Spec…

Ansible常用变量【上】

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 在Ansible中会用到很多的变量&#xff0c;Ansible常用变量包括以下几种&#xff1a; 1. 自定义变量——在playbook中用户自定义…

基于遗传优化的双BP神经网络金融序列预测算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 5.完整程序 1.程序功能描述 基于遗传优化的双BP神经网络金融序列预测算法matlab仿真&#xff0c;采用的双BP神经网络结构如下&#xff1a; 2.测试软件版本以及运行结果展示 MATLAB2022A版本…

用户登录后端:登录密码解密后用PasswordEncoder验证密码是否正确

前置知识: 前端登录加密看用户登录 PasswordEncoder加密看PasswordEncoder详解 项目中因为要判断用户登录密码是否正确&#xff0c;通过输入错误次数锁住用户 1.后端配置rsa私钥 #密码加密传输&#xff0c;前端公钥加密&#xff0c;后端私钥解密 rsa:private_key: xxxx2. 读…

HCIP_BGP综合实验

一&#xff1a;实验拓扑&#xff1a; 二&#xff1a;实验要求&#xff1a; 1、AS1中存在两个环回&#xff0c;一个地址为192.168.1.0/24&#xff0c;该地址不能在任何协议中宣告; AS3中存在两个环回一个地址为192.168.2.0/24&#xff0c;该地址不能在任何协议中宣告&am…

JAVA课程设计

一&#xff1a;Java连接mysql数据库 1.1点击进入mysql jar包下载官网 MySQL :: MySQL Community Downloads 将下载好的压缩包进行解压 解压之后下图就是连接数据库所用到的jar包&#xff1a; 将jar包复制到IDEA所用的项目下&#xff0c;放置jar包的目录为lib&#xff0c;需要…

医院如何做好漏费管理?什么是控费系统?控费系统现在成熟吗?

在中国深厚的人情土壤之中&#xff0c;某些医院里的医技科室&#xff0c;宛如隐秘的灰色地带&#xff0c;悄然滋生着利用职务之便谋取私利的暗流。这些科室的医务人员&#xff0c;以低于医院明文规定的收费标准&#xff0c;私下里为熟识的患者提供检查服务&#xff0c;仿佛形成…

IM是什么意思?

IM&#xff08;即时通讯&#xff09;作为现代通讯领域的重要且普遍应用&#xff0c;已成为人们日常生活和工作中不可或缺的通信方式。随着科技的不断发展和互联网的普及&#xff0c;IM工具通过实时信息传递&#xff0c;将沟通变得更加迅速、便捷、高效。 IM的诞生极大地改变了…

探索全画面塑料焊接透光率检测仪的科技魅力

在精密工业和科研领域中&#xff0c;对材料的光学性能有着严格的要求。全画面塑料焊接透光率检测仪是一种先进的设备&#xff0c;它能够精确测量塑料焊接接头的透光率&#xff0c;确保焊接质量符合高标准。本文将详细介绍这一设备的特点、工作原理以及它在实际应用中的重要性。…