【发布时间】:2018-11-03 16:06:51
【问题描述】:
在函数GridSearchCV中有搜索和训练的数据(X, y)。 训练在自定义标准 T_scorer 上进行。 是否可以在 T_scorer 函数中使用经过训练的模型? 我需要“T_scorer”预测数据“X1”。 也就是说,模型在每次迭代时都在数据 (X,y) 上进行训练,并在 (X1,y1) 上进行预测 同样 (X1, y1) 根本不参与训练并且“GridSearchCV”这些数据看不到。
理想情况下,我们应该在数据 (X,y) 上进行训练,并在“评分”时传输基于预测 (X1,y1) 的结果)
def T_scorer(y_true, y_pred, clf, **kwargs):
r = np.sum((y_pred == 0) & (y_pred == y_true))
y_pred1 = clf.predict(X1) #It doesn't work
confmat = confusion_matrix(y, y_pred)
print(confmat)
print(r)
return r
_scorer = make_scorer(T_scorer)
clf = RandomForestClassifier()
grid_searcher = GridSearchCV(clf, parameter_grid, cv=StratifiedKFold(shuffle =True,random_state=42),verbose=20, scoring=_scorer)
grid_searcher.fit(X, y)
clf_best = grid_searcher.best_estimator_
print('Best params = ', clf_best.get_params())
【问题讨论】:
-
我想计算这个函数中的参数。并将其发送到“返回”。这是理想的。但是,如果您只是在每次迭代时输出“print”,它是合适的。
标签: python scikit-learn grid-search