机器学习中采样哪些事

在机器学习中采样主要分为两种,过采样(Oversample)和欠采样(Undersample)。过采样就是通过增加少数类样本的数量来平衡数据集。而欠采样就是通过减少多数类样本的数量来平衡数据集。

通常在进行采样中以下是几种常用的方法:

1. 随机采样

随机采样适用于过采样和欠采样。其操作方法就是随机复制增加少数类样本或者随机增加删除减少多数类样本。

下面是一个代码例子:

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.over_sampling import RandomOverSampler
from imblearn.under_sampling import RandomUnderSampler#创建一个不平衡的分类数据集
X, y = make_classification(n_classes=2, class_sep=2,weights=[0.1, 0.9], n_informative=3, n_redundant=1,flip_y=0,n_features=20, n_clusters_per_class=1, n_samples=1000, random_state=10)df = pd.DataFrame(X)
df['target'] = y
# 查看类别分布
print("Original dataset shape:", df['target'].value_counts())# 随机过采样
ros = RandomOverSampler(random_state=42)
X_resampled_ros, y_resampled_ros = ros.fit_resample(X, y)
df_ros = pd.DataFrame(X_resampled_ros)
df_ros['target'] = y_resampled_ros
# 查看过采样后的类别分布
print("Resampled dataset shape (Oversampling):", df_ros['target'].value_counts())#随机负采样
rus = RandomUnderSampler(random_state=42)
X_resampled_rus, y_resampled_rus = rus.fit_resample(X, y)
df_rus = pd.DataFrame(X_resampled_rus)
df_rus['target'] = y_resampled_rus
print("Resampled dataset shape (Undersampling):", df_rus['target'].value_counts())

2.SMOTE

通过在少数类样本之间插值生成合成样本,通常用于过采样。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.over_sampling import SMOTE# 省略df
#......
# 过采样
smote = SMOTE(random_state=42)X_resampled_smote, y_resampled_smote = smote.fit_resample(X, y)
df_smote = pd.DataFrame(X_resampled_smote)
df_smote['target'] = y_resampled_smote
print("Resampled dataset shape (SMOTE):", df_smote['target'].value_counts())

3.Tomek Links

这种方法是通过删除多数类中靠近少数类的边界样本来实现欠采样。工作原理如下:

计算最近邻:对于每个样本,计算其最近邻样本。

识别 Tomek Links:如果一个多数类样本的最近邻是一个少数类样本,那么这两个样本构成一个 Tomek Link。

移除多数类样本:从数据集中移除那些构成 Tomek Link 的多数类样本。

重复上述步骤:直到没有更多的 Tomek Links 

Tomek Links通过移除边界上的多数类样本,可以减少多数类样本的数量,同时尽量保留数据集的结构信息。适用于处理那些多数类样本与少数类样本紧密相连的情况。但是同时Tomek Links不能完全平衡数据集,因为移除的样本数量有限。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.under_sampling import TomekLinks# 初始化 TomekLinks
tomek = TomekLinks()# 欠采样
X_resampled_tomek, y_resampled_tomek = tomek.fit_resample(X, y)df_tomek = pd.DataFrame(X_resampled_tomek)
df_tomek['target'] = y_resampled_tomek
print("Resampled dataset shape (Tomek Links):", df_tomek['target'].value_counts())

4.NearMiss

NearMiss 是一种基于最近邻的欠采样方法,用于处理不平衡数据集。它的核心思想是通过移除多数类中与少数类样本距离较近的样本,或者移除多数类中距离最远的样本,从而减少多数类的样本数量。NearMiss 提供了多种策略来选择需要移除的样本。

import numpy as np
import pandas as pd
from sklearn.datasets import make_classification
from imblearn.under_sampling import NearMiss# df#NearMiss 提供了三种策略:
#版本 1:移除多数类中与少数类样本距离最近的样本。
#版本 2:移除多数类中与少数类样本距离最远的样本。
#版本 3:移除多数类中距离最远的样本,但不考虑少数类样本。# 初始化 NearMiss,选择版本 1
nearmiss = NearMiss(version=1, random_state=42)X_resampled_nearmiss, y_resampled_nearmiss = nearmiss.fit_resample(X, y)df_nearmiss = pd.DataFrame(X_resampled_nearmiss)
df_nearmiss['target'] = y_resampled_nearmiss
print("Resampled dataset shape (NearMiss Version 1):", df_nearmiss['target'].value_counts())

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

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

相关文章

fastadmin 数据导出,设置excel行高和限制图片大小

fastadmin默认导出图片全部都再一块,而且不在单元格里 话不多说,上代码 修改文件的路径: /public/assets/js/require-table.js exportOptions: {fileName: export_ Moment().format("YYYY-MM-DD"),preventInjection: false,mso…

鸿蒙OSUniApp开发的商品详情展示页面(鸿蒙系统适配版)#三方框架 #Uniapp

使用UniApp开发的商品详情展示页面(鸿蒙系统适配版) 前言 随着移动电商的普及,一个体验良好的商品详情页对于提高用户转化率至关重要。本文将分享我在使用UniApp开发商品详情页时的实践经验,并特别关注如何适配鸿蒙系统&#xf…

redis中key的过期和淘汰

一、过期(redis主动删除) 设置了ttl过期时间的key,在ttl时间到的时候redis会删除过期的key。但是redis是惰性过期。惰性过期:redis并不会立即删除过期的key,而是会在获取key的时候判断key是否过期,如果发现…

Qwen3 - 0.6B与Bert文本分类实验:深度见解与性能剖析

Changelog [25/04/28] 新增Qwen3-0.6B在Ag_news数据集Zero-Shot的效果。新增Qwen3-0.6B线性层分类方法的效果。调整Bert训练参数(epoch、eval_steps),以实现更细致的观察,避免严重过拟合的情况。 TODO: 利用Qwen3-0.6…

HTML应用指南:利用POST请求获取全国京东快递服务网点位置信息

京东快递作为中国领先的智能供应链与综合物流服务提供商,自2007年成立以来,始终致力于通过技术创新与高效运营,为客户提供安全、可靠、快速的物流解决方案。京东快递依托京东集团的强大资源支持,凭借其自营仓储、干线运输、末端配送一体化的物流网络,在激烈的市场竞争中脱…

js中eval的用法风险与替代方案全面解析

1. 前言 在 JavaScript 里,eval是一个既强大又充满争议的函数。它为开发者提供了一种动态执行字符串代码的能力,在某些特定场景下能发挥出独特的作用。然而,由于其特殊的运行机制,也带来了诸多潜在的风险和问题。本文将深入探讨e…

antd树结构

一、场景实现 1、左侧为查询条件,查询条件为树和多选。点击查询条件在右上方显示搜索条件的内容,右上方查询条件 tag 删除后,左侧条件也对应删除。 2、树结构:默认第一层下所有节点都展开。 1、页面效果图 2、查询效果图 二、前端…

Jenkins 安装与配置指南

Jenkins 安装与配置指南(MD 示例) markdown Jenkins 安装与配置指南 ## 一、环境准备 1. **系统要求** - 操作系统:Linux/macOS/Windows - Java 版本:JDK 8 或更高(建议 JDK 11)2. **安装方式** - **L…

[Linux性能优化] 线程卡顿优化。Linux加入USB(HID)热插拔线程占用CPU优化。Linux中CPU使用率过高优化

文章目录 [Linux性能优化] 线程卡顿优化。0、省流版本一、问题定位:CPU 资源分析二、线程卡顿现场复现线程优化前图片 三、线程卡顿优化方向1.如果是轮询方式2.如果是事件驱动方式 四、修改方式线程优化后图片 [Linux性能优化] 线程卡顿优化。 0、省流版本 如果采…

ip与mac-数据包传输过程学习

你管这破玩意叫网络? 内容来源于飞天闪客,以前没有学习过网络的相关基础知识,只会去瞎设置,现在终于是弄明白了。 多台电脑之间想要通信,可以直接通过一条网线进行连接。但是随着网线的增加,这个就会比较…

数值分析知识重构

数值分析知识重构 一 Question 请构造一下数值分析中的误差概念以及每一个具体数值方法的误差是如何估计的? 二 Question 已知 n 1 n1 n1个数据点 ( x i , y i ) , i 0 , 1 , ⋯ , n (x_i,y_i),i0,1,\cdots,n (xi​,yi​),i0,1,⋯,n,请使用多种方法建立数据之间…

使用 Qt QGraphicsView/QGraphicsScene 绘制色轮

使用 Qt QGraphicsView/QGraphicsScene 绘制色轮 本文介绍如何在 Qt 中利用 QGraphicsView 和 QGraphicsScene 实现基础圆形绘制,以及进阶的色轮(Color Wheel)效果。 色轮是色彩选择器的常见控件,广泛应用于图形设计、绘画和 UI …

移除链表元素数据结构oj题(力扣题206)

目录 题目描述: 题目解读(分析) 解决代码 题目描述: 给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val val 的节点,并返回 新的头节点 。 题目解读(分析&#…

GLPK(GNU线性规划工具包)中建模语言MathProg的使用

GNU MathProg是一种用于描述线性数学规划模型的建模语言。用GNU MathProg语言编写的模型描述由一组语句和数据块组成。 在MathProg中,模型以集合、参数、变量、约束和目标(sets, parameters, variables, constraints, objectives称为模型对象)的形式进行描述。 在Ma…

《Python星球日记》 第77天:模型部署与总结

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 目录 一、模型部署技术1. 模型文件导出不同模型格式对比2. 使用Flask构建RESTful API3. 使用FastAPI构建高性能API4. 部署优化与最佳实践二、部署架构…

【JavaWeb】MySQL(准备篇)

1 MySQL安装 1.1 解压 下载完成后我们得到的是一个压缩包(所有文件均在文末安装包中),将其解压,我们就可以得到MySQL 8.0.34 的软件本体了(就是一个文件夹),我们可以把它放在你想安装的位置 。 1.2 配置 1.2.1 配置…

国产数据库工具突围:SQLynx如何解决Navicat的三大痛点?深度体验报告

引言:Navicat的"中国困境" 当开发者面对达梦数据库的存储过程调试,或是在人大金仓中处理复杂查询时,Navicat突然变得力不从心——这不是个例。 真实痛点:某政务系统迁移至OceanBase后,开发团队发现Navicat无…

ETL数据集成产品选型需要关注哪些方面?

ETL(Extract,Transform,Load)工具作为数据仓库和数据分析流程中的关键环节,其选型对于企业的数据战略实施有着深远的影响。谷云科技在 ETL 领域耕耘多年,通过自身产品的实践应用,对 ETL 产品选型…

数据结构实验10.1:内部排序的基本运算

文章目录 一,实验目的二,实验内容1. 数据生成与初始化2. 排序算法实现(1)直接插入排序(2)二分插入排序(3)希尔排序(4)冒泡排序(5)快速…

从秒开到丝滑体验!WebAssembly助力ZKmall商城重构 B2B2C 商城性能基线

在 B2B2C 电商领域,用户对页面加载速度与交互流畅度的要求日益严苛。传统 Web 技术在处理复杂业务逻辑、海量数据渲染时,常出现卡顿、延迟等问题,导致用户流失。ZKmall 商城创新性地引入 WebAssembly(简称 Wasm)技术&a…