不均衡数据集采样1——SMOTE算法(过采样)

2023-11-08

SMOTE: Synthetic Minority Over-sampling Technique
论文地址:https://www.jair.org/index.php/jair/article/download/10302/24590

SMOTE的算法思路是:

  • 使用K近邻,在附近(最少选附近5个点)随便找一个同一类别的点,然后连线
  • 在线段上随便找一个点,就是新的样本点(论文里说的很学术:新样本点 = 原始点+random(0,1) * 新旧差异

详细代码可以参考:https://zhuanlan.zhihu.com/p/44055312
在这里插入图片描述

代码示例

安装方法:pip install imbalanced-learn
https://imbalanced-learn.org/stable/over_sampling.html

过采样的文档地址:https://imbalanced-learn.org/stable/over_sampling.html

import pandas as pd
from imblearn.over_sampling import SMOTE


def get_dataset():
    from sklearn.datasets import make_classification
    data_x, data_y = make_classification(n_samples=1000, n_classes=2, n_features=6, n_informative=4,
                                         random_state=0)  # 2个特征
    # data_df = pd.DataFrame(data_x).merge(pd.Series(data_y, name="y_label"), left_index=True, right_index=True)
    data_x = pd.DataFrame(data_x)
    data_x.columns = ['x1', 'x2', 'x3', 'x4', 'x5', 'x6']
    data_y = pd.Series(data_y)
    # 删除部分数据:删除100个label为0的数据
    drop_index = data_y[data_y == 0].sample(100).index
    data_y = data_y.drop(drop_index)
    data_x = data_x.drop(drop_index)
    return data_x, data_y


if __name__ == '__main__':
    x_data, y_data = get_dataset()  # 获取数据源

    # 使用smote生成数据
    smote_data = SMOTE().fit_resample(x_data, y_data.values)
    new_x_data = smote_data[0]  # 新的x
    new_y_data = smote_data[1]  # 新的y

在工具中,如果有多个类别,会默认将拥有最多数据量的类对应的数据量,作为目标量,将其他所有类别的数据量都生成到这个量

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不均衡数据集采样1——SMOTE算法(过采样) 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • Python中Decimal类型的澄清

    每个人都知道 或者至少 每个程序员都应该知道 http docs oracle com cd E19957 01 806 3568 ncg goldberg html 即使用float类型可能会导致精度错误 然而 在某些情况下 精确的解决方
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 如何在序列化器创建方法中获取 URL Id?

    我有以下网址 url r member P
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • python 模拟第三方模块

    我正在尝试测试一些处理推文的类 我使用 Sixohsix twitter 来处理 Twitter API 我有一个类充当 Twitter 类的外观 我的想法是模拟实际的 Sixohsix 类 通过随机生成新推文或从数据库检索它们来模拟推文的
  • 如何使用 Plotly 中的直方图将所有离群值分入一个分箱?

    所以问题是 我可以在 Plotly 中绘制直方图 其中所有大于某个阈值的值都将被分组到一个箱中吗 所需的输出 但使用标准情节Histogram类我只能得到这个输出 import pandas as pd from plotly import
  • 将数据帧行转换为字典

    我有像下面的示例数据这样的数据帧 我正在尝试将数据帧中的一行转换为类似于下面所需输出的字典 但是当我使用 to dict 时 我得到了索引和列值 有谁知道如何将行转换为像所需输出那样的字典 任何提示都非常感激 Sample data pri
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • 填充两个函数之间的区域

    import matplotlib pyplot as plt import numpy as np def domain x np arange 0 10 0 001 f1 lambda x 2 x x 2 0 5 plt plot x
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • 首先对列表中最长的项目进行排序

    我正在使用 lambda 来修改排序的行为 sorted list key lambda item item lower len item 对包含元素的列表进行排序A1 A2 A3 A B1 B2 B3 B 结果是A A1 A2 A3 B
  • 将 matplotlib 颜色图集中在特定值上

    我正在使用 matplotlib 颜色图 seismic 绘制绘图 并且希望白色以 0 为中心 当我在不进行任何更改的情况下运行脚本时 白色从 0 下降到 10 我尝试设置 vmin 50 vmax 50 但在这种情况下我完全失去了白色 关
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 当鼠标悬停在上面时,intellisense vscode 不显示参数或文档

    我正在尝试将整个工作流程从 Eclipse 和 Jupyter Notebook 迁移到 VS Code 我安装了 python 扩展 它应该带有 Intellisense 但它只是部分更糟糕 我在输入句点后收到建议 但当将鼠标悬停在其上方
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 具有自定义值的 Django 管理外键下拉列表

    我有 3 个 Django 模型 class Test models Model pass class Page models Model test models ForeignKey Test class Question model M

随机推荐

  • getUserProfile:fail 调用失败?getUserProfile:fail can o

    一般Fail原因有很多 如果fail函数的参数返回结果有具体的提示错误 比如长度关键字等问题 那么根据提示直接更改就行 还有一种情况就是我们使用测试号 Uni开发时 我们调用getUserProfile函数返回错误 我们首先要考虑AppId
  • 分享三个不同目录双向更新的实用方法

    分享三个不同目录双向更新的实用方法 方法一 rsync 判断脚本 进行双向更新 方法二 使用rsync的 u选项 方法三 使用rsync inotify监控工具 扩展 方法一 rsync 判断脚本 进行双向更新 脚本内容如下 bin bas
  • 一起来!白嫖Amazon DynamoDB!!!

    Amazon DynamoDB简介 Amazon DynamoDB是由Amazon Web Services AWS 提供的一种快速 灵活 全托管的NoSQL数据库服务 支持文档和键 值数据模型 它具有自动扩展 低延迟 高可靠性 高吞吐量等
  • 4.2 配置Mysql与注册登录模块(中)

    目录 学习目标 学习内容 后端 JWT工具类 数据库修改 写具体业务API 根据token获取用户信息 注册API 前端 这节课实现了登录效果 学习目标 jwt验证 后端的API 前端登录注册页面 学习内容 前端和后端会有跨域问题 不用传统
  • Linux 中的 colcrt 命令及示例

    Linux 系统中的colcrt命令用于格式化文本处理器输出 以便可以在阴极射线管显示器上查看 它删除了下划线 删除线和下划线 这些内容无法在 CRT 上显示 因为在 CRT 屏幕上的给定位置只能生成一个字符 它还将所有下划线放在新行上 位
  • 华为服务器怎么升级2016系统,服务器怎么升级

    服务器怎么升级 内容精选 换一换 华为云帮助中心 为用户提供产品简介 价格说明 购买指南 用户指南 API参考 最佳实践 常见问题 视频帮助等技术文档 帮助您快速上手使用华为云服务 当您购买的弹性云服务器规格无法满足业务需要时 您可以随时变
  • Ruby

    1 如何安装ralis 在线安装常常因为公司proxy server的原因产生连接问题 所以可以先到https rubygems org下载然后离线安装 gem install l rails2 3 5 gem
  • 【LeetCode刷题】-岛屿数量

    Task 思路 1 首先判断给定的二维数组是不是空的 2 对二维数组遍历一下 对每个元素进行判断 a 如果这个值等于1 那么就把计数器 1 并且对该元素四周进行深度搜索 3 返回 代码 class Solution public int n
  • 定制 findbugs规则

    come from http www 51testing com html 97 13997 211893 html Findbugs是著名的开源java静态代码分析工具 基于bytecode扫描 具备数据流分析能力 操作很简单 可以下载单
  • vue dialog 弹窗组件

    因为官方组件不是很好用所以自己写了一个弹窗组件 javascript
  • Event Driven Class OSAL 基于事件驱动的模拟操作系统

    EventDrivenClassOSAL详解 Event Driven Class OSAL 基于事件驱动的模拟操作系统 前言 什么是OSAL OSAL为 Operating System Abstraction Layer 即 操作系统抽
  • Django使用MySQL数据库出现的问题--mysqlclient库的安装

    python有的时候真的是很不友好 我的vc14库是最新的 不能装 首先明确 Django使用MySQL数据库需要MySQL python 2 7 或者MySQLclient 3 6 库的支持 但是 他们都不好装 要不网上也不会有那么多关于
  • 正弦波逆变器c语言程序源码,官方开源-EG8010单相纯正弦波逆变器驱动板资料分享...

    该项目是基于EG8010和IR2110S设计的单相纯正弦波逆变器驱动板设计 见附件下载其原理图 PCB 使用说明等 该单相纯正弦波逆变器采用专用芯片EG8010 为控制芯片 驱动芯片采用IR2110S 驱动板上集成了电压 电流 温度保护功能
  • 基于KNN的手写字符识别

    整理了一下自己之前做过的手写字符识别的资料 分享出来供大家学习交流 后续可能还会分享一些其他方法进行手写字符识别的资料 敬请期待 一 任务和设计思路 二 KNN算法实现 1 KNN算法简介 2 简单的KNN代码 3 使用sklearn的KN
  • 基于模板匹配的螺母检测(计算机视觉实验)

    文章目录 前言 实验任务与要求 1 实验情况概述 2 算法流程 3 实验结果与分析 3 1 01 jpg 和 02 jpg 检测结果 3 2 03 jpg 和 04 jpg 检测结果 3 3 05 jpg 检测结果 3 4 其它问题 更新日
  • Vmware网络配置与管理,三种网络模式、网络管理命令、配置主机名称、主机映射、防火墙、修改ip(NAT模式配通网络)操作步骤)

    一 Vmware中的虚拟机和宿主机进行通信的三种网络模式 它们分别是 1 Bridged 桥接模式 桥接模式就是将主机网卡与虚拟机虚拟的网卡利用虚拟网桥进行通信 在桥接的作用下 类似于把物理主机虚拟为一个交换机 所有桥接设置的虚拟机连接到这
  • Spring注解开发之组件注册(二)

    Spring注解开发之组件注册 一 5 Import 给容器导入一个组件 给容器中注册组件 一 包扫描 组件标注注解 Controller Service Repository Component 自己写的类 二 Bean 导入的第三包里面
  • else应输入一个语句是什么意思_C++入门到精通(十),条件语句中的“否则”

    我们在说 如果 那么 的时候 经常和 否则 连用 例如 如果明天天气好 就开运动会 否则就不开 但是根据上一篇我们学到内容 我们只能这样说 如果明天天气好 就开运动会 如果明天天气不好 就不开运动会 虽然也能够把意思表达清楚 但是语句显得沉
  • 利用Shader Forge 做出树叶摆动的效果2DSprite__Unity

    基于Shader Forge的2DSprite上制作 效果图如下 Shader Forge的版本为 v1 3 8 0 unity版本为2017 1 0f3 相关的shader和Demo稍后会分享资源 喜欢的同学去下载 Shader源码如下
  • 不均衡数据集采样1——SMOTE算法(过采样)

    SMOTE Synthetic Minority Over sampling Technique 论文地址 https www jair org index php jair article download 10302 24590 SMO