我正在做一个项目,我需要计算gridsearch返回的最佳估算值。
parameters = {'gamma':[0.1, 0.5, 1, 10, 100], 'C':[1, 5, 10, 100, 1000]}
# TODO: Initialize the classifier
svr = svm.SVC()
# TODO: Make an f1 scoring function using 'make_scorer'
f1_scorer = make_scorer(score_func)
# TODO: Perform grid search on the classifier using the f1_scorer as the scoring method
grid_obj = grid_search.GridSearchCV(svr, parameters, scoring=f1_scorer)
# TODO: Fit the grid search object to the training data and find the optimal parameters
grid_obj = grid_obj.fit(X_train, y_train)
pred = grid_obj.predict(X_test)
def score_func():
f1_score(y_test, pred, pos_label='yes')
# Get the estimator
clf = grid_obj.best_estimator_
我不知道如何制作f1_scorer函数,因为我在创建gridsearch对象后进行预测。创建obj后我无法声明f1_scorer因为gridsearch将其用作评分方法。请帮我知道如何为gridsearch创建这个评分函数。
答案 0 :(得分:0)
您传递给make_scorer
的得分手功能应该y_true
和y_pred
作为参数。有了这些信息,您就拥有了计算分数所需的一切。然后GridSearchCV将适合并在内部为每个可能的参数集调用得分函数,您不需要事先计算y_pred。
它应该是这样的:
def score_func(y_true, y_pred):
"""Calculate f1 score given the predicted and expected labels"""
return f1_score(y_true, y_pred, pos_label='yes')
f1_scorer = make_scorer(score_func)
GridSearchCV(svr, parameters, scoring=f1_scorer)
答案 1 :(得分:0)
clf = svm.SVC()
# TODO: Make an f1 scoring function using 'make_scorer'
f1_scorer = make_scorer(f1_score,pos_label='yes')
# TODO: Perform grid search on the classifier using the f1_scorer as the scoring method
grid_obj = GridSearchCV(clf,parameters,scoring=f1_scorer)
# TODO: Fit the grid search object to the training data and find the optimal parameters
grid_obj = grid_obj.fit(X_train, y_train)
# Get the estimator
clf = grid_obj.best_estimator_