0
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. 

このコードでは、SVMでBaggingClassifierを適用しようとしています。通常、sckitlearnのドキュメントで説明されているように、max_samplesは、各見積もりに使用するサンプルの最大数を修正します。しかし、私は各推定器(n_estimators = 5)がすべてのデータセットを取ることを述べている。バグですか?BaggingClassifierは毎回すべてのデータセットを取ります

答えて

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 
関連する問題