机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型

机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型

目录

  • 机器学习之正则化惩罚和K折交叉验证调整逻辑回归模型
    • 1 过拟合和欠拟合
      • 1.1 过拟合
      • 1.2 欠拟合
    • 2 正则化惩罚
      • 2.1 概念
      • 2.2 函数
      • 2.3 正则化种类
    • 3 K折交叉验证
      • 3.1 概念
      • 3.2 图片理解
      • 3.3 函数导入
      • 3.4 参数理解
    • 4 训练模型K折交叉验证
      • 4.1问题及理解
      • 4.2 训练模型调整

1 过拟合和欠拟合


1.1 过拟合

概念:模型对训练数据的拟合程度过高,导致模型在训练集上表现完美,但在验证集或测试集上表现差

一些方法:

  • 减少模型复杂度,减少参数数量。
  • 正则化惩罚,限制模型。

1.2 欠拟合

概念:模型对训练数据的拟合程度不高,导致模型在训练集和测试集上的表现都不好

一些方法:

  • 增加模型复杂度,增加参数数量。
  • 增加训练时间。
  • 增加训练数据量。

在机器学习实践中,通常需要根据模型的表现不断调整,直到找到既不过拟合也不欠拟合的最佳模型状态。

2 正则化惩罚


2.1 概念

通过在损失函数中加入惩罚项,限制模型参数的大小,从而提高模型的泛化能力,用于防止模型过拟合,是在机器学习和深度学习中常用的技术。

2.2 函数

  • 逻辑回归损失函数:

在这里插入图片描述

  • 正则化惩罚:
    在这里插入图片描述

2.3 正则化种类

L1正则化和L2正则化,主要是损失函数加入惩罚项的不同如下:
在这里插入图片描述

LogisticRegression的C参数表示正则化强度,是正则化系数λ的倒数,float类型,默认为1.0。必须是正浮点型数,越小的数值表示越强的正则化。

3 K折交叉验证


3.1 概念

将原始数据均分成K组,将每个子集数据分别做一次验证集,其余的K-1组子集数据作为训练集,这样会得到K个模型,用这K个模型最终的验证集的分类准确率的平均数作为训练模型的性能指标。

3.2 图片理解

如下图显示,均分后,依次作为测试集,求平均数。
在这里插入图片描述

3.3 函数导入

from sklearn.model_selection import cross_val_score

3.4 参数理解

lg = LogisticRegression(C=i,penalty='l2',solver='lbfgs',max_iter=1000)
score = cross_val_score(lg,x_tr,y_tr,cv=8,scoring='recall')
  • lg为算法
  • x_tr,y_tr,参与K折交叉验证的特征数据和结果类别
  • cv=8,k折,均分为8组依次测试
  • scoring=‘recall’要求召回率平均数

4 训练模型K折交叉验证


4.1问题及理解

问题:给定数据,预测分类

特征数据:除类别列外,其他有关列
类别标签:类别列
第一列为时间,无关,最后一列为类别给定的数据:
在这里插入图片描述

4.2 训练模型调整

通过正则化惩罚和K折交叉验证调整训练模型,可以看到模型更加精准。

代码展示:

import pandas as pd
import numpy as np
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split, cross_val_predict, cross_val_score
from sklearn.preprocessing import StandardScaler
from sklearn import metrics
from sklearn.model_selection import cross_val_score
# 标准化处理
scaler = StandardScaler()
data = pd.read_csv('creditcard.csv')
a = data[['Amount']]
b = data['Amount']
# z标准化处理Amount,再存Amount中
data['Amount'] = scaler.fit_transform(data[['Amount']])
# 删除time列
data = data.drop(['Time'],axis=1)
# 特征数据x,删除class列
x_all = data.drop(['Class'],axis=1)
# class为标签结果列
y_all = data.Class
# 训练集特征,测试集特征,训练集结果,测试集结果,test_size抽取的测试集百分比,train_size 抽取的训练集百分比
x_tr,x_te,y_tr,y_te = \
    train_test_split(x_all, y_all, test_size=0.3,random_state=0)
