2015-01-19 2 views
7

Когда я запускаю этот код:Что следует использовать вместо Bootstrap?

from sklearn import cross_validation 
bs = cross_validation.Bootstrap(9, random_state=0) 

я получаю это предупреждение устаревания:

C:\Anaconda\envs\p33\lib\site-packages\sklearn\cross_validation.py:684: DeprecationWarning: Bootstrap will no longer be supported as a cross-validation method as of version 0.15 and will be removed in 0.17 
    "will be removed in 0.17", DeprecationWarning) 

То, что я должен использовать вместо начальной загрузки?

+1

Что вы используете '' Bootstrap'' для? он делает очень странную вещь (поскольку нормальный бутстрап нельзя использовать для оценки тестовой ошибки). –

ответ

4

От the scikit-learn 0.15 release notes под "API изменения резюме"

И от the source code itself:

# See, e.g., http://youtu.be/BzHz0J9a6k0?t=9m38s for a motivation 
# behind this deprecation 
warnings.warn("Bootstrap will no longer be supported as a " + 
       "cross-validation method as of version 0.15 and " + 
       "will be removed in 0.17", DeprecationWarning) 
+4

Я отредактировал этот ответ, чтобы предоставить лекцию. Тем не менее, я до сих пор не думаю, что это касается «почему» за OP. Bootstrap - отличный способ справиться со степенью свободы. Более того, использование данных, полученных с помощью бутстрапа для проверки, аналогично использованию перекрестной проверки. Итак, я также не понимаю, почему Bootstrap был устаревшим. У него действительно реальный и важный прецедент, ИМХО. –

1

Вы можете использовать BaggingClassifier:

bag = BaggingClassifier(base_estimator=your_estimator, 
         n_estimators=100, 
         max_samples=1.0, 
         bootstrap=True, 
         n_jobs=-1) 
bag.fit(X, y) 
recalls = [] 
for estimator, samples in zip(bag.estimators_, bag.estimators_samples_): 
    # compute predictions on out-of-bag samples 
    mask = ~samples 
    y_pred = estimator.predict(X[mask]) 
    # compute some statistic 
    recalls.append(recall(y[mask], y_pred)) 
# Do something with stats, e.g. find confidence interval 
print(np.percentile(recalls, [2.5, 97.5])) 
+0

У меня вопрос: почему случайные образы были меньше исходного размера выборки? Теоретически каждый размер загрузочного образца должен быть того же размера, что и оригинал, но с повторениями. –

Смежные вопросы