數據處理之不平衡數據過採樣與下采樣

方法一: 直接使用pandas.sample(frac=2.0)(過採樣)

oversample = train_df.sample(frac=2.2, resample=True)
downsample = train_df.sample(frac=0.2)

方法二: 使用python的imblearn模塊
下采樣:

from imblearn.under_sampling import RandomUnderSampler

ran = RandomUnderSampler(return_indices=True)

x_rs, y_rs, dropped = ran.fit_sample(X, y)

在這裏插入圖片描述
上採樣;

from imblearn.over_sampling import RandomOverSampler

ran=RandomOverSampler()
X_ran,y_ran= ran.fit_resample(X,y)

在這裏插入圖片描述方法三:使用imblearn自動裁剪數據和生成新的數據
刪除臨界值來下采樣:

from imblearn.under_sampling import TomekLinks

tl = TomekLinks(return_indices=True, ratio='majority')
X_tl, y_tl, id_tl = tl.fit_sample(X, y)

在這裏插入圖片描述生成新數據來上採樣:

from imblearn.over_sampling import SMOTE

smote = SMOTE(ratio='minority')
X_sm, y_sm = smote.fit_sample(X, y)

在這裏插入圖片描述
Reference:
https://www.kaggle.com/shahules/tackling-class-imbalance

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章