【发布时间】:2021-07-11 08:09:49
【问题描述】:
我最近使用scikit-learn RandomForestRegressor 模型开发了一个功能齐全的随机森林回归软件,现在我有兴趣将其性能与其他库进行比较。 所以我找到了scikit-learn API for XGBoost random forest regression,并用一个 X 特征和全为零的 Y 数据集做了一个小 SW 测试。
from numpy import array
from xgboost import XGBRFRegressor
from sklearn.ensemble import RandomForestRegressor
tree_number = 100
depth = 10
jobs = 1
dimension = 19
sk_VAL = RandomForestRegressor(n_estimators=tree_number, max_depth=depth, random_state=42,
n_jobs=jobs)
xgb_VAL = XGBRFRegressor(n_estimators=tree_number, max_depth=depth, random_state=42,
n_jobs=jobs)
dataset = array([[0.0] * dimension, [0.0] * dimension])
y_val = array([0.0, 0.0])
sk_VAL.fit(dataset, y_val)
xgb_VAL.fit(dataset, y_val)
sk_predict = sk_VAL.predict(array([[0.0] * dimension]))
xgb_predict = xgb_VAL.predict(array([[0.0] * dimension]))
print("sk_prediction = {}\nxgb_prediction = {}".format(sk_predict, xgb_predict))
令人惊讶的是,xgb_VAL 模型的输入样本全为零的预测结果非零:
sk_prediction = [0.]
xgb_prediction = [0.02500369]
我的评估或构建我得到此结果的比较有什么错误?
【问题讨论】:
-
好问题。我以前见过它,但大部分都被忽略了,但如果有人知道这里有什么问题,那会很有趣。
-
我一定会在未来做(它已经在我的“待办事项清单”中),但对于我参与的项目,我需要指出一个“快速替代”模型。
标签: python machine-learning xgboost