1. 程式人生 > >樣本不平衡處理

樣本不平衡處理

一.下采樣

  對於樣本不均衡來說,使得兩個樣本(向少的樣本靠齊)同樣的少.將多的資料進行裁剪使得樣本最後可以均衡,具體的程式碼設計如下:

#以二分類為例
#對整個樣本進行分開
one_data=data[data['label']==1].index
zero_data=data[data['label'==0]].index
#將多的樣本進行隨機的抽樣(raplace代表著不重複抽取)
one_sample=np.random.choice(one_data,len(zero_data),replace=False)

under_sample_index=np.concatenate([zero_data,np.array(one_sample)])
data.loc[under_sample_index]

二.過取樣

  對於樣本不均衡來說,使得兩個樣本(向多的樣本靠齊)同樣的多(製造多的樣本)

from imblearn.over_sampling import SMOTE
#沒有用pip install imblearn
oversampler=SMOTE(random_state=0)
os_features,os_labels=oversampler.fit_sample(features_train,labels_train)