AI-逻辑回归模型

😆😆😆感谢大家的支持~😆😆😆

逻辑回归的应用场景

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

  • 广告点击率,预测用户是否会点击某个广告,是典型的二分类问题。逻辑回归可以根据用户的特征(如年龄、性别、浏览历史等)来预测点击概率。
  • 是否为垃圾邮件,电子邮件服务提供商使用逻辑回归来判断邮件是否为垃圾邮件,根据邮件内容特征和发送者信息来进行分类。
  • 是否患病,在医疗领域,逻辑回归可以帮助预测患者是否有发病的风险,例如基于患者的各种生理指标来预测糖尿病或冠心病的风险。
  • 信用卡账单是否会违约,金融机构利用逻辑回归模型来评估信用卡用户是否存在违约风险,这通常涉及对用户的信用历史、交易行为等进行分析。

逻辑回归是一种用于分类问题的统计模型,特别是适合于处理二分类问题。

逻辑回归的输入🥰

逻辑回归模型的核心在于它使用了一个线性方程作为输入,这个线性方程通常称为logit函数。具体来说,逻辑回归模型首先通过一个线性方程对输入特征进行加权求和,然后使用Sigmoid函数将这个线性方程的结果映射到(0,1)区间内,从而得到一个概率值。这个过程可以用以下数学公式表示:

[ P(y=1|x) = \frac{1}{1 + e^{-(\beta_0 + \beta_1x_1 + \ldots + \beta_nx_n)}} ]

激活函数 

Sigmoid函数的数学表达式通常写为 ( sigma(x) = \frac{1}{1 + e^{-x}} ),其中 ( x ) 是输入变量。

  • 回归的结果输入到sigmoid函数当中

逻辑回归的损失,称之为 对数似然损失 

在逻辑回归中,损失函数是用来度量预测值与真实值之间的差异的。具体来说,逻辑回归通常使用的损失函数是交叉熵(Cross Entropy),这是一种衡量两个概率分布之间差异的函数。交叉熵损失函数可以写成以下形式:

[ L(y, p) = -frac{1}{N} \sum_{i=1}^{N} [y_i \log(p_i) + (1 - y_i) \log(1 - p_i)] ]

其中,( y_i ) 是样本的真实标签(0或1),( p_i ) 是模型预测该样本为正例的概率,N是样本数量。这个损失函数的目的是使得模型输出的概率尽可能接近真实标签。当模型预测的概率与真实标签一致时,损失函数的值会很小;反之,如果预测的概率与真实标签相差较大,则损失函数的值会比较大。

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

from sklearn.linear_model import SGDRegressor# 创建SGDRegressor实例
estimator = SGDRegressor(max_iter=1000)# 使用训练数据拟合模型
estimator.fit(x_train, y_train)

 案例🤔

 sklearn.linear_model.LogisticRegression(solver='liblinear', penalty=‘l2’, C = 1.0)

💎l2作为正则化项(惩罚项),以及C=1.0作为正则化强度的倒数。 

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 LogisticRegressionnames = ['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("wisconsin.data")
data.head()x = data.iloc[:, 1:10]
x.head()
y = data["Class"]
y.head()x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=22)transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)estimator = LogisticRegression()
estimator.fit(x_train, y_train)y_predict = estimator.predict(x_test)
y_predict
estimator.score(x_test, y_test)

分类评估指标

ROC曲线(Receiver Operating Characteristic Curve):ROC曲线描绘了不同阈值下的真正例率和假正例率,用于评估模型在不同阈值下的表现。在机器学习领域,ROC曲线和AUC指标广泛应用于模型选择和性能评估。

💎ROC曲线,全称为接收者操作特征曲线(Receiver Operating Characteristic Curve),是一种用于评估二分类模型性能的图形化工具。它以假正率(False Positive Rate, FPR)为横轴,真正率(True Positive Rate, TPR)为纵轴绘制而成。ROC曲线上每个点反映了在不同判定阈值下,模型对正类和负类样本分类的能力。通过观察ROC曲线,我们可以直观地了解分类器在不同阈值下的性能表现。

💎AUC(Area Under Curve)则是ROC曲线下的面积,用于量化地衡量模型的整体分类性能。AUC的取值范围在0.5到1之间,其中0.5表示模型没有区分能力,而1表示模型具有完美的分类能力。AUC越大,说明模型在区分正负样本上的表现越好。在实际应用中,一个AUC值接近1的模型通常被认为具有较高的预测准确性和可靠性。

  1. 正样本中被预测为正样本的概率,即:TPR (True Positive Rate)
  2. 负样本中被预测为正样本的概率,即:FPR (False Positive Rate)

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

  1. (0, 0) 表示所有的正样本都预测为错误,所有的负样本都预测正确
  2. (1, 0) 表示所有的正样本都预测错误,所有的负样本都预测错误
  3. (1, 1) 表示所有的正样本都预测正确,所有的负样本都预测错误
  4. (0, 1) 表示所有的正样本都预测正确,所有的负样本都预测正确

绘制 ROC 曲线

