机器学习11-不平衡数据之采样

本文介绍了处理不平衡数据的策略,包括过采样方法如随机过采样、SMOTE、Border-line SMOTE和ADASYN,下采样方法如原型生成、原型选择和NearMiss,以及结合过采样和下采样的SMOTEENN和SMOTETomek方法。
摘要由CSDN通过智能技术生成

1.过采样(上采样)

1)随机过采样
# 统计数据
from collections import Counter

import matplotlib.pyplot as plt
# 过采样
from imblearn.over_sampling import RandomOverSampler
# 构造数据
from sklearn.datasets import make_classification

X, y = make_classification(n_samples=50, n_features=2, n_informative=2,
                           n_redundant=0, n_repeated=0, n_classes=3,
                           n_clusters_per_class=1,
                           weights=[0.01, 0.05, 0.94],
                           class_sep=0.8, random_state=0)

print(Counter(y))  # Counter({2: 47, 1: 2, 0: 1})
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.show()

ros = RandomOverSampler(random_state=0)
# 过采样
X_resampled, y_resampled = ros.fit_resample(X, y)

plt.scatter(X_resampled[:, 0], X_resampled[:, 1], c=y_resampled)
print(Counter(y_resampled))         # Counter({2: 47, 1: 47, 0: 47})

在这里插入图片描述

2)SMOTE方法
SMOTE会随机选取少数类样本用以合成新样本,而不考虑周边样本的情况,这样容易带来两个问题:

如果选取的少数类样本周围也都是少数类样本,则新合成的样本不会提供太多有用信息。这就像支持向量机中远离margin的点对决策边界影响不大。
如果选取的少数类样本周围都是多数类样本,这类的样本可能是噪音,则新合成的样本会与周围的多数类样本产生大部分重叠,致使分类困难。
# SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中
from collections import Counter
import matplotlib.pyplot as plt
# 过采样
from imblearn.over_sampling import RandomOverSampler,SMOTE
# 构造数据
from sklearn.datasets import make_classification

X, y =  make_classification(n_samples=1000, n_features=2,
                           n_informative=2, n_redundant=0, n_repeated=0, n_classes=3,
                           n_clusters_per_class=1,
                           weights=[0.01, 0.05, 0.94],
                           random_state=500)

plt.scatter(X[:,0],X[:,1],c=y)
plt.show()
print(Counter(y))           # Counter({2: 930, 1: 57, 0: 13})
X_resampled_smote,y_resampled_smote = SMOTE().fit_sample
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值