【Python】处理不平衡数据集的高级方法:ADASYN详解


原谅把你带走的雨天
在渐渐模糊的窗前
每个人最后都要说再见
原谅被你带走的永远
微笑着容易过一天
也许是我已经 老了一点
那些日子你会不会舍不得
思念就像关不紧的门
空气里有幸福的灰尘
否则为何闭上眼睛的时候
又全都想起了
谁都别说
让我一个人躲一躲
你的承诺
我竟然没怀疑过
反反覆覆
要不是当初深深深爱过
我试着恨你
却想起你的笑容
                     🎵 陈楚生/单依纯《原谅》


在机器学习和数据科学领域,处理不平衡数据集是一个常见且棘手的问题。不平衡数据集会导致模型偏向于多数类,从而影响分类器的性能。为了解决这一问题,研究人员提出了多种方法,其中ADASYN(Adaptive Synthetic Sampling Approach for Imbalanced Learning)是一种有效的过采样技术。本文将详细介绍ADASYN的原理、实现及其在实际项目中的应用。

什么是ADASYN?

ADASYN是一种自适应合成过采样技术,通过生成少数类的合成样本来平衡数据集。它的目标是增加分类器对少数类样本的学习能力,从而提高模型的整体性能。ADASYN的主要思想是根据样本的分布和分类难度,自适应地生成新的少数类样本。

ADASYN的工作原理

  • 计算样本的分类难度:
    ADASYN通过计算少数类样本的k近邻来评估每个少数类样本的分类难度。分类难度较大的样本将生成更多的合成样本,反之亦然。

  • 计算需要生成的合成样本数量:
    根据分类难度,ADASYN确定每个少数类样本需要生成的合成样本数量。这个数量与分类难度成正比。

  • 生成合成样本:
    对于每个少数类样本,ADASYN根据其k近邻随机生成合成样本。这些合成样本通过插值的方法生成,即在少数类样本和其近邻之间随机选取一个点。

安装Imbalanced-learn库

在实现ADASYN之前,我们需要安装imbalanced-learn库,这是一个专门用于处理不平衡数据集的Python库。可以使用以下命令进行安装:

pip install imbalanced-learn

ADASYN的实现

以下是一个使用ADASYN进行过采样的示例:

import pandas as pd
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from imblearn.over_sampling import ADASYN
from collections import Counter# 生成一个不平衡的数据集
X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, n_clusters_per_class=1, weights=[0.9, 0.1], flip_y=0, random_state=42)# 查看数据分布
print(f"原始数据集类别分布: {Counter(y)}")# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)# 使用ADASYN进行过采样
adasyn = ADASYN(random_state=42)
X_resampled, y_resampled = adasyn.fit_resample(X_train, y_train)# 查看过采样后的数据分布
print(f"过采样后数据集类别分布: {Counter(y_resampled)}")

代码详解

数据生成:

我们使用make_classification函数生成一个不平衡的数据集。该数据集有1000个样本,20个特征,其中90%的样本属于多数类(类0),10%的样本属于少数类(类1)。

X, y = make_classification(n_samples=1000, n_features=20, n_informative=2, n_redundant=10, n_clusters_per_class=1, weights=[0.9, 0.1], flip_y=0, random_state=42)
数据分布:

使用Counter查看原始数据集的类别分布,确认数据集不平衡。

print(f"原始数据集类别分布: {Counter(y)}")
数据集划分:

将数据集划分为训练集和测试集,并保持数据分布的一致性。

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42, stratify=y)
ADASYN过采样:

使用ADASYN对训练集进行过采样,以平衡少数类和多数类样本的数量。

adasyn = ADASYN(random_state=42)
X_resampled, y_resampled = adasyn.fit_resample(X_train, y_train)
查看过采样后的数据分布:

再次使用Counter查看过采样后的数据分布,确认数据集已经平衡。

print(f"过采样后数据集类别分布: {Counter(y_resampled)}")

ADASYN的优点和局限性

优点:

  • 自适应过采样:ADASYN根据样本的分类难度自适应地生成合成样本,避免了简单过采样方法可能带来的噪声问题。
  • 提高模型性能:通过平衡数据集,ADASYN可以显著提高分类器的性能,特别是在处理不平衡数据时。
  • 易于实现:使用imbalanced-learn库中的ADASYN非常简单,只需几行代码即可完成过采样。

