用于MLPClassifier的GridSearchCV不返回best_estimator_

时间:2017-09-16 00:44:04

标签: scikit-learn

我使用GridSearchCV调整MLPClassifier参数:

def fit(self, X, y):
    param_grid = {
        'hidden_layer_sizes': [(7, 7), (128,), (128, 7)],
        'tol': [1e-2, 1e-3, 1e-4, 1e-5, 1e-6],
        'epsilon': [1e-3, 1e-7, 1e-8, 1e-9, 1e-8]
    }
    self.estimator = GridSearchCV(
        MLPClassifier(learning_rate='adaptive', learning_rate_init=1., early_stopping=True, shuffle=True),
        param_grid=param_grid, n_jobs=-1)
    self.estimator.fit(X, y)
    self.estimator = self.estimator.best_estimator_
    print self.estimator.best_estimator_
    return self

使用print self.estimator.best_estimator_,我收到此错误:

AttributeError: 'MLPClassifier' object has no attribute 'best_estimator_'

我无法获得为结果模型选择的参数。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

下面:

self.estimator = self.estimator.best_estimator_

您正在使用最佳估算器(MLPClassifier)并将其存储到变量self.estimator中,覆盖您的原始变量self.estimator

但是:

self.estimator.best_estimator_

是错误的,因为self.estimator已经是最好的估算工具,但它没有像这样命名的属性。由于您的操作,您确实失去了一层!

这由错误AttributeError: 'MLPClassifier' object has no attribute 'best_estimator_'表示,它告诉您self.estimator是MLPClassifier类型的对象,但不是典型的GridSearchCV结果类型。