machine-learning - BaggingClassifier 每次都会获取所有数据集

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

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)都会获取所有数据集!这是一个错误吗?

最佳答案

svm.estimators_samples_[0] 将返回一个等于数据长度的数组。该数组填充了 bool 值,这些等于 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

关于machine-learning - BaggingClassifier 每次都会获取所有数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47929961/

相关文章:

python - 如何预测特征数量是否与测试集中可用的特征数量不匹配?

python - 如何在不将值保存到磁盘的情况下将张量恢复到过去的值?

python - 如何在 Python 中高效计算巨大的矩阵乘法(tfidf 特征)?

machine-learning - 涉及数字范围作为标签的多标签分类

Python 决策树 GraphViz

python-3.x - 从逻辑回归系数中导出新的连续变量

r - 当 classProbs=TRUE 时,在 R 中使用 Caret 的 SVM 的不同结果

python - scikit-image (io.imread) 返回 float 组,这已经标准化了吗?

Matlab onehot 转整数

machine-learning - from_model.py 中的 SelectFromModel() 如何工作?