【发布时间】:2019-09-29 10:22:55
【问题描述】:
总结
我正在使用 Python v3.7 和 xgboost v0.81。从 2015 年到 2019 年,我每周都有美国州级的连续数据(y)。我试图将以下特征回归到 y:年、月、周、地区(编码)。我将火车设置为 2018 年 8 月及之前,测试时间为 2018 年 9 月及之后。当我以这种方式训练模型时,会发生两件奇怪的事情:
- feature_importances 都是 nan
- 预测都是一样的 (0.5, 0.5....)
我尝试过的
将任何特征固定到单个变量上可以让模型进行适当的训练,并且之前遇到的两个奇怪问题都消失了。前任。年份==2017 或地区==28
代码
(我知道这是一个时间问题,但这种一般情况也显示出问题)
X = df[['year', 'month', 'week', 'region_encoded']]
display(X)
y = df.target
display(y)
X_train, X_test, y_train, y_test = train_test_split(X.values, y.values, test_size=0.1)
model = XGBRegressor(n_jobs=-1, n_estimators=1000).fit(X_train, y_train)
display(model.predict(X_test)[:20])
display(model.feature_importances_)
结果 - 一些预测和特征重要性
year month week region_encoded
0 2015 10 40 0
1 2015 10 40 1
2 2015 10 40 2
3 2015 10 40 3
4 2015 10 40 4
0 272.0
1 10.0
2 290.0
3 46.0
4 558.0
Name: target, dtype: float64
array([0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5], dtype=float32)
array([nan, nan, nan, nan], dtype=float32)
【问题讨论】:
-
欢迎您,@dnly15!您能否打印并更新您的问题以显示 y 和 X 分别为
df['target']和df[[...]]的样子,好吗?为了安全起见,您也可以将 df['target'].values 和 df[[...]].values 传递给 XGBoost。 -
您也可以尝试使用标准缩放器缩放您的 X 数据吗?
标签: python-3.x xgboost boosting