Я делал проект, где мне нужно было вычислить лучшую оценку, возвращаемую gridsearch.Машина обучения gridsearch для svm
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 FUNC, так как я сделать прогноз после создания объекта gridsearch. Я не могу объявить f1_scorer после создания obj, потому что gridsearch использует его как метод оценки. Пожалуйста, помогите мне, как создать эту функцию подсчета для gridsearch.
спасибо! что работало заметно. если я могу спросить, как gridsearch возвращает свои прогнозы самостоятельно? имеет ли он какое-то отношение к функции make_scorer? –
так же, как вы это сделали, используя метод .predict() ' оценки. Он разбивает данные внутри на валидационные и тестовые наборы. Затем подходит для набора тренировок (который является подмножеством 'X_train, y_train') и предсказывает и сравнивает его с внутренним набором тестов (который также является подмножеством' X_train, y_train'). Поэтому он никогда не использует ваш 'X_test'. Это значит, что вы можете оценить свою окончательную модель без предвзятости – elyase