我正在尝试使用 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 .... ]
随机森林也会发生同样的情况。我尝试使用一些参数,然后值发生变化,但每个预测的数字都是相同的。
有什么想法吗?
我在消费者价格指数值的时间序列上也遇到同样的问题。我只有每月指数值作为从属值,日期值作为独立值。我尝试过许多其他方法,它们都工作得很好。但 XGBoost 和随机森林给了我恒定的预测值,同时有明显的增长趋势。那么就您而言,仅恢复日期就可以解决您的问题吗?或者您还做了哪些对您有帮助的事情?