XGRegressor 不适合数据
XGRegressor not fitting data
我想 运行 我的 X_train、y_train 数据的 XGBoost 树回归的 CV。我的目标是从 25 到 40 的整数值。我试图 运行 我的训练数据集上的这段代码
# A parameter grid for XGBoost
from xgboost import XGBRegressor
from sklearn.model_selection import GridSearchCV
cv_params = {
'min_child_weight': [1, 3, 5],
'gamma': [0.5, 1, 2, 3],
'subsample': [i/10.0 for i in range(6,11)],
'colsample_bytree': [i/10.0 for i in range(6,11)],
'max_depth': [3, 5, 7],
'learning_rate': [0.01, 0.02, 0.1]
}
# Initialize XGB
xgb_for_gridsearch = XGBRegressor(
n_estimators = 1000,
objective = 'reg:logistic',
seed = 7
)
# Initialize GridSearch
xgb_grid = GridSearchCV(
estimator = xgb_for_gridsearch,
param_grid = cv_params,
scoring = 'explained_variance',
cv = 5,
n_jobs = -1
)
xgb_grid.fit(X_train, y_train)
xgb_grid.grid_scores_
我在 fit() 中遇到错误。
我有点希望 CV 会花很长时间,但并不是真正的错误。错误输出有几千行,所以我只放与我的代码相关的部分:
During handling of the above exception, another exception occurred:
JoblibXGBoostError Traceback (most recent call last)
<ipython-input-44-a5c1d517107d> in <module>()
25 )
26
---> 27 xgb_grid.fit(X_train, y_train)
有谁知道这与什么有关?
我是否使用了相互冲突的参数?
使用 xgboost.cv() 会更好吗?
如果有帮助,我还可以添加整个错误代码,我应该将其添加到这个问题的底部吗?
更新:按照建议 XGRegressor_not_fitting_data 向 Gist 添加了错误,因为错误太长了。
感谢您添加完整的错误代码,可以更轻松地帮助您。
github 存储库很好,但您可能会发现它更易于使用 https://gist.github.com/ or https://pastebin.com/
请注意,完整错误中最有帮助的行通常是最后一行,其中包含:
label must be in [0,1] for logistic regression
您似乎使用了逻辑回归(objective = 'reg:logistic',
在您的代码中),这是一个分类损失,因此它要求 y_train
是 0 或 1 的数组。
您可以使用
之类的东西轻松修复它
y_train_bin = (y_train == 1).astype(int)
xgb_grid.fit(X_train, y_train_bin)
我想 运行 我的 X_train、y_train 数据的 XGBoost 树回归的 CV。我的目标是从 25 到 40 的整数值。我试图 运行 我的训练数据集上的这段代码
# A parameter grid for XGBoost
from xgboost import XGBRegressor
from sklearn.model_selection import GridSearchCV
cv_params = {
'min_child_weight': [1, 3, 5],
'gamma': [0.5, 1, 2, 3],
'subsample': [i/10.0 for i in range(6,11)],
'colsample_bytree': [i/10.0 for i in range(6,11)],
'max_depth': [3, 5, 7],
'learning_rate': [0.01, 0.02, 0.1]
}
# Initialize XGB
xgb_for_gridsearch = XGBRegressor(
n_estimators = 1000,
objective = 'reg:logistic',
seed = 7
)
# Initialize GridSearch
xgb_grid = GridSearchCV(
estimator = xgb_for_gridsearch,
param_grid = cv_params,
scoring = 'explained_variance',
cv = 5,
n_jobs = -1
)
xgb_grid.fit(X_train, y_train)
xgb_grid.grid_scores_
我在 fit() 中遇到错误。 我有点希望 CV 会花很长时间,但并不是真正的错误。错误输出有几千行,所以我只放与我的代码相关的部分:
During handling of the above exception, another exception occurred:
JoblibXGBoostError Traceback (most recent call last)
<ipython-input-44-a5c1d517107d> in <module>()
25 )
26
---> 27 xgb_grid.fit(X_train, y_train)
有谁知道这与什么有关? 我是否使用了相互冲突的参数? 使用 xgboost.cv() 会更好吗? 如果有帮助,我还可以添加整个错误代码,我应该将其添加到这个问题的底部吗?
更新:按照建议 XGRegressor_not_fitting_data 向 Gist 添加了错误,因为错误太长了。
感谢您添加完整的错误代码,可以更轻松地帮助您。 github 存储库很好,但您可能会发现它更易于使用 https://gist.github.com/ or https://pastebin.com/
请注意,完整错误中最有帮助的行通常是最后一行,其中包含:
label must be in [0,1] for logistic regression
您似乎使用了逻辑回归(objective = 'reg:logistic',
在您的代码中),这是一个分类损失,因此它要求 y_train
是 0 或 1 的数组。
您可以使用
之类的东西轻松修复它y_train_bin = (y_train == 1).astype(int)
xgb_grid.fit(X_train, y_train_bin)