在网页某个位置有一个广告图片或者文字,该广告共被展示了 6 次,有 2 次被浏览者点击了。

 

绘制 ROC 曲线:

阈值:0.9

  1. 原本为正例的 1、3 号的样本中 3 号样本被分类错误,则 TPR = ½ = 0.5
  2. 原本为负例的 2、4、5、6 号样本没有一个被分为正例,则 FPR = 0

阈值:0.8

  1. 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
  2. 原本为负例的 2、4、5、6 号样本没有一个被分为正例,则 FPR = 0

 阈值:0.7

  1. 原本为正例的 1、3 号样本被分类正确,则 TPR = 2/2 = 1
  2. 原本为负类的 2、4、5、6 号样本中 2 号样本被分类错误,则 FPR = ¼ = 0.25

 

💎 图像越靠近 (0,1) 点则模型对正负样本的辨别能力就越强且图像越靠近 (0, 1) 点则 ROC 曲线下面的面积就会越大。

  1. 当 AUC= 1 时,该模型被认为是完美的分类器,但是几乎不存在完美分类器

案例 

y=churn['flag']
x=churn[['contract_month','internet_other','streamingtv']]from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.3,random_state=100)from sklearn import linear_model
lr=linear_model.LogisticRegression()
lr.fit(x_train,y_train)y_pred_train=lr.predict(x_train)
y_pred_test=lr.predict(x_test)
import sklearn.metrics as metrics
metrics.accuracy_score(y_train,y_pred_train)
from sklearn.metrics import roc_auc_score
roc_auc_score(y_test, y_pred_test)    # 网格搜索参数
from sklearn.model_selection import StratifiedKFold
from sklearn.model_selection import GridSearchCV
kfold = StratifiedKFold(n_splits=5, shuffle=True)
lr = linear_model.LogisticRegression()
param_grid = {'solver': ['newton-cg', 'lbfgs', 'liblinear'],'C': [0.001, 0.01, 1, 10, 100],'class_weight':['balanced']}
search = GridSearchCV(lr, param_grid, cv=kfold)
lr = search.fit(x_train, y_train)

LogisticRegression(class_weight='balanced')参数的作用是在拟合模型时自动调整类别权重,以帮助处理不平衡的数据集。当使用class_weight='balanced'时,Scikit-learn的LogisticRegression会在计算损失函数时自动为每个类分配权重,使得较少出现的类别(少数类)获得更高的权重,以此来平衡各类别之间的样本数量差异。这样做有助于改善模型对少数类的识别能力,特别是在数据集中某些类的样本数量远少于其他类时,这种权重调整可以防止模型偏向于多数类。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09-设计模式 企业场景 面试题

目录 1.简单工厂模式 ​编辑 2.工厂方法模式 3.抽象工厂模式 4.策略模式 5.登录案例(工厂模式+策略模式) 6.责任链设计模式 7.单点登录怎么是实现的? 8.权限认证是如何实现的 9.上传数据的安全性你们怎么控制? 10.你负责项目的时候遇到了哪些比较棘手的问题?怎…

《天软行业全景画像》报告第7期

内容概要: 传媒、环保、美容护理行业的拥挤度较高,实际投资交易应注意;煤炭行业动量较强,医药生物、综合、环保行业动量较弱,业绩整体表现较差;食品饮料、公用事业行业景气度较高,财务基本面状况…

MySQL的索引下推

一、什么事索引下推 MySQL的索引下推(Index Condition Pushdown, ICP)是一种优化查询的方式,它可以改善查询性能,特别是对于包含多个条件的查询。在没有索引下推的情况下,MySQL会先从索引中找到满足某一条件的行的指针…

unity-unity2d tilemap的基本使用笔记0.5.4000

unity2d tilemap的基本使用笔记 tilemap涉及到元素tile资源的处理步骤如何创建palette并使用如何科学让场景的物体都显示palette视图中的edit按钮在tilemap的实际操作技巧(如何实现层叠)如何提高Tilemap Collider 2D的性能如何调整tilemap的颜色如何调整一个tile的颜色关于Co…

【黑马程序员】Python文件、异常、模块、包

文章目录 文件操作文件编码什么是编码为什么要使用编码 文件的读取openmodel常用的三种基础访问模式读操作相关方法 文件的写入注意代码示例 异常定义异常捕获捕获指定异常捕获多个异常捕获所有异常异常else异常finally 异常的传递 python 模块定义模块的导入import模块名from …

Chroma向量数据库报错Delete of nonexisting embedding ID: 123-sql

Vanna使用ChromaDB_VectorStore时,删除训练数据,指定错误的id后,导致的错误Delete of nonexisting embedding ID: 123-sql 使用delete函数后,经常会出现如下错误,暂未修复,但是不妨碍使用: De…

基于Python的pygame库的五子棋游戏

