【发布时间】:2021-05-11 19:51:23
【问题描述】:
我有一个包含 53987 行、32 列和 8 个类的不平衡数据集。我正在尝试执行多类分类。这是我的代码和相应的输出:
from sklearn.metrics import classification_report, accuracy_score
import xgboost
xgb_model = xgboost.XGBClassifier(num_class=7, learning_rate=0.1, num_iterations=1000, max_depth=10, feature_fraction=0.7,
scale_pos_weight=1.5, boosting='gbdt', metric='multiclass')
hr_pred = xgb_model.fit(x_train, y_train).predict(x_test)
print(classification_report(y_test, hr_pred))
[10:03:13] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:541:
Parameters: { boosting, feature_fraction, metric, num_iterations, scale_pos_weight } might not be used.
This may not be accurate due to some parameters are only used in language bindings but
passed down to XGBoost core. Or some parameters are not used but slip through this verification. Please open an issue if you find above cases.
[10:03:13] WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.
precision recall f1-score support
1.0 0.84 0.92 0.88 8783
2.0 0.78 0.80 0.79 4588
3.0 0.73 0.59 0.65 2109
4.0 1.00 0.33 0.50 3
5.0 0.42 0.06 0.11 205
6.0 0.60 0.12 0.20 197
7.0 0.79 0.44 0.57 143
8.0 0.74 0.30 0.42 169
accuracy 0.81 16197
macro avg 0.74 0.45 0.52 16197
weighted avg 0.80 0.81 0.80 16197
和
max_depth_list = [3,5,7,9,10,15,20,25,30]
for max_depth in max_depth_list:
xgb_model = xgboost.XGBClassifier(max_depth=max_depth, seed=777)
xgb_pred = xgb_model.fit(x_train, y_train).predict(x_test)
xgb_f1_score_micro = f1_score(y_test, xgb_pred, average='micro')
xgb_df = pd.DataFrame({'tree depth':max_depth_list,
'accuracy':xgb_f1_score_micro})
xgb_df
WARNING: C:/Users/Administrator/workspace/xgboost-win64_release_1.3.0/src/learner.cc:1061: Starting in XGBoost 1.3.0, the default evaluation metric used with the objective 'multi:softprob' was changed from 'merror' to 'mlogloss'. Explicitly set eval_metric if you'd like to restore the old behavior.
如何解决这些警告?
【问题讨论】:
-
欢迎来到 StackOverflow。请先创建一个 MWE (stackoverflow.com/help/minimal-reproducible-example),不要将代码发布为图像 (meta.stackoverflow.com/questions/285551/…)。
-
欢迎来到 Stackoverflow。请确保 1) 您将代码和错误消息作为文本包含在您的问题中。屏幕截图,甚至更糟糕的屏幕截图链接,都不太好阅读,尤其是在移动设备上。另外 2)请说明您的确切问题是什么,警告(有两个)给出了如何做的说明,所以不清楚为什么这对您来说是不可能的
-
此外,升级到最新的 XGBoost 版本可能会自动删除其中一些警告。
-
@mirekphd 这个警告不是关于 OP 的计算机,而是关于 XGBoost 库本身。我有同样的警告,我什至没有管理员这样的文件夹。