我使用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_'
我无法获得为结果模型选择的参数。我该如何解决这个问题?
在这里:
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 结果类型。