XGboost + GridSearch:有线警告

时间:2019-08-20 14:57:18

标签: xgboost hyperparameters

下面是我使用RandomizedSearchCV为XGboost的超参数调整编写的代码

break

我收到有线警告。

from sklearn.model_selection import RandomizedSearchCV
from sklearn.metrics import make_scorer, accuracy_score, precision_score, recall_score, auc
from pprint import pprint
from xgboost import XGBClassifier
import time


# instantiate XGBoost model
clf = XGBClassifier(missing=np.nan, nthreads=-1)

# Define scoring metrics
scorers = {
    'accuracy_score': make_scorer(accuracy_score),
    'precision_score': make_scorer(precision_score),
    'recall_score': make_scorer(recall_score)
}

param_grid_dummy = {  
    "n_estimators": [25, 250],
    "max_depth": [3,5],
    "learning_rate": [0.0005, 0,005],
}

def random_search_wrapper(refit_score = 'precision_score'):

    """
    fits a RandomizedSearchCV classifier using refit_score for optimization
    prints classifier performance metrics
    """

    rf_random = RandomizedSearchCV(estimator = clf, param_distributions = param_grid_dummy, n_iter = 3, scoring=scorers, refit = refit_score, cv = 3, return_train_score= True, n_jobs= -1)  


    rf_random.fit(X_train_df, Y_train)

    # make the predictions
    Y_pred = rf_random.predict(X_test_df)

    print('Best params for {}'.format(refit_score))
    print(rf_random.best_params_)

    # confusion matrix on test data
    print('\nConfusion matrix of Random Forest optimized for {} on the test data: '.format(refit_score))
    print(pd.DataFrame(confusion_matrix(Y_test, Y_pred),
                       columns = ['pred_neg', 'pred_pos'], index = ['neg', 'pos']))

    return rf_random

# Optimize classifier for recall score
start = time.time()
rf_random_cl = random_search_wrapper(refit_score='precision_score')
# Print time
end = time.time()
print()
print((end - start)/60, "minutes")

有人可以帮助我了解我在这里做什么错吗?

当我做简单的clf.fit(X_train_df,Y_train)时。效果很好

1 个答案:

答案 0 :(得分:1)

这是sklearn版本的问题。 <0.20.1的几个版本会抛出此错误

代码正确。