# 逻辑回归方法引用
lgi = LogisticRegression(C=0.1)
# 训练集训练模型
lgi.fit(x_tr,y_tr)
# 预测测试集结果
re_pr = lgi.predict(x_te)
# 拟合度评分
score0 = lgi.score(x_te,y_te)
print(score0)
# # 分类结果报告
print(metrics.classification_report(y_te, re_pr))
# 交叉验证,选择惩罚因子
scores = []
c_range = [0.01,0.1,1,10,100]
# 循环测试带入因子
for i in c_range:
    lg = LogisticRegression(C=i,penalty='l2',solver='lbfgs',max_iter=1000)
    # 模型迭代8次后的所有模型的recall值
    score = cross_val_score(lg,x_tr,y_tr,cv=8,scoring='recall')
    # score的平均值,也就是recall的平均值
    score_m = sum(score)/len(score)
    # scores列表添加均值recall
    scores.append(score_m)
    # print(score_m)
# np.argmax()求括号内的最大值对应的索引,得最大值对应的C值
# print(np.argmax(scores))
print(scores)
best_c = c_range[np.argmax(scores)]
# 根据上面最大判断,建立模型
lg = LogisticRegression(C=best_c,penalty='l2',max_iter=1000)
lg.fit(x_tr,y_tr)
# # 训练集的预测
te_pr = lg.predict(x_te)
# 拟合度
score1 = lg.score(x_te,y_te)
print(score1)
# 制作混淆矩阵,根据训练集的真实结果和预测结果,自测
print(metrics.classification_report(y_te,te_pr))

运行结果:

在这里插入图片描述

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

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

相关文章

[AHK]用大模型写ahk脚本

问题背景 遇到程序在运行,但是在屏幕上看不到的窘境,于是想用AHK来实现一键在主屏幕上居中显示。 解决思路 手撸是不可能手撸的,我有豆包我有cursor,于是想看看她俩到底能力咋样。 提示词 用AHK v2实现:热键WinC …

Word如何插入图片并移动到某个位置

Word如何插入图片并移动到某一个位置 新建word→插入→图片 选择合适的位置→选择图片→打开 点击图片→布局选项→选择文字环绕下的任意一个→固定在页面上 点击图片就可以将图片移动到任意位置

ElasticSearch7.10-分词器

文章目录 分词器1.字符过滤器1.介绍2.过滤html标签3.mappings过滤规则(屏蔽非文明用语)4.正则替换 2.自定义分词器1.代码2.查询 3.中文分词器1.下载ik分词器7.10.0版本(跟es对应)2.应用ik分词器1.进入插件目录下创建一个ik目录2.将…

python利用selenium实现大麦网抢票

大麦网(damai.cn)是中国领先的现场娱乐票务平台,涵盖演唱会、音乐会、话剧、歌剧、体育赛事等多种门票销售。由于其平台上经常会有热门演出,抢票成为许多用户关注的焦点。然而,由于票务资源的有限性,以及大…

Linux 笔记 SELinux 常见操作与介绍

SELinux(Security-Enhanced Linux)是 Linux 操作系统中的一种安全模块,旨在提供更细粒度的访问控制。它最初由美国国家安全局(NSA)开发,目的是增强 Linux 系统的安全性。SELinux 通过强制访问控制&#xff…

Elasticsearch VS Easysearch 性能测试

压测环境 虚拟机配置 使用阿里云上规格:ecs.u1-c1m4.4xlarge,PL2: 单盘 IOPS 性能上限 10 万 (适用的云盘容量范围:461GiB - 64TiB) vCPU内存 (GiB)磁盘(GB)带宽(Gbit/s)数量1664500500024 Easysearch 配置 7 节点…

javacript中function (res) {}与箭头函数表达式(res) =>{}的区别

