【问题标题】:BaggingClassifier take all dataset each timeBaggingClassifier 每次获取所有数据集
【发布时间】:2018-06-04 10:13:29
【问题描述】:
from sklearn.ensemble import AdaBoostClassifier, BaggingClassifier, RandomForestClassifier
import numpy as np
import random
from sklearn.svm import SVC

X=np.random.rand(1000,2)
Y=[random.randint(0,1) for x in range(0,1000)]

svm=BaggingClassifier(SVC(kernel='rbf', random_state=123, gamma=.000001, C=100000, class_weight='balanced'), max_samples=1/5.0, n_estimators=5, n_jobs=-1,random_state=123)

classfier=svm.fit(X,Y)

print(len(svm.estimators_samples_))
print(len(svm.estimators_samples_[0]))# here I expect 0.05*400 samples. but the result is 1000.

在这段代码中,我尝试将 BaggingClassifier 与 SVM 一起应用。通常如 sckitlearn 的文档中所讨论的,max_samples 修复了每个估计器要使用的最大样本数。但是,我注意到每个估计器(n_estimators=5)都会占用所有数据集!!!是bug吗?

【问题讨论】:

    标签: machine-learning scikit-learn classification svm python-3.5


    【解决方案1】:

    svm.estimators_samples_[0] 将返回一个等于数据长度的数组。该数组填充了布尔值,等于True 的值是估计器中使用的数据点(就索引值而言)。

    from sklearn.ensemble import AdaBoostClassifier, BaggingClassifier, RandomForestClassifier
    import numpy as np
    import random
    from sklearn.svm import SVC
    
    X=np.random.rand(1000,2)
    Y=[random.randint(0,1) for x in range(0,1000)]
    
    svm=BaggingClassifier(SVC(kernel='rbf', random_state=123, gamma=.000001, C=100000, class_weight='balanced'), max_samples=1/5.0, n_estimators=5, n_jobs=-1,random_state=123)
    
    classfier=svm.fit(X,Y)
    
    print(len([i for i in svm.estimators_samples_[0] if i == True]))
    

    运行上面的代码我得到:

    181
    

    【讨论】:

      猜你喜欢
      • 2019-02-21
      • 2017-02-25
      • 2021-04-22
      • 2020-11-28
      • 2022-09-22
      • 1970-01-01
      • 2021-09-18
      • 1970-01-01
      • 2022-01-06
      相关资源
      最近更新 更多