python样本不均衡_使用Python中的smote处理正负样本之间的不平衡,python,实现,失衡,问题...
機(jī)器學(xué)習(xí)中難免遇到正負(fù)樣本不平衡問(wèn)題,處理辦法通常有梁總,一:過(guò)采樣,增加正樣本數(shù)據(jù);二:欠采樣,減少負(fù)樣本數(shù)據(jù),缺點(diǎn)是會(huì)丟失一些重要信息。smote屬于過(guò)采樣。
代碼
# from imblearn.over_sampling import BorderlineSMOTE
# from imblearn.over_sampling import SMOTENC
# from imblearn.over_sampling import SVMSMOTE
# from imblearn.over_sampling import KMeansSMOTE
# from imblearn.over_sampling import ADASYN
# from imblearn.over_sampling import RandomOverSampler
import pandas as pd
import numpy as np
from collections import Counter
from imblearn.over_sampling import SMOTE# 使用imlbearn庫(kù)中上采樣方法中的SMOTE接口
import matplotlib.pyplot as plt
# 生成一組0和1比例為9比1的樣本,X為特征,y為對(duì)應(yīng)的標(biāo)簽
x1=[np.random.randint(1,31) for i in range(90)]+[np.random.randint(50,81) for i in range(10)]
x2=[np.random.randint(1,31) for i in range(90)]+[np.random.randint(50,81) for i in range(10)]
y=[0 for i in range(90)]+[1 for i in range(10)]
x=pd.DataFrame({'x1':x1,'x2':x2})
y=pd.DataFrame(y)
# 查看所生成的樣本類別分布,0和1樣本比例9比1,屬于類別不平衡數(shù)據(jù)
print(Counter(list(y[0])))
fig1=plt.figure(1)
plt.scatter(x['x1'],x['x2'])
plt.show
# 定義SMOTE模型,random_state相當(dāng)于隨機(jī)數(shù)種子的作用
smo = SMOTE(sampling_strategy='auto',random_state=10)
x_smo, y_smo = smo.fit_sample(x, y)
print(Counter(list(y_smo[0])))
fig2=plt.figure(2)
plt.scatter(x_smo['x1'],x_smo['x2'])
plt.show
結(jié)果
處理前
處理后
如果對(duì)你有幫助,請(qǐng)點(diǎn)下贊,予人玫瑰手有余香!
時(shí)時(shí)仰望天空,理想就會(huì)離現(xiàn)實(shí)越來(lái)越近!
總結(jié)
以上是生活随笔為你收集整理的python样本不均衡_使用Python中的smote处理正负样本之间的不平衡,python,实现,失衡,问题...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: CSS3中-webkit-overflo
- 下一篇: python调用sdk的文章_如何使用