Как запустить поиск по сетке с помощью sklearn xgboost и получить различные метрики, в идеале при пороговом значении F1?
См. Мой код ниже ... не могу найти, что я делаю неправильно /не понимаю ошибок ..
######################### just making up a dataset here##############
from sklearn import datasets
from sklearn.metrics import precision_score, recall_score, accuracy_score, roc_auc_score, make_scorer
from sklearn.calibration import CalibratedClassifierCV, calibration_curve
from sklearn.model_selection import train_test_split
from sklearn.grid_search import RandomizedSearchCV
import xgboost as xgb
X, y = datasets.make_classification(n_samples=100000, n_features=20,
n_informative=2, n_redundant=10,
random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.99,
random_state=42)
Остальное - набор параметров, а затем поиск по случайной сетке .... если я изменю 'SCORING_EVALS' на 'roc_auc', тогда это сработает ... Если япопытаться сделать то, что кажется документированным подходом для этого я получаю ошибку?Куда я иду не так?
Кроме того, как мне обеспечить, чтобы эти метрики отображались в пороге F1!?
params = {
'min_child_weight': [0.5, 1.0, 3.0, 5.0, 7.0, 10.0],
'gamma': [0, 0.25, 0.5, 1.0],
'reg_lambda': [0.1, 1.0, 5.0, 10.0, 50.0, 100.0],
"max_depth": [2,4,6,10],
"learning_rate": [0.05,0.1, 0.2, 0.3,0.4],
"colsample_bytree":[1, .8, .5],
"subsample": [0.8],
'reg_lambda': [0.1, 1.0, 5.0, 10.0, 50.0, 100.0],
'n_estimators': [50]
}
folds = 5
max_models = 5
scoring_evals = {'AUC': 'roc_auc', 'Accuracy': make_scorer(accuracy_score), 'Precision': make_scorer(precision_score),'Recall': make_scorer(recall_score)}
xgb_algo = xgb.XGBClassifier()
random_search = RandomizedSearchCV(xgb_algo,
param_distributions=params, n_iter=max_models,
scoring= scoring_evals, n_jobs=4, cv=5, verbose=False, random_state=2018 )
random_search.fit(X_train, y_train)
Мои ошибки:
ValueError: значение оценки должнолибо быть вызываемым, строкой или None.{'AUC': 'roc_auc', 'Accuracy': make_scorer (precision_score), 'Precision': make_scorer (precision_score), 'Recall': make_scorer (all_score)} пройдено