苏州企业网站制作设计公司,做网站的软件是哪个,大渡口发布,浙江嘉兴网站建设✅作者简介#xff1a;人工智能专业本科在读#xff0c;喜欢计算机与编程#xff0c;写博客记录自己的学习历程。 #x1f34e;个人主页#xff1a;小嗷犬的个人主页 #x1f34a;个人网站#xff1a;小嗷犬的技术小站 #x1f96d;个人信条#xff1a;为天地立心人工智能专业本科在读喜欢计算机与编程写博客记录自己的学习历程。 个人主页小嗷犬的个人主页 个人网站小嗷犬的技术小站 个人信条为天地立心为生民立命为往圣继绝学为万世开太平。 本文目录 imblearn 简介imblearn 安装欠采样方法ClusterCentroidsEditedNearestNeighboursCondensedNearestNeighbourAllKNNInstanceHardnessThreshold 过采样方法SMOTESMOTE-NCSMOTENADASYNBorderlineSMOTEKMeansSMOTESVMSMOTE 组合采样方法SMOTETomekSMOTEENN imblearn 库使用示例导入库查看原始数据分布采样后的数据分布不同采样方法的可视化对比 imblearn 简介
imblearn全名为 imbalanced-learn 是一个用于处理不平衡数据集的 Python 库。在许多实际情况中数据集中的类别分布可能是不均衡的这意味着某些类别的样本数量远远超过其他类别。这可能会导致在训练机器学习模型时出现问题因为模型可能会偏向于学习多数类别。
imblearn 库提供了一系列处理不平衡数据集的方法包括
欠采样方法减少多数类别的样本以使其与少数类别相匹配。过采样方法通过生成合成样本来增加少数类别的样本数量使其与多数类别相匹配。组合采样方法结合了欠采样和过采样的技术以获得更好的平衡。
imblearn 库包含了许多常用的不平衡数据处理算法例如SMOTESynthetic Minority Over-sampling Technique、Tomek Links、RandomUnderSampler、RandomOverSampler 等等。
这个库对于处理各种类型的不平衡数据问题非常有用可以提升在这类数据上训练模型的性能。 imblearn 安装
imblearn 库可以通过 pip 安装
pip install imblearn欠采样方法
欠采样方法通过减少多数类别的样本数量来平衡数据集。这些方法通常用于处理大型数据集因为它们可以减少数据集的大小。
下面我们将介绍 imblearn 库中的一些常用欠采样方法。
ClusterCentroids
ClusterCentroids 是一种欠采样方法它通过聚类算法来减少多数类别的样本数量。它通过将多数类别的样本聚类为多个簇然后对每个簇选择其中心作为新的样本来实现。
具体来说ClusterCentroids 采取以下步骤
将多数类别的样本分成几个簇clusters。对于每个簇选择其中心点作为代表样本。最终的训练集将包含所有少数类别样本以及选定的多数类别样本中心点。
EditedNearestNeighbours
EditedNearestNeighbours 简称 ENN是一种欠采样方法它通过删除多数类别中的异常值来减少多数类别的样本数量。它通过以下步骤实现
对于每一个多数类别的样本找到它的 k 个最近邻居根据指定的距离度量。如果多数类别的样本的大多数最近邻居属于与它不同的类别即多数类别样本的大多数邻居属于少数类别则将该样本移除。
CondensedNearestNeighbour
CondensedNearestNeighbour 是一种欠采样方法它通过选择多数类别样本的子集来减少多数类别的样本数量。它通过以下步骤实现
将少数类别的样本全部保留在训练集中。逐一考察多数类别的样本。对于每一个多数类别的样本找到它的k个最近邻居根据指定的距离度量。如果多数类别的样本能够被少数类别样本所代表即该多数类别样本的最近邻居中存在少数类别样本则将该多数类别样本移除。
AllKNN
AllKNN 是一种欠采样方法它在执行时会多次应用 ENNEdited Nearest Neighbours算法并在每次迭代时逐步增加最近邻的数量。
AllKNN 通过多次应用 ENN并逐步增加最近邻的数量可以更加彻底地清除位于类别边界附近的噪声样本。
InstanceHardnessThreshold
InstanceHardnessThreshold 是一种欠采样方法它通过计算每个样本的难度分数来减少多数类别的样本数量。它通过以下步骤实现
计算多数类别中每个样本的难度分数。剔除难度分数低于指定阈值的样本。将剩余样本与少数类别的样本组合成新的训练集。 过采样方法
过采样方法通过生成合成样本来增加少数类别的样本数量使其与多数类别相匹配。这些方法通常用于处理小型数据集因为它们可以增加数据集的大小。
下面我们将介绍 imblearn 库中的一些常用过采样方法。
SMOTE
SMOTESynthetic Minority Over-sampling Technique是一种过采样方法它通过生成合成样本来增加少数类别的样本数量使其与多数类别相匹配。
SMOTE 的原理基于对少数类样本的插值。具体而言它首先随机选择一个少数类样本作为起始点然后从该样本的近邻中随机选择一个样本作为参考点。然后SMOTE 通过在这两个样本之间的线段上生成新的合成样本来增加数据集的样本数量。
SMOTE-NC
SMOTE-NCSMOTE for Nominal and Continuous features是一种用于处理同时包含数值和分类特征的数据集的过采样方法。它是对传统的 SMOTE 算法的扩展能够处理同时存在数值和分类特征的情况但不适用于仅包含分类特征的数据集。
SMOTE-NC 的原理与 SMOTE 类似但在生成合成样本时有所不同。它的生成过程如下
对于选定的起始点和参考点计算它们之间的差距得到一个向量。将连续特征数值特征的差距乘以一个随机数得到新样本的位置。这一步与传统的 SMOTE 相同。对于分类特征随机选择起始点或参考点的特征值作为新合成样本的特征值。对于连续特征和分类特征分别使用插值和随机选择的方式来生成新样本的特征值。
通过这种方式SMOTE-NC 能够处理同时包含数值和分类特征的数据集并生成新的合成样本来增加少数类样本的数量。这样可以在平衡数据集的同时保持数值和分类特征的一致性。
SMOTEN
SMOTENSynthetic Minority Over-sampling Technique for Nominal是一种专门针对分类特征的过采样方法用于解决类别不平衡问题。它是对 SMOTE 算法的扩展适用于仅包含分类特征的数据集。
SMOTEN 的原理与 SMOTE 类似但在生成合成样本时有所不同。它的生成过程如下
对于选定的起始点和参考点计算它们之间的差距得到一个向量。对于每个分类特征统计起始点和参考点之间相应特征的唯一值类别的频率。根据特征的频率确定新样本的位置。具体而言对于每个分类特征随机选择一个起始点或参考点的类别并在该类别中随机选择一个值作为新合成样本的特征值。对于连续特征采用传统的 SMOTE 方式通过在差距向量上乘以一个随机数确定新样本的位置并使用插值来生成新样本的特征值。
ADASYN
ADASYNAdaptive Synthetic是一种基于自适应合成的过采样算法。它与 SMOTE 方法相似但根据类别的局部分布估计生成不同数量的样本。
ADASYN 根据样本之间的差距计算每个样本的密度因子。密度因子表示该样本周围少数类样本的密度。较低的密度因子表示该样本所属的区域缺乏少数类样本而较高的密度因子表示该样本周围有更多的少数类样本。
BorderlineSMOTE
BorderlineSMOTE边界 SMOTE是一种过采样算法是对原始 SMOTE 算法的改进和扩展。它能够检测并利用边界样本生成新的合成样本以解决类别不平衡问题。
BorderlineSMOTE 在 SMOTE 算法的基础上进行了改进通过识别边界样本来更有针对性地生成新的合成样本。边界样本是指那些位于多数类样本和少数类样本之间的样本它们往往是难以分类的样本。通过识别并处理这些边界样本BorderlineSMOTE 能够提高分类器对难以分类样本的识别能力。
KMeansSMOTE
KMeansSMOTE 的关键在于使用 KMeans 聚类将数据样本划分为不同的簇并通过识别边界样本来有针对性地进行合成样本的生成。这种方法可以提高合成样本的多样性和真实性因为它仅在边界样本周围进行过采样而不是在整个少数类样本集上进行。
SVMSMOTE
SVMSMOTE 是一种基于 SMOTE 算法的变体其特点是利用支持向量机SVM算法来检测用于生成新的合成样本的样本。通过将数据集中的少数类样本划分为支持向量和非支持向量SVMSMOTE 能够更准确地选择样本进行合成。对于每个少数类支持向量它选择其最近邻中的一个作为参考点并通过计算其与参考点之间的差距来生成新的合成样本。 组合采样方法
组合采样方法结合了欠采样和过采样的技术以获得更好的平衡。
下面我们将介绍 imblearn 库中的一些常用组合采样方法。
SMOTETomek
SMOTETomek 是一种组合采样方法它结合了 SMOTE 和 Tomek Links 算法。Tomek Links 是一种欠采样方法它通过删除多数类别样本和少数类别样本之间的边界样本来减少多数类别的样本数量。
SMOTETomek 通过结合 SMOTE 和 Tomek Links 算法能够同时处理多数类别和少数类别的样本以获得更好的平衡。
SMOTEENN
SMOTEENN 是一种组合采样方法它结合了 SMOTE 和 ENN 算法。
相比于 SMOTETomek由于 SMOTEENN 结合了 ENN 算法因此它能够更容易地清除位于类别边界附近的噪声样本。 imblearn 库使用示例
下面我们将通过一个示例来演示 imblearn 库的使用。
导入库
首先我们需要导入一些需要用到的库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as snsfrom sklearn.datasets import load_breast_cancer # sklearn 乳腺癌数据集
from imblearn.under_sampling import ClusterCentroids, EditedNearestNeighbours
from imblearn.over_sampling import SMOTE, ADASYN
from imblearn.combine import SMOTEENN, SMOTETomek查看原始数据分布
我们使用 sklearn 自带的乳腺癌数据集作为示例数据集。首先我们导入数据集并查看数据集的基本信息
data load_breast_cancer()X data.data
y data.targetprint(f类别为 0 的样本数: {X[y 0].shape[0]}, 类别为 1 的样本数: {X[y 1].shape[0]})sns.set_style(darkgrid)
sns.scatterplot(datadata, xX[:, 0], yX[:, 1], huey)
plt.xlabel(f{data.feature_names[0]})
plt.ylabel(f{data.feature_names[1]})
plt.title(Original)
plt.show()输出结果如下
类别为 0 的样本数: 212, 类别为 1 的样本数: 357采样后的数据分布
接下来我们使用 imblearn 库中的一些采样方法来处理数据集以获得更好的平衡。
data load_breast_cancer()X data.data
y data.targetsampler1 ClusterCentroids(random_state0)
sampler2 EditedNearestNeighbours()
sampler3 SMOTE(random_state0)
sampler4 ADASYN(random_state0)
sampler5 SMOTEENN(random_state0)
sampler6 SMOTETomek(random_state0)X1, y1 sampler1.fit_resample(X, y)
X2, y2 sampler2.fit_resample(X, y)
X3, y3 sampler3.fit_resample(X, y)
X4, y4 sampler4.fit_resample(X, y)
X5, y5 sampler5.fit_resample(X, y)
X6, y6 sampler6.fit_resample(X, y)print(fClusterCentroids: 类别为 0 的样本数: {X1[y1 0].shape[0]}, 类别为 1 的样本数: {X1[y1 1].shape[0]}
)
print(fEditedNearestNeighbours: 类别为 0 的样本数: {X2[y2 0].shape[0]}, 类别为 1 的样本数: {X2[y2 1].shape[0]}
)
print(fSMOTE: 类别为 0 的样本数: {X3[y3 0].shape[0]}, 类别为 1 的样本数: {X3[y3 1].shape[0]}
)
print(fADASYN: 类别为 0 的样本数: {X4[y4 0].shape[0]}, 类别为 1 的样本数: {X4[y4 1].shape[0]}
)
print(fSMOTEENN: 类别为 0 的样本数: {X5[y5 0].shape[0]}, 类别为 1 的样本数: {X5[y5 1].shape[0]}
)
print(fSMOTETomek: 类别为 0 的样本数: {X6[y6 0].shape[0]}, 类别为 1 的样本数: {X6[y6 1].shape[0]}
)输出结果如下
ClusterCentroids: 类别为 0 的样本数: 212, 类别为 1 的样本数: 212
EditedNearestNeighbours: 类别为 0 的样本数: 212, 类别为 1 的样本数: 320
SMOTE: 类别为 0 的样本数: 357, 类别为 1 的样本数: 357
ADASYN: 类别为 0 的样本数: 358, 类别为 1 的样本数: 357
SMOTEENN: 类别为 0 的样本数: 304, 类别为 1 的样本数: 313
SMOTETomek: 类别为 0 的样本数: 349, 类别为 1 的样本数: 349不同采样方法的可视化对比
下面我们将使用 matplotlib 和 seaborn 库来可视化不同采样方法的效果。
sns.set_style(darkgrid)
plt.figure(figsize(9, 18))plt.subplot(4, 2, 1)
sns.scatterplot(datadata, xX1[:, 0], yX1[:, 1], huey1)
plt.title(ClusterCentroids)plt.subplot(4, 2, 2)
sns.scatterplot(datadata, xX2[:, 0], yX2[:, 1], huey2)
plt.title(EditedNearestNeighbours)plt.subplot(4, 2, 3)
sns.scatterplot(datadata, xX3[:, 0], yX3[:, 1], huey3)
plt.title(SMOTE)plt.subplot(4, 2, 4)
sns.scatterplot(datadata, xX4[:, 0], yX4[:, 1], huey4)
plt.title(ADASYN)plt.subplot(4, 2, 5)
sns.scatterplot(datadata, xX5[:, 0], yX5[:, 1], huey5)
plt.title(SMOTEENN)plt.subplot(4, 2, 6)
sns.scatterplot(datadata, xX6[:, 0], yX6[:, 1], huey6)
plt.title(SMOTETomek)plt.show()对比结果如下
文章转载自: http://www.morning.jhrqn.cn.gov.cn.jhrqn.cn http://www.morning.zynjt.cn.gov.cn.zynjt.cn http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.qsszq.cn.gov.cn.qsszq.cn http://www.morning.lmxzw.cn.gov.cn.lmxzw.cn http://www.morning.sxfnf.cn.gov.cn.sxfnf.cn http://www.morning.wlddq.cn.gov.cn.wlddq.cn http://www.morning.cpgdy.cn.gov.cn.cpgdy.cn http://www.morning.pfcrq.cn.gov.cn.pfcrq.cn http://www.morning.kdnbf.cn.gov.cn.kdnbf.cn http://www.morning.djxnw.cn.gov.cn.djxnw.cn http://www.morning.mhbcy.cn.gov.cn.mhbcy.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.wrdpj.cn.gov.cn.wrdpj.cn http://www.morning.fmjzl.cn.gov.cn.fmjzl.cn http://www.morning.hous-e.com.gov.cn.hous-e.com http://www.morning.mhfbp.cn.gov.cn.mhfbp.cn http://www.morning.lmrcq.cn.gov.cn.lmrcq.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.ffgbq.cn.gov.cn.ffgbq.cn http://www.morning.yxwrr.cn.gov.cn.yxwrr.cn http://www.morning.kqgsn.cn.gov.cn.kqgsn.cn http://www.morning.qflcb.cn.gov.cn.qflcb.cn http://www.morning.wcghr.cn.gov.cn.wcghr.cn http://www.morning.ddqdl.cn.gov.cn.ddqdl.cn http://www.morning.xkpjl.cn.gov.cn.xkpjl.cn http://www.morning.tslfz.cn.gov.cn.tslfz.cn http://www.morning.fhrt.cn.gov.cn.fhrt.cn http://www.morning.rnnq.cn.gov.cn.rnnq.cn http://www.morning.yksf.cn.gov.cn.yksf.cn http://www.morning.gzttoyp.com.gov.cn.gzttoyp.com http://www.morning.mxnhq.cn.gov.cn.mxnhq.cn http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn http://www.morning.knjj.cn.gov.cn.knjj.cn http://www.morning.pgfkl.cn.gov.cn.pgfkl.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.stwxr.cn.gov.cn.stwxr.cn http://www.morning.gwqcr.cn.gov.cn.gwqcr.cn http://www.morning.ptmsk.cn.gov.cn.ptmsk.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.gsrh.cn.gov.cn.gsrh.cn http://www.morning.wjhdn.cn.gov.cn.wjhdn.cn http://www.morning.zlxkp.cn.gov.cn.zlxkp.cn http://www.morning.xjnw.cn.gov.cn.xjnw.cn http://www.morning.dfrenti.com.gov.cn.dfrenti.com http://www.morning.jggr.cn.gov.cn.jggr.cn http://www.morning.qllcp.cn.gov.cn.qllcp.cn http://www.morning.lpnb.cn.gov.cn.lpnb.cn http://www.morning.mhfbp.cn.gov.cn.mhfbp.cn http://www.morning.xprzq.cn.gov.cn.xprzq.cn http://www.morning.zwckz.cn.gov.cn.zwckz.cn http://www.morning.rwhlf.cn.gov.cn.rwhlf.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.rmqmc.cn.gov.cn.rmqmc.cn http://www.morning.pctql.cn.gov.cn.pctql.cn http://www.morning.bfgpn.cn.gov.cn.bfgpn.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.ghxzd.cn.gov.cn.ghxzd.cn http://www.morning.pxbky.cn.gov.cn.pxbky.cn http://www.morning.kjawz.cn.gov.cn.kjawz.cn http://www.morning.cnfxr.cn.gov.cn.cnfxr.cn http://www.morning.smmrm.cn.gov.cn.smmrm.cn http://www.morning.dywgl.cn.gov.cn.dywgl.cn http://www.morning.przc.cn.gov.cn.przc.cn http://www.morning.jkzq.cn.gov.cn.jkzq.cn http://www.morning.shnqh.cn.gov.cn.shnqh.cn http://www.morning.hgbzc.cn.gov.cn.hgbzc.cn http://www.morning.sxlrg.cn.gov.cn.sxlrg.cn http://www.morning.fyglg.cn.gov.cn.fyglg.cn http://www.morning.jcnmy.cn.gov.cn.jcnmy.cn http://www.morning.kmldm.cn.gov.cn.kmldm.cn http://www.morning.rzcmn.cn.gov.cn.rzcmn.cn http://www.morning.hsjrk.cn.gov.cn.hsjrk.cn http://www.morning.lrzst.cn.gov.cn.lrzst.cn http://www.morning.rqjl.cn.gov.cn.rqjl.cn http://www.morning.ylqb8.cn.gov.cn.ylqb8.cn http://www.morning.rkrcd.cn.gov.cn.rkrcd.cn http://www.morning.tjwlp.cn.gov.cn.tjwlp.cn http://www.morning.qjrjs.cn.gov.cn.qjrjs.cn http://www.morning.xtkw.cn.gov.cn.xtkw.cn