python imblearn 处理样本不平衡,svm验证

SMOTE 1.安装imblearn库 在终端pip install imbalanced-learn https://zhuanlan.zhihu.com/p/95020088 2.预备知识: 1)向量代数: 对于点x1和x2,如果λ∈[0,1],λ x1 + ( 1 − λ ) x2 肯定在点x1和x2的连线上。 2)SMOTE算法 1、对于其中正类的样本x,找到它在正类的k个近邻,k可以自己设定,一般为5; 2、k个近邻中随机选一个样本 x_近邻 3、生成一个0~1之间的随机数rand(0, 1),用下式合 阅读详情

参考地址:https://blog.youkuaiyun.com/tonydz0523/article/details/84325823

1.样本分布不均的解决方法:

1.1 .过采样 通过增加分类中样本较少的类别的采样数量来实现平衡,最直接的方法是简单复制小样本数据时加入随机噪声、干扰数据等。
1.2 .欠采样(下采样) 通过减少分类中多数类样本的数量来实现样本均衡,最直接的方法是随机去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类中的一些重要信息。
1.3 .设置权重 对不同样本数量的类别赋予不同的权重(通常会设置为与样本量成反比 n samples / (n class * n bincount(y) )
1.4 .集成思想 每次生成训练集时,使用全量小样本,同时从大样本量中随机抽取等量数据量,反复多次会得到多个训练模型。最后在应用时,采用组合(例如投票、加权投票等)产生分类预测结果。

2.python处理

2.1 生成数据集
from collections import Counter
from sklearn.datasets import  make_classification
x,y = make_classification(n_samples=100000,n_features=10,n_informative=2,n_redundant=2, n_repeated=0, n_classes=3, n_clusters_per_class=1, weights=[0.89,0.1,0.01], class_sep=0.3,random_state=2020)
Counter(y)
Counter({0: 88486, 1: 10211, 2: 1303})
2.2 RandomOverSample(过采样)
使用RandomOverSampler从少数类的样本中进行随机采样来增加新的样本使各个分类均衡
from imblearn.over_sampling import RandomOverSampler
x_resampled,y_resampled = RandomOverSampler(random_state=0).fit_sample(x,y)
Counter(y_resampled)
Counter({0: 88486, 1: 88486, 2: 88486})
2.3 SMOTE(过采样)
对于少数类样本a, 随机选择一个最近邻的样本b, 然后从a与b的连线上随机选取一个点c作为新的少数类样本
from imblearn.over_sampling import SMOTE
x_resampled,y_resampled = SMOTE().fit_sample(x,y)
Counter(y_resampled)
Counter({0: 88486, 1: 88486, 2: 88486})
2.4 ADASYM(过采样)
ADASYN: 关注的是在那些基于K最近邻分类器被错误分类的原始样本附近生成新的少数类样本
from imblearn.over_sampling import ADASYN
x_resampled,y_resampled = ADASYN().fit_sample(x,y)
Counter(y_resampled)
Counter({0: 88486, 1: 88198, 2: 88138})
2.5 RandomUnderSampler(下采样)
andomUnderSampler函数是一种快速并十分简单的方式来平衡各个类别的数据: 随机选取数据的子集.
from imblearn.under_sampling import RandomUnderSampler
x_resampled,y_resampled = RandomUnderSampler().fit_sample(x,y)
Counter(y_resampled)
Counter({0: 1303, 1: 1303, 2: 1303})
2.6 设置权重(sklearn SVM举例)
class_weight : {dict, 'balanced'}, optional
    Set the parameter C of class i to class_weight[i]*C for
    SVC. If not given, all classes are supposed to have
    weight one.
    The "balanced" mode uses the values of y to automatically adjust
    weights inversely proportional to class frequencies in the input data
    as ``n_samples / (n_classes * np.bincount(y))``

    
def __init__(self, C=1.0, kernel='rbf', degree=3, gamma='scale',
             coef0=0.0, shrinking=True, probability=False,
             tol=1e-3, cache_size=200, class_weight=None,
             verbose=False, max_iter=-1, decision_function_shape='ovr',
             break_ties=False,
             random_state=None):
    
estimator = svm.SVC(max_iter=1,probability=True,class_weight='balanced',random_state=1234) ##此处还可以采用网格寻参
3. 测试样本不均衡对svm的影响
from sklearn import svm
clf = svm.SVC(class_weight='balanced',max_iter=10000)
from collections import Counter
from sklearn.datasets import  make_classification
x,y = make_classification(n_samples=10000,n_features=10,n_informative=2,n_redundant=2, n_repeated=0, n_classes=2, n_clusters_per_class=1, weights=[0.999,0.001], class_sep=0.3,random_state=2020)
Counter(y)
Counter({0: 9945, 1: 55})
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
x_stand = StandardScaler().fit_transform(x)
x_train,x_test,y_train,y_test = train_test_split(x_stand,y,test_size=0.2)
clf.fit(x_train,y_train)
pred = clf.predict(x_test)
pred
array([0, 1, 0, ..., 0, 0, 0])
y_test
array([0, 0, 0, ..., 0, 0, 0])
from sklearn.metrics import accuracy_score
accuracy_score(pred,y_test)
0.911
from imblearn.over_sampling import RandomOverSampler
x_resampled,y_resampled = RandomOverSampler(random_state=0).fit_sample(x,y)
Counter(y_resampled)
Counter({0: 9945, 1: 9945})
x_stand = StandardScaler().fit_transform(x_resampled)
x_train,x_test,y_train,y_test = train_test_split(x_stand,y_resampled,test_size=0.2)
clf.fit(x_train,y_train)
pred = clf.predict(x_test)
pred
array([0, 1, 0, ..., 1, 1, 0])
accuracy_score(pred,y_test)
0.9595274007038713
SVM中的样本不均衡问题 文章目录1.重要参数class_weight2.SVC的模型评估指标2.1混淆矩阵(Confusion Matrix)2.1.1模型整体效果:准确率(Accuracy)2.1.2捕捉少数类:精确度(Precision)2.1.3捕捉少数类:召回率(Recall)2.1.4调和平均数F1 measure2.1.5假负率(False Negative Rate)2.1.6判断多数类的考量:特异度(Sp... 阅读详情

相关推荐

imblearn实战指南:解决类别不平衡的工业级采样策略

类别不平衡是机器学习中影响模型泛化能力的关键挑战,尤其在金融风控、医疗诊断和工业质检等正样本稀疏场景下,传统准确率指标失效,F1-score与AUC-ROC成为核心评估标准。其本质在于少数类样本在特征空间分布稀疏、边界模糊,导致模型偏向多数类决策。imbalanced-learn(imblearn)作为scikit-learn生态的专用扩展,提供SMOTE、Tomek Links、SMOTETomek等经过工程验证的采样算法,支持混合特征处理、噪声清理与Pipeline无缝集成。本文聚焦真实项目中的采样时机

xpmwgcwm的博客 346

数据分析学习之:如何均衡样本——使用 imblearn 库实现重采样(resampling),过采样(over-sampling) + 欠采样(under-sampling))

文章目录什么是样本不平衡如何平衡数据集的样本——重采样欠采样(也叫 undersampling)将大的样本集的数据全部筛选出来通过随机采样操作采样固定个数的样本留下和少样本的样本集拼合成最终的样本集样本均衡了过采样(over-sampling)通过 imblearn 库扩充小的样本集样本均衡了 什么是样本不平衡 import pandas as pd import numpy as np import seaborn as sns values = {"姓名":["A","B","C","D","E",

qq_42902997的博客 3539

机器学习中类别不平衡的本质与Python实战路径

类别不平衡是机器学习中普遍存在的基础性挑战,其本质并非数据量差异,而是业务价值分布的不对称性与样本代表性不足的叠加。从原理看,它导致传统指标(如准确率)失效,迫使模型优化方向偏离真实业务目标;技术价值在于通过数据治理、采样干预、算法适配和评估校准四层协同,重建模型对少数类的敏感性与鲁棒性;典型应用场景涵盖金融反欺诈、医疗辅助诊断、工业故障预警及电商风控等高代价错判领域。本文聚焦用Python工具链(imblearn/scikit-learn/XGBoost)将业务问题转化为可验证建模动作,深入解析Tomek

com_xpp的专栏 464

sklearn_SVM:处理样本不平衡问题__菜菜视频学习笔记

使用ROC与AUC对支持向量机软间隔不平衡数据的处理,ROC曲线使用假正率与召回率作为两轴通过寻找最佳阈值来使得软间隔分类效果最佳

chenburong2021的博客 1985

机器学习不平衡数据处理:重采样技术与实战

在机器学习分类任务中,数据类别不平衡是常见挑战,表现为多数类样本远多于少数类(如欺诈检测、罕见病诊断)。处理不平衡数据的关键技术包括重采样(过采样与下采样)、代价敏感学习和集成方法。其中重采样通过调整样本分布改善模型对少数类的识别能力,SMOTE等算法能合成新样本,而Tomek Links可清理类间边界。结合k折交叉验证和管道化封装,能有效避免数据泄露并提升模型鲁棒性。这些技术在金融风控、医疗诊断和工业质检等领域有广泛应用,帮助解决分类器偏向多数类的问题。

circularr9834的博客 409

类别不平衡处理:从SMOTE到类权重的实战指南

类别不平衡是机器学习在真实业务场景中普遍面临的挑战,指正负样本数量严重失衡(如欺诈检测中0.17%的少数类),导致传统模型优化目标失效、准确率指标失真。其本质源于数据分布偏斜与算法损失函数默认等权之间的矛盾,需通过重采样或损失函数调整来校准模型关注重点。SMOTE通过特征空间线性插值合成新样本,提升少数类覆盖度与泛化性;类权重则直接放大少数类误判代价,在不修改数据前提下引导模型学习方向。二者分别适用于特征局部可分性强、或数据敏感/不可篡改的场景。典型应用包括金融风控、医疗诊断与工业质检,核心目标是在可控误报

abxlep7702的博客 443

SMOTE处理数据非均衡——安装imbearn库

imblearn------里边包含SMOTE函数 import imblearn imblearn是专门用来处理不平衡数据集的库,在处理样本不均衡问题中性能高过sklearn很多 imblearn里面也是一个个的类,也需要进行实例化,fit拟合,和sklearn用法相似 安装过程记录: pip install imblearn(不知道是因为网络问题还是其他出错) 改用conda 安装 cond...

qq_35690171的博客 3455

金融风控中的不平衡数据处理实战与优化策略

在机器学习领域,类别不平衡问题是影响模型性能的关键因素之一,尤其在金融风控、医疗诊断等高风险场景中更为突出。其核心原理在于通过数据重采样或算法调整,使模型能够更好地识别少数类样本。从技术价值看,有效处理不平衡数据能显著提升模型的召回率和F1-score,避免陷入准确率陷阱。常用的方法包括SMOTE过采样、随机欠采样以及代价敏感学习等,这些技术在信用评分、欺诈检测等场景中广泛应用。本文以金融风控中的信用违约预测为例,详细解析了数据预处理、SMOTEENN混合采样等实战技巧,并对比了不同方法在F1-score和

weixin_33739646的博客 137

特征锦囊:如何在Python中处理不平衡数据

特征锦囊:如何在Python中处理不平衡数据???? Index1、到底什么是不平衡数据2、处理不平衡数据的理论方法3、Python里有什么包可以处理不平衡样本4、Python中具体如何...

abcdefg90876的博客 1378

不平衡数据处理实战:从信贷风控到医疗诊断的四维攻坚法

类别不平衡是机器学习中普遍存在的基础性挑战,其本质在于模型在梯度更新阶段因少数类样本贡献微弱而产生学习偏差。理解这一原理,是突破准确率陷阱、避免业务落地失败的前提。技术价值体现在提升关键指标如召回率、KS值与F1分数,支撑高风险场景下的可信决策。典型应用场景覆盖金融风控(坏账识别)、智慧医疗(罕见病筛查)和工业质检(缺陷检测)等对漏检零容忍或误报敏感的领域。本文基于17个真实项目经验,系统拆解数据层、特征层、算法层与评估层协同优化的硬核路径,重点涵盖SMOTE失效归因、Tomek Links边界锐化、Foc

abxlep7702的博客 407

不平衡数据处理:从评估陷阱到SMOTE与NearMiss实战

在机器学习中,类别不平衡(Imbalanced Data)是医疗诊断、金融风控、工业质检等关键场景的共性挑战。其本质并非数据量不足,而是模型优化目标与业务代价错配——传统准确率指标掩盖了对少数类(如欺诈、疾病、缺陷)的识别失效。理解混淆矩阵、精准率、召回率及AUC-ROC等评估原理,是构建高价值模型的前提;而SMOTE过采样、NearMiss欠采样与代价敏感学习等技术,需结合数据分布、业务成本与泛化需求协同选用。本文聚焦真实项目中的指标误用、采样泄露、阈值失准与可解释性缺失等核心痛点,提供可落地的全流程方法

jackleechina2011212的博客 495

风控ML[12] | 不平衡数据的处理方法与代码分享

印象中很久之前有位朋友说要我写一篇如何处理不平衡数据的文章,整理相关的理论与实践知识,于是乎有了今天的文章。失衡样本在我们真实世界中是十分常见的,那么我们在机器学习(ML)中使用这些失衡样...

Pysamlam的博客 1077

BMFA算法:解决不平衡数据分类的边界-少数类自适应筛选技术

不平衡数据分类是机器学习中的经典难题,特别是在医疗诊断、金融风控等实际应用场景中。其核心原理在于传统算法容易对多数类样本过拟合,导致少数类识别率低下。通过引入边界样本处理和自适应权重机制,BMFA技术能够显著提升少数类样本的召回率,这对于疾病筛查、欺诈检测等高价值应用至关重要。该算法结合自由能计算和自适应筛选机制,在保持整体分类精度的同时优化边界决策,为数据科学家提供了处理类别分布极度不平衡的有效工具。BMFA作为机器学习增强算法,具备Scikit-learn兼容接口,支持批量预测和交叉验证,适用于生物信息

weixin_34023982的博客 414

不平衡数据处理三层次实战:数据/算法/评估全链路方案

不平衡数据是指分类任务中少数类样本远少于多数类的常见现象,其本质是类别分布偏斜导致模型决策边界系统性偏向多数类。原理上,它会扭曲损失函数梯度、降低少数类梯度贡献,并使传统准确率指标失效。技术价值在于保障关键场景(如欺诈检测、疾病诊断)的业务可用性——漏判代价常远高于误判。典型应用场景涵盖金融风控、医疗筛查、工业质检和推荐系统等高风险或高成本领域。本文聚焦可落地的三层防御体系:数据层通过智能重采样(如Tomek Links、SMOTETomek)平衡分布而不失真;算法层基于业务损失设定代价敏感权重,避免简单使

turnRound 424

不平衡数据实战指南:SMOTE、XGBoost权重与PR曲线三阶优化

不平衡数据(Imbalanced Data)是机器学习在医疗诊断、金融风控、工业质检等真实场景落地的核心障碍,其本质是少数类样本稀缺导致模型评估失真与决策偏倚。解决该问题需突破Accuracy陷阱,依托数据重采样(如SMOTE)、算法级权重调节(如XGBoost的scale_pos_weight)和评估范式升级(Precision-Recall曲线)三层协同。其中,SMOTE需规避高维失效与边界污染,scale_pos_weight应基于业务成本或动态难度加权而非静态比例,而PR曲线(AUPRC)才是稀疏正

weixin_33795806的博客 345

SVM实战调参指南:从医疗影像到工业传感器的12个关键动作

支持向量机(SVM)是一种基于最大间隔原则的监督学习算法,其核心在于构造最优超平面以实现类别分离。原理上依赖核技巧映射特征空间、通过惩罚系数C平衡间隔与误分、借助gamma控制RBF核局部敏感性。技术价值体现在小样本、高维、边界清晰场景下的强泛化与可解释性优势,尤其适合医疗诊断、工业故障预警、金融风控等对召回率与决策可控性要求严苛的应用场景。本文聚焦SVM在真实项目中的落地断点——涵盖数据清洗、特征缩放、核函数选型、支持向量分析及概率校准等关键环节,深度融合scikit-learn实战经验与工业级部署规范。

weixin_30321449的博客 387

imbalanced-learn实战指南:解决类别不平衡的全链路工程方案

类别不平衡是机器学习落地中最常见的数据挑战,指正负样本数量悬殊导致模型偏向多数类、严重低估少数类(如欺诈检测、疾病诊断、缺陷识别)。其本质源于数据分布偏斜与算法优化目标(如准确率)的错配。技术上需从数据层(过采样/欠采样)、算法层(集成方法)到评估层(Precision/Recall/F1/AUC)系统应对。imbalanced-learn作为专为该问题设计的Python库,提供SMOTE、SMOTETomek、EasyEnsemble等可复现、可解释的工业级工具,显著提升少数类识别能力。本文聚焦真实场景下

weixin_30258901的博客 440

SMOTE原理与工业级实操:解决数据不平衡的工程指南

SMOTE(合成少数类过采样技术)是一种针对分类任务中类别不平衡问题的基础性数据增强方法,其核心是通过K近邻插值在特征空间内生成语义合理的合成样本,而非简单复制。它基于局部流形假设,在医疗诊断、金融风控、工业缺陷检测等高价值小样本场景中具有显著技术价值。相比随机过采样,SMOTE能提升模型对少数类的召回率与F1-score,避免因数据分布偏斜导致的指标幻觉;但其效果高度依赖特征质量、维度合理性与预处理顺序。本文聚焦SMOTE的数学直觉、参数边界、防坑实践及与标准化、Pipeline、t-SNE可视化的完整工

weixin_34161064的博客 461
上一篇: idea快速构建sbt项目,挑战全网最全最细(亲测,1分钟内可成功构建sbt)
下一篇: Sklearn 特征选择方法(Filter、Wrapper、Embedded)
小糖宝
博客等级 码龄9年 47粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值