javacript中function (res) {}与(res) >{}的区别 function (res) {} 代码演示 let shape {name:长方形,say:function(){console.log(我是this.name)setTimeout(function(){console.log(3秒后输出我是: this.name); //this.name为undefined}, 3000)} }shape.sa…

[IT项目管理]十.项目人力资源管理

十.项目人力资源管理 *10.0基础知识 1)动力与激励 10.1人力资源管理的重要性 很多项目经理都说过,“人是我们最重要的资产。”,人的因素决定着一个 组织或者项目的成败。 10.2人力资源管理对未来的其启示 对于组织来说&#…

数据结构理论篇(期末突击)

找往期文章包括但不限于本期文章中不懂的知识点: 个人主页:我要学编程(ಥ_ಥ)-CSDN博客 所属专栏: 学校课程突击 下面均是为了应付学校考试所用,如果有涉及部分知识点下面未说明,可以去我的数据结构专栏看看或者自行在…

Kafka的rebalance机制

1、什么是 rebalance 机制 重平衡(rebalance)机制规定了如何让消费者组下的所有消费者来分配 topic 中的每一个分区。 2、rebalance 机制的触发条件是什么 (1)消费者组内成员变更 成员增加:当有新的消费者加入到消费…

人工智能之基于阿里云图像人脸融合部署

人工智能之基于阿里云图像人脸融合部署 需求描述 基于阿里云搭建图像人脸融合模型,模型名称:iic/cv_unet-image-face-fusion_damo使用上述模型输出人脸融合照片 模型路径:人脸融合 业务实现 阿里云配置 阿里云配置如下: SD…

如何利用无线路由器实现水泵房远程监测管理

水泵站广泛部署应用在工农业用水、防洪、排涝和抗旱减灾等方面,如果水泵站发生异常,往往会对生产生活造成诸多损失,甚至引发安全事故。因此,建立一套高效、可靠的泵站远程监测管理系统至关重要。 方案背景 目前,我国大…

Unity Canvas中显示粒子特效

首先在场景中新建一个粒子特效 修改一下参数 1.改变粒子特效的渲染层级,层级修改为UI层,由UI相机渲染 使用粒子特效的Sorting Layer ID和Order In Layer,Sorting Layer ID设置为UI(如果没有UI层则新建就好了),对UI进行排序 对于要显示在前的UI组件添加Canvas组件,设置O…

Spring Cloud Security集成JWT 快速入门Demo

一、介绍 JWT (JSON Web Token) 是一种带有绑实和信息的简单标准化机制,在信息通信中用于验证和信息传递。尤其在应用中使用Spring Cloud实现分布式构建时,JWT可以作为一种无状态验证原理的证明。 本文将进一步描述如何在Spring Cloud Security中集成JW…

逻辑数据模型设计过程包含哪些任务?

逻辑数据模型设计是数据库开发周期中的一个关键环节,它位于需求分析之后、物理数据模型设计之前。这一步骤的主要目标是构建一个准确反映业务需求、结构清晰且易于理解的数据模型。本文将深入探讨逻辑数据模型设计过程所包含的各项任务,结合理论与实践&a…

CAT3D: Create Anything in 3D with Multi-View Diffusion Models 论文解读

24年5月的论文,上一版就是ReconFusion 目录 一、概述 二、相关工作 1、2D先验 2、相机条件下的2D先验 3、多视角先验 4、视频先验 5、前馈方法 三、Method 1、多视角扩散模型 2、新视角生成 3、3D重建 一、概述 该论文提出一种CAT3D方法,实现…

GitHub 及 GitHub Desktop 详细使用教程(通俗易懂)

目录 Δ前言 一、Github教程 1.什么是Github? 2.仓库和对仓库的操作: 2.1 Repository(仓库) 2.2 Fork(派生) 2.3 Star(收藏) 2.4 Watch(追番) 2.5 Issue&am…

Shell-概述、脚本、变量、数值运算

概述 一、什么是shell 在 Linux 内核与用户之间的解释器程序 通常指 /bin/bash负责向内核翻译及传达用户/程序指令相当于操作系统的“外壳” 二、shell的使用方式 交互式 —— 命令行 ---人工干预、智能化程度高 ---逐条解释执行、效率低 非交互式 —— 脚本 ---需要提前…

刷机TP TP-Link-WDR5660【持续更新】

上文中简单介绍了:路由器刷机TP-Link tp-link-WDR5660 路由器升级宽带速度-CSDN博客 步骤如下: 第一步:安装Linux系统 本文使用virtualBox 安装Ubuntu的debian系统,本文不在讲述章 请自行参考:Kali 安装之腾讯云经…

信息科技伦理与道德1:研究方法

1 问题描述 1.1 讨论? 请挑一项信息技术,谈一谈为什么认为他是道德的/不道德的,或者根据使用场景才能判断是否道德。判断的依据是什么(自身的道德准则)?为什么你觉得你的道德准则是合理的,其他…