局限性:

  • 计算复杂度:由于需要计算每个样本的分类难度和生成合成样本,ADASYN的计算复杂度较高,可能会增加训练时间。
  • 对高维数据的影响:在高维数据中,生成合成样本的过程可能会变得不稳定,影响过采样效果。
  • 参数调优:ADASYN有一些参数需要调优,如近邻数k等,这可能需要一定的经验和实验。

结论

ADASYN是一种强大的自适应合成过采样技术,可以有效地处理不平衡数据集,提高分类器的性能。通过imbalanced-learn库中的ADASYN实现,我们可以轻松地对少数类样本进行过采样,平衡数据集。在实际应用中,我们可以根据具体数据集的特点和需求,选择合适的过采样方法。希望本文能帮助你理解并掌握ADASYN的使用方法,为你的机器学习项目提供支持。如果你有任何问题或建议,欢迎在评论区留言!

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

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

相关文章

汇编原理(二)

寄存器:所有寄存器都是16位(0-15),可以存放两个字节 AX,BX,CX,DX存放一般性数据,称为通用寄存器 AX的逻辑结构。最大存放的数据为2的16次方减1。可分为AH和AL,兼容8位寄存器。 字:1word 2Byte…

JVM学习-Class文件结构②

访问标识(access_flag) 在常量池后,紧跟着访问标记,标记使用两个字节表示,用于识别一些类或接口层次的访问信息,包括这个Class是类还是接口,是否定义为public类型,是否定义为abstract类型,如果…

健身房会员管理系统服务预约小程序的作用是什么

拥有完美身材/减肥/锻炼等前往健身房是个不错的选择,商家生意开展需要吸引同城客户并转化,客户也有自己的判断需要找到更全面的场地;完善客户消费流程利于品牌发展和不断获客转化。 运用【雨科】平台搭建健身房管理系统小程序,多…

MySQL事务篇1:事物的四大特性(ACID)、三类数据读取问题与隔离级别

一、什么是事务? MySQL的事务(Transaction)是一组由数据库管理系统(DBMS)执行的一个或多个SQL语句的集合,这些SQL语句作为一个单独的工作单元执行。事务的主要目的是确保数据库的一致性和完整性&#xff0c…

蓝桥杯2023(十四届)省赛——飞机降落(双马尾DFS)

飞机降落(DFS) 蓝桥杯2023年第十四届省赛真题-飞机降落 - C语言网 (dotcpp.com) 一开始我是真的没想到用DFS做,我还在想用什么策略排序呢。需要再刷!!! 双马尾的意思其实是刷了两次... 一刷&#xff1a…

leecode 637 二叉树的层平均值

leetcode 二叉树相关-层序遍历专题 二叉树的层序遍历一般来说,我们是利用队列来实现的,先把根节点入队,然后在出队后将其对应的子节点入队,然后往复此种操作。相比于二叉树的遍历递归,层序遍历比较简单,有…

CHI协议_1

作者:someone链接:https://www.zhihu.com/question/304259901/answer/3455648666来源。 1. AMBA CHI简介 一致性总线接口(CHI)是AXI一致性扩展(ACE)协议的演进。它是Arm的AMBA总线的一部分。AMBA是一种免…

美团Java社招面试题真题,最新面试题

如何处理Java中的内存泄露? 1、识别泄露: 使用内存分析工具(如Eclipse Memory Analyzer Tool、VisualVM)来识别内存泄露的源头。 2、代码审查: 定期进行代码审查,关注静态集合类属性和监听器注册等常见内…

VueJS ReactJS实现AI问答小助手(2)——流式TTS文字转实时语音播放

TTS(Text-to-speech)文字转语音使用的是阿里云的服务,文档地址: https://help.aliyun.com/zh/isi/developer-reference/streaming-text-tts-wss 文档只给出了一些配置项的说明,以及java端的代码示例,但没有web端的。所以这篇笔记可以给web开发者参考。 首先,AI答复的消息…

.NET File Upload