安装pygame pip install pygame五子棋游戏代码 """五子棋之人机对战"""import sys import random import pygame from pygame.locals import * import pygame.gfxdraw from collections import namedtupleChessman namedtuple(Chessman, Name…

python 基础知识点(蓝桥杯python科目个人复习计划63)

今日复习内容:做题 例题1:蓝桥骑士 问题描述: 小蓝是蓝桥王国的骑士,他喜欢不断突破自我。 这天蓝桥国王给他安排了N个对手,他们的战力值分别为a1,a2,...,an,且按顺序阻挡在小蓝的前方。对于这些对手小…

【LeetCode】动态规划--题目练习

有关动态规划算法的整理&#xff1a;添加链接描述 1.爬楼梯 爬楼梯:LeetCode70 int climbStairs(int n) {//1.确定dp数组和意义 dp[n]表示第n阶的方法//2.确定递推关系式 dp[n] dp[n-1]dp[n-2];//3.初始化int dp[50] {0};dp[1] 1;dp[2] 2;for(int i 3;i<n;i){dp[i] …

C++核心高级编程

文章目录 C++核心高级编程1.内存分区模型1.1 程序运行前1.2 程序运行后1.3 new操作符2.引用2.1 使用2.2 注意事项2.3 做函数参数2.4 做函数返回值2.5 本质2.6 常量引用3.函数提高3.1 函数默认参数3.2 函数占位参数3.3 函数重载3.3.1 函数重载概述3.3.2 注意事项4.类和对象4.1 封…

注意力机制Attention、CA注意力机制

一、注意力机制 产生背景&#xff1a; 大数据时代&#xff0c;有很多数据提供给我们。对于人来说&#xff0c;可以利用重要的数据&#xff0c;过滤掉不重要的数据。那对于模型来说&#xff08;CNN、LSTM&#xff09;&#xff0c;很难决定什么重要、什么不重要&#xff0c;因此…

GRPC服务端和客户端DEMO

proto文件 syntax "proto3";option java_multiple_files true; //指定该proto文件编译成的java源文件的包名 option java_package "com.protobuf"; // 表示下面的message编译成的java类文件的名字 option java_outer_classname "HelloProto"…

vue3+ts动态表单渲染,antd的useForm改造

let fieldList: any getFormFields(fieldInfo.coreNavigationList[0].list[0].list,fieldInfo.positionCodeRespVO,isCanBeUpdateProcess.value,isDetail.value 1); fieldInfo数据格式&#xff1a; {"name": "默认模板","status": "ENA…

Holoens2 发布 错误 DEP6957: 未能使用“通用身份验证”连接到设备“127.0.0.1”

DEP6957: Failed to connect to device 127.0.0.1 using Universal Authentication. Please verify the 解决时看到有人说是usb线没连好&#xff0c;重新连了一下就好了。确定在电脑上能看到hololens设备 错误 DEP6957: 未能使用“通用身份验证”连接到设备“127.0.0.1”_holo…

1688跨境无货源铺货API上货API跨境电商无货源对接

1688 API 接入说明 点此获取API地址 调用示例&#xff1a; 参数说明 通用参数说明 version:API版本key:调用key,测试key:test_api_keyapi_name:API类型[item_get,item_search]cache:[yes,no]默认yes&#xff0c;将调用缓存的数据&#xff0c;速度比较快result_type:[json,xml…

day-20 跳跃游戏 II

思路&#xff1a;用一个数字来存储到对应索引i的最少跳跃次数&#xff0c;ans[j]Math.min(ans[j],ans[i]1) code: class Solution {public int jump(int[] nums) {int nnums.length;int ans[]new int[n];for(int i0;i<n;i){ans[i]Integer.MAX_VALUE;}ans[0]0;for(int i0;i…

从VUCA到BANI时代:如何打造企业韧性经营?

当下&#xff0c;国际局势波谲云诡&#xff0c;国内经济也充满着不确定性&#xff0c;给众多企业带来了前所未有的压力。 然而&#xff0c;在这充满挑战的时刻&#xff0c;一些企业凭借强大的数字化能力&#xff0c;展现出惊人的经营韧性和逆流而上的精神&#xff0c;实现了业绩…

java城市公交车调度安排(司机工作安排管理)-393-(源码+说明资料)

转载地址: http://www.3q2008.com/soft/search.asp?keyword393 添加驾驶员 驾驶员管理 添加车辆 车辆管理 添加公交线路 公交线路管理 车站管理 车站添加 车站配置管理 车站配置 调度配置 调度管理 调度查询 修改资料 工作查询 修改资料 用户管理 网站用户管理 l 1、设计&a…

电梯机房秀 系列二

上次小伍带大家看了部分机房的照片&#xff0c;并且简单介绍了一下电梯能量回馈装置&#xff0c;小伙伴们表示很新奇&#xff0c;没看够&#xff0c;今天小伍又来了&#xff0c;带大家看一下电梯能量回馈装置到底安装在电梯什么位置。跟着小伍去看看吧。Lets go&#xff01; 电…

C++等级3题

鸡兔同笼 #include<bits/stdc.h> using namespace std; void f(int n); int n; int main() {cin>>n;int x0;int ma-1;int mi1000;for(int i0;i<n;i){for(int j0;j<n;j){if(i*2j*4n){x1;mamax(ma,ij);mimin(mi,ij);}}}if(x1){cout<<mi<<" &…