模型预测笔记(二):结合SMOTE来进行数据不均衡处理实操

news2024/11/16 7:38:05

文章目录

  • 数据不均衡危害
  • 如何解决
    • SMOTE
      • 原理
      • 代码
      • 效果

数据不均衡危害

在模型预测中,数据不均衡是指不同类别的样本数量差异很大。这种情况可能会对模型的性能和结果产生一些危害:

  • 偏斜的预测结果:由于某些类别的样本数量较少,模型可能会倾向于预测数量更多的类别,而忽略数量较少的类别。这会导致模型在预测时出现偏斜,对少数类别的预测效果较差。
  • 误导性的评估指标:在数据不均衡的情况下,使用传统的评估指标(如准确率)可能会产生误导。因为模型可以简单地将所有样本预测为数量更多的类别,从而获得较高的准确率,而忽略了对少数类别的预测能力。
  • 不稳定的模型训练:当数据不均衡时,模型可能会过度拟合数量较多的类别,而忽略数量较少的类别。这可能导致模型在实际应用中的泛化能力较差,对新样本的预测表现不佳。
  • 不准确的特征重要性:在数据不均衡的情况下,模型可能会错误地认为与数量更多的类别相关的特征更重要,而忽略了与数量较少的类别相关的特征。这可能导致模型对于不同类别的预测能力的偏差。

如何解决

为了解决数据不均衡的问题,可以采取以下一些方法:

  • 重采样技术:通过欠采样(随机删除数量较多的样本)或过采样(复制数量较少的样本)来平衡数据集中的类别数量。
  • 类别权重调整:通过为数量较少的类别赋予更高的权重,来平衡不同类别的重要性。
  • 引入合成样本:通过生成合成样本来增加数量较少的类别的样本数量,例如使用SMOTE(Synthetic Minority Over-sampling Technique)算法。
  • 使用集成方法:使用集成学习方法,如随机森林或梯度提升树,可以通过组合多个模型的预测结果来改善对少数类别的预测能力。

综上所述,数据不均衡可能会对模型预测的准确性和稳定性产生负面影响。通过合适的数据处理和模型调整方法,可以改善模型在不均衡数据集上的表现。

SMOTE

原理

SMOTE(Synthetic Minority Over-sampling Technique)是一种用于解决类别不平衡问题的数据增强算法。其原理如下:

  • 首先,对于数据集中的每一个少数类样本,计算其与其K个最近邻样本的差值:diff = neighbor - sample,其中neighbor是样本的一个最近邻样本,sample是当前样本。
  • 然后,对于每一个少数类样本,随机选择其中一个最近邻样本,并根据公式生成一个新的样本:new_sample = sample + random * diff,其中random是一个[0, 1]之间的随机数。
  • 最后,将生成的新样本添加到原始数据集中,使得少数类样本的数量增加,从而达到平衡数据集的目的。

SMOTE的关键思想是通过合成新的少数类样本来增加数据集中少数类样本的数量,从而达到平衡数据集的目的。通过引入合成样本,SMOTE可以更好地捕捉到少数类样本之间的特征分布,从而提高分类器的性能。

代码

# 遇到样本不均衡的问题,通过SMOTE来建立训练数据集和测试数据集
from sklearn.model_selection import train_test_split
sos = SMOTE(n_jobs=-1)
X_sos, y_sos = sos.fit_resample(X, y)
print('SMOTE过采样后,训练集 y_sos 中的分类情况:{}'.format(Counter(y_sos)))

X_train, X_test, y_train, y_test = train_test_split(X_sos,y_sos,test_size = 0.3, random_state = 0)
print("原始训练集包含样本数量: ", len(X_train))
print("原始测试集包含样本数量:  ", len(X_test))
print("原始样本总数: ", len(X_train)+len(X_test))

效果

初始:
在这里插入图片描述
处理后:

在这里插入图片描述

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

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

相关文章

Rides分布式缓存

分布式缓存 -- 基于Redis集群解决单机Redis存在的问题 单机的Redis存在四大问题: 1.Redis持久化 Redis有两种持久化方案: RDB持久化 AOF持久化 1.1.RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件)&#x…

从Web 2.0到Web 3.0,互联网有哪些变革?

文章目录 Web 2.0时代:用户参与和社交互动Web 3.0时代:语义化和智能化影响和展望 🎉欢迎来到Java学习路线专栏~从Web 2.0到Web 3.0,互联网有哪些变革? ☆* o(≧▽≦)o *☆嗨~我是IT陈寒🍹✨博客主页&#x…

Docker容器与虚拟化技术:容器运行时说明与比较

目录 一、理论 1.容器运行时 2.容器运行时接口 3.容器运行时层级 4.容器运行时比较 5.强隔离容器 二、问题 1.K8S为何难以实现真正的多租户 三、总结 一、理论 1.容器运行时 (1)概念 Container Runtime 是运行于 k8s 集群每个节点中&#xff…

基于51单片机的八路抢答器Protues仿真设计

目录 一、设计背景 二、实现功能 三、仿真演示 四、源程序(部分) 一、设计背景 近年来随着科技的飞速发展,单片机的应用正在不断的走向深入。本文阐述了基于51单片机的八路抢答器设计。本设计中,51单片机充当了核心控制器的角…

HTML浪漫动态表白代码绚烂星空烟花+粉色大爱心+3D旋转相册+音乐(附源码)(三)

一. 前言 七夕马上就要到了,为了帮助大家高效表白,下面再给大家加几款实用的HTML浪漫表白代码(附源码)背景音乐,可用于520,情人节,生日,求爱表白等场景,可直接使用。 来吧,展示&am…

