簡體   English   中英

如何在不過度采樣的情況下平衡數據集

[英]How to balance a dataset without oversampling

我正在嘗試平衡我的數據集,但我正在努力尋找正確的方法來做到這一點。 讓我來設置問題。 我有一個具有以下類權重的多類數據集:

class     weight
2.0       0.700578
4.0       0.163401
3.0       0.126727
1.0       0.009294

如您所見,數據集非常不平衡。 我想要做的是獲得一個平衡的數據集,其中每個類都用相同的權重表示。

有很多關於但是的問題:

這里的例子:

from imblearn.ensemble import EasyEnsembleClassifier    
eec = EasyEnsembleClassifier(random_state=42, sampling_strategy='not minority', n_estimators=2)
eec.fit(data_for, label_all.loc[data_for.index,'LABEL_O_majority'])
new_data = eec.estimators_samples_

但是,返回的索引都是初始數據的索引,並且重復了n_estimators次。

結果如下:

[array([   0,    1,    2, ..., 1196, 1197, 1198]),
 array([   0,    1,    2, ..., 1196, 1197, 1198])]

最后,許多技術使用過采樣但不想使用它們。 只有對於1類,我可以容忍過采樣,因為它是非常可預測的。 我想知道是否真的 sklearn 或這個 contrib 包沒有執行此操作的功能。

根據我的經驗,欠采樣並不是每次都有幫助,因為我們沒有利用全部可用數據,這種方法可能會導致很多過度擬合。 合成少數過采樣技術 (SMOTE) 適用於大多數類型的數據(結構化和非結構化數據,如圖像),盡管有時性能會很慢。 但是它很容易使用並且可以通過 [imblearn][1] 如果你想嘗試過采樣技術,這篇特定的文章可能會有所幫助: https : //medium.com/@adib0073/how-to-use-smote-for -dealing-with-imbalanced-image-dataset-for-solving-classification-problems-3aba7d2b9cad但是對於上述評論中提到的欠采樣,您必須對多數類的數據框或數組進行切片以匹配少數類的大小班級

嘗試應用迭代分層

關於多標簽數據的分層:

分層抽樣是一種抽樣方法,它考慮到總體中存在不相交的群體,並生成保持這些群體比例不變的樣本。 在單標簽分類任務中,根據目標變量的值對組進行區分。 然而,在有多個目標變量的多標簽學習任務中,尚不清楚如何/應該如何進行分層采樣。 本文研究了多標簽數據上下文中的分層。 它考慮了多標簽數據的兩種分層方法,並根據經驗將它們與多個數據集的隨機抽樣和基於多個評估標准進行比較。 結果揭示了關於每種方法對特定類型的多標簽數據集的效用的一些有趣的結論。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM