BaggingClassifier 每次取所有数据集
BaggingClassifier take all dataset each time
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]
将 return 一个等于数据长度的数组。这个数组填充了布尔值,那些等于 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
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]
将 return 一个等于数据长度的数组。这个数组填充了布尔值,那些等于 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