XGBoost 回归预测常数值

问题描述 投票:0回答:1

我正在尝试使用 XGBoost 来预测来电数量。

我的

df
看起来像这样,有 1152 行:

x 来电
0 0 8154.0
1 1 8526.0
2 2 8088.0
3 3 7044.0
4 4 7236.0
5 5 6492.0

这是我的代码:

import xgboost
from xgboost import XGBRegressor
import pandas as pd

df = pd.read_csv('sickness_table Kopie.csv', index_col=None)
X = df.x.values.reshape(-1,1)
y = df.calls

def train_test_split(data, n_test):
    return data[:n_test], data[n_test:]

# because of time series data, I am splitting manually so the data doesn't shuffle
x_train, x_test = train_test_split(X, 921)
y_train, y_test = train_test_split(y, 921)

model = XGBRegressor()
model.fit(x_train, y_train)

pred = model.predict(x_test)

当我

print(pred)
时,它看起来像这样:

[9044.7, 9044.7, 9044.7, 9044.7, 9044.7, 9044.7, 9044.7 .... ]

随机森林也会发生同样的情况。我尝试使用一些参数,然后值发生变化,但每个预测的数字都是相同的。

有什么想法吗?

python scikit-learn xgboost
1个回答
0
投票

我在消费者价格指数值的时间序列上也遇到同样的问题。我只有每月指数值作为从属值,日期值作为独立值。我尝试过许多其他方法,它们都工作得很好。但 XGBoost 和随机森林给了我恒定的预测值,同时有明显的增长趋势。那么就您而言,仅恢复日期就可以解决您的问题吗?或者您还做了哪些对您有帮助的事情?

© www.soinside.com 2019 - 2024. All rights reserved.