统一git使用方法,git状态变迁图,git commit提交规范

目录 说明 统一git使用方法 git状态变迁图 git commit 提交规范 说明 多次工作中多名员工不懂git多次技术分享,自行查资料学习git并使用,会出现使用各种偏僻的命令,异常问题无法解决;或出现带url的git合并提交。主要是学的不…

【腾讯云 TDSQL-C Serverless 产品测评】全面测评TDSQL-C Mysql Serverless

全面测评TDSQL-C Mysql Serverless 文章目录 全面测评TDSQL-C Mysql Serverless前言什么是TDSQL-C Mysql Serverless初始化 TDSQL-C Mysql Serverless新建数据库建立数据表开启外网访问 兼容性SQL文件 导入导出navicat 直接在线传输 构建测试环境准备Python测试脚本准备 Jmeter…

算法通关村第5关【白银】| 哈希和栈经典算法题

1.两个栈实现队列 思路:两个栈,一个输入栈,一个输出栈。 当需要输入的时候就往inStack中插入,需要输出就往outStack中输出,当输出栈是空就倒出输入栈的数据到输出栈中,这样就保证了后插入的数据从栈顶倒入…

MySQL数据库中间件Mycat介绍及下载安装(教程)

一,介绍 MyCat是开源的、活跃的、基于Java语言编写的MySQL数据库中间件。可以像使用MySQL一样来使用MyCat,对于开发人员来说根本感觉不到MyCat的存在。 开发人员只需要连接MyCat即可,而具体底层用到几台数据库,每一台数据库服务器…

数组分割(2023省蓝桥杯)n种讨论 JAVA

目录 1、题目描述:2、前言:3、动态规划(bug):3、递归 剪枝(超时):4、数学(正解): 1、题目描述: 小蓝有一个长度为 N 的数组 A [A0, A1,…, AN−…

3分钟通过日志定位bug,这个技能测试人必须会!

♥ 前 言 软件开发中通过日志记录程序的运行情况是一个开发的好习惯,对于错误排查和系统运维都有很大帮助。 Python 标准库自带了强大的 logging 日志模块,在各种 python 模块中得到广泛应用。 一、简单使用 1. 入门小案例 import logging loggin…

sync修饰符(重要)

作用:可以实现 子组件 与 父组件 数据的双向绑定 简化代码 特点:prop属性名,可以自定义,非固定为value 场景:封装弹框类的基础组件,visible属性 true显示 false隐藏 本质:就是 :属性名 和 updat…

SpringBoot 配置优先级

一般而言,SpringBoot支持配置文件进行配置,即在resources下的application.properties或application.yml。 关于配置优先级而言, application.properties>application.yml>application.yaml 另外JAVA程序程序还支持java系统配置和命令行…

lombok启动不生效(什么方法都试了,可还是不生效怎么办 ?! 救救我)

使用IntelliJ IDEA 2021.1.3&#xff08;Ultimate Edition&#xff09;时提示Lombok不生效 java: You aren’t using a compiler supported by lombok, so lombok will not work and has been disabled. 方式一&#xff1a;我们手动更新一下版本到以下版本 <!--Lombok--&…

水果音乐制作软件fl studio v21.1.0.3713 中文特别版

水果音乐制作软件fl studio v21.1.0.3713 中文特别版是一个功能完备的音乐制作环境&#xff0c;能够进行多轨道音频录制、音序处理和混音&#xff0c;可以帮助用户创作专业质量的音乐轨道。 借助 VST 托管、灵活的混音器、高级 MIDI 和 ReWire 支持&#xff0c;您将轻松驾驭各种…

第14章——FreeRTOS信号量

1.信号量的简介 信号量是一种解决同步问题的机制&#xff0c;可以实现对共享资源的有序访问。 信号量&#xff1a;用于传递状态&#xff08;区别于队列传递消息&#xff09; 信号量的计数值都有限制&#xff1a;限定最大值。 如果最大值被限定为1&#xff0c;那么它就是二值…

多种编程语言运行速度排名-10亿次除7求余数为0的数量

最佳方式是运行10次&#xff0c;取平均数&#xff0c;用时秒数显示3位小数。 因为第一次打开&#xff0c;可能CPU还没优化好&#xff0c;多次取平均&#xff0c;比较准确 第1次共10次&#xff0c;用时3秒&#xff0c;平均3秒 第2次共10次&#xff0c;用时4秒&#xff0c;平均3.…

搭建开发环境-操作系统篇(一键搭建开发环境)

概述 所谓工欲善其事必先利其器&#xff0c;搭环境往往是开发过程中卡出很多初学者的拦路虎。 对于很多老鸟来说&#xff0c;很多东西都已经习惯成自然&#xff0c;也就没有刻意和初学者说。但对于很多初学者&#xff0c;却是受益良多。 这个系列&#xff0c;先从操作系统开始…

string类写时拷贝

文章目录 1.string类拷贝构造函数的现代写法2.string类写时拷贝vs和g下string结构的不同vs下string的结构&#xff1a;g下string的结构 3.总结 1.string类拷贝构造函数的现代写法 string类拷贝构造函数的传统写法&#xff1a; string(const string& s){if (this ! &s)…

2023年每天都投递很多份简历,但都石沉大海,我还投吗?测试人该何去何从?

各大互联网公司的接连裁员&#xff0c;政策限制的行业接连消失&#xff0c;让今年的求职雪上加霜&#xff0c;想躺平却没有资本&#xff0c;还有人说软件测试岗位饱和了&#xff0c;对此很多求职者深信不疑&#xff0c;因为投出去的简历回复的越来越少了。 另一面企业招人真的…