imblearn:随机过采样(过采样)

2023-11-18

随机过采样的核心思想:

随机的复制、重复少数类样本,最终使得少数类与多数类的个数相同从而得到一个新的均衡的数据集。

最简单的过采样方法

imblearn:

from imblearn.over_sampling import RandomOverSampler

实验:

1.第一步生成样本

from collections import Counter
from sklearn.datasets import make_classification
from matplotlib import pyplot as plt
# 生成一个样本个数是200,特征数目是2个,2分类,每个类的簇个数是1
# 两类生成的比例是0.06,:0.94 之和是1
# class_sep是代表类别之间的分散程度,越大越容易分类,如果等于40,簇之间间隔会非常远
X, y = make_classification(n_samples=100, n_features=2, n_informative=2,
                            n_redundant=0, n_repeated=0, n_classes=2,
                            n_clusters_per_class=1,
                            weights=[ 0.06, 0.94],
                            class_sep=0.8, random_state=0)

# 绘制原始数据集的图像
plt.scatter(X[:,0],X[:,1],c=y)
print(Counter(y))
plt.show()

结果:

备注:生成了一个多数类个数是94,少数类是6的一个数据集。

2.第二步使用随机过采样方法重构数据集

from collections import Counter
from imblearn.over_sampling import RandomOverSampler as  ros

# 对原始数据集进行随机重采样
ros = ros(random_state=0)
X_resample,y_resample = ros.fit_resample(X,y)
# 绘制过采样后的曲线
plt.scatter(X_resample[:,0],X_resample[:,1],c=y_resample)
print(Counter(y_resample))
plt.show()

结果:

备注:

因为是简单的复制样本,所以过采样后的图形与原始图形一样

但是个数已经变成了94:94 ,即原本不均衡的样本变成了相同的数目,变成了一个均衡的数据集

3.第三步对原始数据及过采样之后的数据集的效果进行检测

#绘制决策边界函数

def plot_decision_function(X, y, clf, ax):
    plot_step = 0.02
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
                         np.arange(y_min, y_max, plot_step))

    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    ax.contourf(xx, yy, Z, alpha=0.4)
    ax.scatter(X[:, 0], X[:, 1], alpha=0.8, c=y, edgecolor='k')

#使用svm方法对数据集进行预测

from sklearn.svm import LinearSVC as svc

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 12))
# 绘制原始数据集的决策边界
clf = svc().fit(X,y)
plot_decision_function(X,y,clf,ax1)
ros = ros(random_state=0)
X_resampled, y_resampled = ros.fit_resample(X, y)
#绘制过采样后的SVM的决策边界
clf = svc().fit(X_resampled,y_resampled)
sp.plot_decision_function(X_resampled,y_resampled,clf,ax2)
print(Counter(y_resampled))
fig.tight_layout()
plt.show()

结果:

备注:左图就是未经过修改过的数据集的决策边界,右图就是经过重采样过后的决策边界,可以看到确实有一定的效果

完整代码


import numpy as np
from collections import Counter
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
from imblearn.over_sampling import RandomOverSampler as  ros
from sklearn.svm import LinearSVC as svc

#绘制决策边界函数

def plot_decision_function(X, y, clf, ax):
    plot_step = 0.02
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, plot_step),
                         np.arange(y_min, y_max, plot_step))

    Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    ax.contourf(xx, yy, Z, alpha=0.4)
    ax.scatter(X[:, 0], X[:, 1], alpha=0.8, c=y, edgecolor='k')

X, y = make_classification(n_samples=100, n_features=2, n_informative=2,
                            n_redundant=0, n_repeated=0, n_classes=2,
                            n_clusters_per_class=1,
                            weights=[ 0.06, 0.94],
                            class_sep=0.8, random_state=0)
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(15, 12))
# 绘制原始曲线
# plt.scatter(X[:,0],X[:,1],c=y)
# 绘制原始数据集的决策边界
clf = svc().fit(X,y)
plot_decision_function(X,y,clf,ax1)
ros = ros(random_state=0)
X_resampled, y_resampled = ros.fit_resample(X, y)
# 绘制过采样后的曲线
# plt.scatter(X_resampled[:,0],X_resampled[:,1],c=y_resampled)
clf = svc().fit(X_resampled,y_resampled)
plot_decision_function(X_resampled,y_resampled,clf,ax2)
print(Counter(y_resampled))
print(len(X_resampled))
fig.tight_layout()
plt.show()

 

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

imblearn:随机过采样(过采样) 的相关文章

  • Manifest合并失败几种原因以及解决方法

    今天遇到了一个报错 Error Execution failed for task app processDebugManifest gt Manifest merger failed with multiple errors see lo
  • c语言合并两个单链表LA和LB,把两个递增的单链表La,Lb,合并成一个递减的单链表Lc...

    原文题是严蔚敏同志的数据结构习题中第二章线性表中提出的问题 原问如下 2 24 假设有两个按元素值递增有序排列的线性表A和B 均以单链表作存储结构 请编写算法将A表与B表归并成一个按元素值递减有序 即非递增有序 允许表中含有值相同的元表 排
  • 基于Vue + vuex + Antd-design-vue实现天气App

    simple weather github 地址 github com WqhForGitHu 效果图 PC端 移动设备端 技术框架 该应用是基于 Vue vuex 实现的 页面的 UI 则是使用了 Antd design vue 库来完成
  • Android 版本统一管理

    前言 因为现在项目都比较模块化 组件化 要用到的model比较多 一个model就有一个build gradle文件 里面都有compileSdkVersion或buildToolsVersion等可能出现版本不一致导致编译出现错误 所以要
  • thinkphp5学习路程 三 数据库操作

    首先我用的是php中文网提供的php工具箱 phpmyadmin管理mysql 在此之前最好对sql语句有所了解 会简单的增删改查等 在里面创建数据库和一张表如下 随后你需要打开数据库的配置文件 目录为 application databa
  • Python OpenCV中的图像阈值处理

    1 前言 上一篇介绍了用C 如何对一幅图像进行阈值处理 本篇接着用python来做同样的事情 图像阈值处理是很多高级算法的底层逻辑之一 比如在做图形检测 轮廓识别时 常常会先对图像进行阈值处理 然后再进行具体的检测或识别 因此很有必要掌握图
  • 指针作函数返回值

    include
  • 指向数组的引用 const char(&p)[a]

    指向数组的引用 const char p a 问题起源 如何在函数内 也能获取数组的大小信息 如果是定义一个数组a后 使用如下方法即可获取大小信息 cout lt lt sizeof a sizeof a 0 但是如果作为一个参数传入到一个
  • 最新酒桌小游戏喝酒小程序源码_带流量主源码下载

    2022最新酒桌小游戏喝酒小程序源码 带流量主 喝酒神器3 6 我修改增加了广告位 根据文档直接替换即可 原版本没有广告位 直接上传源码到开发者端即可 通过后改广告代码 然后关闭广告展示提交 通过后打开即可 下载地址 最新酒桌小游戏喝酒小程
  • 在linux系统下安装配置apache服务器

    我所用的是centos linux系统 但apache的服务在linux系统都大同小异 像ubuntu redhat等等 now let us go 如有问题 欢迎直邮 zhe jiang he hp com lt 何哲江 gt 1 获取软
  • Edge浏览器没有让我失望! 今天终于可以在win10中模拟IE内核进行前端测试了!

    前言 ietest现在是不是不好用了 Edge浏览器仿真是不是不见了 如图 如果我们在前端开发javascript遇见一些老旧的语法标准 想要测试一下都难 想想都抓狂 不过不用担心 经过这几天的资料查阅 我还是找到了一个解决办法来模拟旧版I
  • Set集合中的SortedSet接口下的实现类TreeSet

    放入TreeSet集合中的元素必须实现Comparable接口 不然会报错 因为这个集合中的元素会自动按元素的大小顺序排序 所以不是实现比较的接口就会出现ClassCastException 还要注意一点的是Set集合中的元素是不可重读的
  • ctfshow web入门刷题3

    web15 看提示找到邮箱 然后尝试登入后台 url admin 尝试点击忘记密码然后提示输入城市 尝试用qq搜索qq号 发现城市为西安 得到后台密码 登入得到flag WEB16 题目提示php探针 所以url tz php打开探针然后搜
  • 当你穿越到道诡异仙的世界,如何利用密码学知识区分幻想和现实?

    题解 牛群的能量 题目考察的知识点动态规划题目解答方法的文字分析用 f i 代表以第 i个数结尾的 和最大子群能量值之和 设数组的长度为n 则本题的答案时从0到n 1这n个f 题解 牛牛的名字游戏 题目考察的知识点字符串题目解答方法的文字分
  • TensorFlow在MNIST中的应用-循环神经网络RNN

    参考 1 TensorFlow技术解析与实战 2 https www cnblogs com hellcat p 7401706 html 3 http www jianshu com p 3dbeb3ab9aa3 用TensorFlow搭
  • 如何设计一个麻雀般的微型分布式架构?

    欢迎大家前往腾讯云 社区 获取更多腾讯海量技术实践干货哦 本文由mariolu 发表于云 社区专栏 序言 初衷 设计该系统初衷是基于描绘业务 或机器集群 存储模型 分析代理缓存服务器磁盘存储与回源率的关系 系统意义是在腾讯云成本优化过程中
  • 什么是遗传算法?

    00 目录 遗传算法定义 生物学术语 问题导入 大体实现 具体细节 问题汇总 01 什么是遗传算法 1 1 遗传算法的科学定义 遗传算法 Genetic Algorithm GA 是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的

