【问题标题】:XGboost + GridSearch : wired warningXGboost + GridSearch:有线警告
【发布时间】:2019-12-25 20:03:00
【问题描述】:

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

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")

我收到了有线警告。

/anaconda3/lib/python3.7/site-packages/sklearn/preprocessing/label.py:151: DeprecationWarning: The truth value of an empty array is ambiguous. Returning False, but in future this will result in an error. Use `array.size > 0` to check that an array is not empty.
  if diff:

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

当我做简单的 clf.fit(X_train_df, Y_train)。它工作得很好

【问题讨论】:

    标签: xgboost hyperparameters


    【解决方案1】:

    这是 sklearn 版本的问题。少数版本

    代码正确。

    【讨论】:

      猜你喜欢
      • 2021-07-17
      • 2019-07-20
      • 2023-03-22
      • 2017-05-04
      • 2017-12-28
      • 1970-01-01
      • 2016-03-15
      • 2021-05-11
      • 1970-01-01
      相关资源
      最近更新 更多