方便又好用的不平衡數據處理庫:imblearn

在學習機器學習的時候,我們遇到的數據集大多是類別平衡的,即數據集中各個類的樣本數都

很接近。但是實際問題中我們遇到的大部分數據集都是不均衡的。常用的處理方法如下:

  • 對數據進行預處理,進行欠採樣或者過採樣等處理,使數據分佈較為均衡。
  • 對算法進行改進,使其對少數類更加敏感。

python提供了就是一個處理不均衡數據的imblearn庫;其基於機器學習常用sklearn開發而

成,使用方法和sklearn庫十分相似,上手非常容易。imblearn庫對不平衡數據的主要處理方法主

要分為如下四種:

  • 欠採樣
  • 過採樣
  • 聯合採樣
  • 集成採樣

包含了各種常用的不平衡數據處理方法,例如:隨機過採樣,SMOTE及其變形方法,tom-

links欠採樣,編輯最近鄰欠採樣方法等等。

使用方法也很簡單,下述代碼就是使用隨機欠採樣方法平衡數據集,其他方法也類似。

<code>from imblearn.under_sampling import RandomUnderSampler
rus = RandomUnderSampler(random_state=0)
X_resampled, y_resampled = rus.fit_resample(X, y)
print(sorted(Counter(y_resampled).items()))
# [(0, 64), (1, 64), (2, 64)]/<code>
方便又好用的不平衡數據處理庫:imblearn

上圖右一為原始數據集,右三為使用隨機欠採樣方法處理得到的數據集。

imblearn也提供了用戶手冊:3. Under-sampling。可以方便的查看其中內置的各種函數的

使用方法及其原理,同時每種算法的說明下面還提供了對應的論文地址。不過現在還沒有漢化

的用戶手冊。

方便又好用的不平衡數據處理庫:imblearn

最後安裝imblearn庫的方法也很簡單

<code>pip3 install imbalanced-learn/<code>

成功之後就能在python中導入imblearn包。

imblearn的源代碼地址如下,想深入研究的同學門可以clone下來自己深入研究:

https://github.com/scikit-learn-contrib/imbalanced-learn​github.com



分享到:


相關文章: