2016-11-12 21 views
5

Scikit-learn paketinin son sürümlerinde Dengeli Rasgele Ormanın (BRF) bir uygulaması olup olmadığını merak ediyorum. Dengesiz veri durumunda BRF kullanılır. Normal RF olarak çalışır, ancak her bir önyükleme yinelemesi için, düşük örnekleme yoluyla yaygınlık sınıfını dengeler. Örneğin, her iki rasgele örneklemede iki sınıf N0 = 100 ve N1 = 30 örneği verildiğinde, birinci sınıftan 30 örnek ve ikinci sınıftaki aynı örneklerden (örneğin bir ağaç üzerinde dengeli veri kümesi. Daha fazla bilgi için please refer to this paper.scikit-learn (python) 'da Dengeli Rasgele Orman (python)

RandomForestClassifier() 'class_weight =' parametresine sahiptir, bu 'dengeli' olarak ayarlanmış olabilir, ancak bunun botla kesilmiş eğitim örneklerinin alt örneklemeyle ilişkili olduğundan emin değilim.

+0

Hiç bir çözüm buldunuz mu? – oliversm

+0

@oliversm, maalesef değil. Bu sorunu bıraktım. Muhtemelen scikit öğrenim forumunda bir sorun açmalı ve bir çözüm bulmayı teklif etmeliyiz. Bu harika olurdu. –

+0

Brieman tarafından önerilen yöntem, Scikit'in sunduğu şeyi kullanarak uygulanması oldukça kolay olmalı, ancak göz ardı edilmiş gibi görünüyor. – oliversm

cevap

4

Bunun 10 ay geciktiğini biliyorum, ama aradığınız şeyin imblearn'dan olduğunu düşünüyorum.

imblearn.ensemble.BalancedBaggingClassifier(base_estimator=None, 
n_estimators=10, max_samples=1.0, max_features=1.0, bootstrap=True, 
bootstrap_features=False, oob_score=False, warm_start=False, ratio='auto', 
replacement=False, n_jobs=1, random_state=None, verbose=0) 

Etkili bunu yapmasına izin neyi arda sizin çoğunluk sınıfına undersample üstünde bir tahmin edici uydurma iken olduğunu. Rastgele ormanı veya scikit-learn'den herhangi bir temel tahmincisini kullanabilirsiniz. İşte bir example.

+1

teşekkürler! Bu paketle biraz uğraştım ve oldukça ilginç buldum. Örneğini daha fazla araştıracağım. –

+0

@ArnoldKlein evet çok yararlı, ancak belgelerin hala biraz iyileştirme ihtiyacı var. – mamafoku