VS2022 .NET8 &#x1f4be;基础上传示例 view {ViewData["Title"] "File Upload"; }<h1>ViewData["Title"]</h1><form method"post" enctype"multipart/form-data" action"/Home/UploadFile"…

Android 系统日志(Log) JNI实现流程源码分析

1、JNI概述 Java Native Interface (JNI) 是一种编程框架&#xff0c;使得Java代码能够与用其他编程语言&#xff08;如C和C&#xff09;编写的本地代码进行交互。JNI允许Java代码调用本地代码的函数&#xff0c;也允许本地代码调用Java代码的函数。下面是对JNI机制的详细概述…

【单片机】STM32F070F6P6 开发指南(一)STM32建立HAL工程

文章目录 一、基础入门二、工程初步建立三、HSE 和 LSE 时钟源设置四、时钟系统&#xff08;时钟树&#xff09;配置五、GPIO 功能引脚配置六、配置 Debug 选项七、生成工程源码八、生成工程源码九、用户程序下载 一、基础入门 f0 pack下载&#xff1a; https://www.keil.arm…

【OpenCV 基础知识 19】拉普拉斯变换

功能&#xff1a; cvLaplace 是计算图像的 Laplacian 变换 &#xff0c;是Intel开源项目opencv中的函数 函数形式&#xff1a; void cvLaplace( const CvArr* src, CvArr* dst, int aperture_size3 ); 参数列表&#xff1a; Src 输入图像. Dst 输出图像. aperture_size算子内…

离线初始化k8s

导出和导入所有必要的 Kubernetes 镜像&#xff0c;使用阿里云作为源。 在能访问外网的机器上拉取镜像 首先&#xff0c;在有外网访问的机器上运行以下命令来拉取所有 Kubernetes v1.29.5 版本需要的镜像&#xff1a; kubeadm config images pull --image-repository regist…

大模型应用:基于Golang实现GPT模型API调用

1.背景 当前OpenAI提供了开放接口&#xff0c;支持通过api的方式调用LLM进行文本推理、图片生成等能力&#xff0c;但目前官方只提供了Python SDK。为了后续更方便集成和应用&#xff0c;可以采用Golang对核心推理调用接口进行封装&#xff0c;提供模型调用能力。 2.相关准备…

Spark运行模式详解

Spark概述 Spark 可以在多种不同的运行模式下执行&#xff0c;每种模式都有其自身的特点和适用场景。 部署Spark集群大体上分为两种模式&#xff1a;单机模式与集群模式。大多数分布式框架都支持单机模式&#xff0c;方便开发者调试框架的运行环境。但是在生产环境中&#xff…

软件web化的趋势

引言 在信息技术飞速发展的今天&#xff0c;软件Web化已成为一个不可忽视的趋势。所谓软件Web化&#xff0c;即将传统的桌面应用软件转变为基于Web的应用程序&#xff0c;使用户能够通过浏览器进行访问和使用。传统软件通常需要在用户的计算机上进行安装和运行&#xff0c;而W…

Cadence OrCAD学习笔记(3)capture使用技巧_1

本期介绍capture的一些使用技巧。资料来源于小破站up主硬小二 1、导出像Visio规格的图纸 2、全局修改元件属性 然后保存、关闭即可。 3、导出BOM 4、导出网表 5、元件自动编号 6、capture软件和allegro关联 7、新建原理图symbol 以上为添加封装库的路径 如果要创建多部分的sy…

积累|新质生产力之地方发展的不同赛道

“不要搞一种模式”。任何事物都是共性和个性的统一&#xff0c;也就是矛盾普遍性和特殊性的统一。就发展新质生产力而言&#xff0c;既要遵循新质生产力的普遍规律和共同特征&#xff0c;又要充分考虑各地、各产业的实际情况和特殊性&#xff0c;准确把握共性与个性。 总述 …

神器EasyRecovery2024中文电脑版下载!让数据恢复不再难

在数字化时代&#xff0c;数据就是我们的财富。无论是重要的工作报告&#xff0c;还是那些珍贵的生活瞬间照片&#xff0c;或是我们与朋友间的聊天记录&#xff0c;都储存在我们的电脑或手机中。然而&#xff0c;有时候&#xff0c;意外总是突如其来&#xff0c;电脑突然崩溃&a…