如何阻止XGBoost拟合模型时打印模型实例参数信息
问题
使用XGBoost拟合模型时,已在model.fit()方法中设置verbose=False,但控制台仍会输出XGBRegressor的实例参数信息,需要阻止该内容打印。
代码示例:
model = xgb.XGBRegressor( colsample_bytree = 0.7, learning_rate= 0.03, max_depth= 10, min_child_weight = 5, n_estimators = 300, nthread= 4, #objectvie= 'reg:squarederror', subsample= 0.7) model.fit(X_train, y_train, eval_set=[(X_test, y_test)], verbose=False)
需避免打印的内容:
XGBRegressor(base_score=None, booster=None, callbacks=None, colsample_bylevel=None, colsample_bynode=None, colsample_bytree=0.7, early_stopping_rounds=None, enable_categorical=False, eval_metric=None, feature_types=None, gamma=None, gpu_id=None, grow_policy=None, importance_type=None, interaction_constraints=None, learning_rate=0.03, max_bin=None, max_cat_threshold=None, max_cat_to_onehot=None, max_delta_step=None, max_depth=10, max_leaves=None, min_child_weight=5, missing=nan, monotone_constraints=None, n_estimators=300, n_jobs=None, nthread=4, num_parallel_tree=None, predictor=None, ...)
解决方案
这个输出并非来自fit()方法的日志,而是因为你可能直接输出了model对象(比如在Jupyter Notebook中单独一行写model会自动打印其字符串表示),或者代码里有print(model)这类语句。可以通过以下方式解决:
在定义模型的语句末尾添加分号
;,阻止Jupyter自动输出对象信息:model = xgb.XGBRegressor( colsample_bytree = 0.7, learning_rate= 0.03, max_depth= 10, min_child_weight = 5, n_estimators = 300, nthread= 4, #objectvie= 'reg:squarederror', subsample= 0.7);如果需要打印模型但不想显示全量参数,自定义输出内容,只展示关键参数:
print(f"XGBRegressor(colsample_bytree={model.colsample_bytree}, learning_rate={model.learning_rate}, max_depth={model.max_depth})")若在普通Python脚本中出现该问题,检查代码中是否存在
print(model)或类似输出模型对象的语句,删除或修改即可。
内容的提问来源于stack exchange,提问作者Zach Fara
相关产品推荐
相关产品推荐