随机推荐

  • 1186: 零起点学算法93——改革春风吹满地

    Description 改革春风吹满地 不会AC没关系 实在不行回老家 还有一亩三分地 谢谢 乐队奏乐 话说部分学生心态极好 每天就知道游戏 这次考试如此简单的题目 也是云里雾里 而且 还竟然来这么几句打油诗 好呀 老师的责任就是帮你解决问
  • Python进行模糊匹配

    Mr Chen昨天提出了一个问题一起探讨 问题如下 Python库里有fuzzywuzzy和difflib 两个库均可实现词粒度的模糊匹配 同时可设定模糊阈值 实现关键词的提取 地址匹配 语法检查等 针对fuzzywuzzy的process
  • Flink学习27:驱逐器

    import org apache flink api common eventtime SerializableTimestampAssigner WatermarkStrategy import org apache flink api
  • API接口的设计思路

    API接口设计是软件开发中非常重要的一环 良好的设计规范能够提高开发效率 减少问题和错误 并增强系统的可维护性和可扩展性 本文从程序员的视角 讨论一些常见的API接口设计规范 一 遵循RESTful原则 REST Representatio
  • Notepad++作死,国产文本编辑器Notepad--发布

    作死的Notepad Notepad 和 Notepad 都是基于 Windows 的文本编辑器 通常用于编写和编辑纯文本文件 这两个应用程序都是简单的轻量级程序 提供基本的文本编辑功能 Notepad 是一口君经常使用的一款文本编辑软件
  • 最佳实践:基于vite3的monorepo前端工程搭建

    一 技术栈选择 1 代码库管理方式 Monorepo 将多个项目存放在同一个代码库中 选择理由1 多个应用 可以按业务线产品粒度划分 在同一个repo管理 便于统一管理代码规范 共享工作流 选择理由2 解决跨项目 应用之间物理层面的代码复用
  • openstack Storage 组件 Swift 和 Cinder

    Storage 组件 Swift 和 Cinder 本文将介绍 OpenStack Block Swift 和 Object Glance 存储 解释它如何融入到整体架构中 并展示它的操作方式 本文还将在介绍这些工具的过程中了解了如何安装
  • CMake GUI工具使用 MinGW 64构建工程

    系列文章目录 文章目录 系列文章目录 前言 一 open Project是灰色 前言 CMake GUI 打开 CMake GUI 在 Where is the source code 字段中 选择 Krita 源代码目录 E krita
  • 学习笔记-汉诺塔 分治算法

    用分治算法解决汉诺塔 分治法是一种很重要的算法 字面上的解释是 分而治之 就是把一个复杂的问题分成两个或更多的相同或相似的子问题 再把子问题分成更小的子问题 直到最后子问题可以简单的直接求解 原问题的解即子问题的解的合并 这个技巧是很多高效
  • vue(十二)——vue3新特性之Teleport

    teleport是什么 teleport其实就是vue3新增的一个内置组件 其实就是一个新增标签 teleport的作用 官方解释 将其插槽内容渲染到 DOM 中的另一个位置 简单来说就是将dom节点挂载到你指定的位置 遮挡层案例举例 遮挡
  • Linux 设置文件夹可读可写

    在 Linux 系统中 可以使用 chmod 命令来更改文件夹的读写权限 设置文件夹可读可写 可以使用如下命令 chmod R777 path to folder 其中 chmod 是更改文件权限的命令 R 是递归更改权限 包括子文件夹和文
  • AD中拖动器件,无法移动在一起如何解决

    1 AD PCB拖动器件 无法移动在一起时如何解决 在PCB 界面 按下快捷键O P进入 preference对话框 找到PCB Edit gt Interactive Routing gt Dragging gt Component Pu
  • QT中文显示问题

    问题 http topic csdn net u 20090320 10 287c7dba 29c0 4d76 af75 4d19104f544e html C C code QTextCodec text QTextCodec codec
  • 【Java视频教程等百度云资源分享】

    韩顺平javase 87讲 密码 hsp789 链接 https pan baidu com s 1eNCyvFcVHsd7P4gdvrFqtw密码 el1y 韩顺平javaee 66讲 密码 hsp789 链接 HTTPS pan bai
  • Error occurred when evaluating apply callback【计算应用回调时发生错误】

    Error occurred when evaluating apply callback 在simulink里面的serial configuration模块里面选择串口是出现这个报错 首先我使用的是虚拟串口 com1和com2连接 前几
  • java线程屏障CyclicBarrier

    CyclicBarrier允许一组线程在达到一个公共的屏障点时相互等待 它在涉及固定大小的线程组 并且这些线程必须相互等待的程序中非常有用 CyclicBarrier可以在等待的线程被释放后被重用 构造方法 CyclicBarrier in
  • 解决微信小程序中在其他页面无法使用app.js中获取的userInfo或openid的问题

    问题 最近写小程序中 在app js里获取用户的openid和userinfo 并存储为全局变量 getUserInfo function var that this wx getUserInfo success function res
  • 服务器虚拟机如何连接显示器,Windows 10:如何在VMware虚拟机上使用双显示器

    VMware不允许您为任何客户机操作系统使用更多的监视器 但是 您可以绕过此默认设置并将双监视器与VMware虚拟机配合使用 无论您在虚拟机中安装了哪个操作系统 如果您有多个显示器 您都可以使用它们 默认情况下 VMware仅检测一个监视器
  • Hadoop分布式生态

    提示 文章写完后 目录可以自动生成 如何生成可参考右边的帮助文档 文章目录 前言 一 Hadoop系统架构 二 HDFS 1 设计理念 2 架构原理 2 文件写入与读取 4 数据备份 三 MapReduce 1 设计思想 2 架构原理 3
  • imblearn:随机过采样(过采样)

    随机过采样的核心思想 随机的复制 重复少数类样本 最终使得少数类与多数类的个数相同从而得到一个新的均衡的数据集 最简单的过采样方法 imblearn from imblearn over sampling import RandomOver