繁体   English   中英

Sklearn 多项式回归平坦,日期时间 x 值

[英]Sklearn polynomial regression flat with datetime x vales

即使使用 10 度回归器,我也会得到一个平坦的回归。 但是,如果我将日期值更改为数字,那么回归是否有效? 有人知道为什么吗?

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
from sklearn.linear_model import LinearRegression
from scipy.optimize import curve_fit

## RESHAPE DATA ##
X = transformed_data.ds.values.reshape(-1, 1)
y = transformed_data.y
# X = data.fecha.dt.day.values.reshape(-1, 1)

## PLOT ##
fig, ax = plt.subplots(figsize=(15,8))
ax.plot(X, y, 'o', label="data")

for i in (range(1, 10)):
    polyreg = make_pipeline(PolynomialFeatures(i), LinearRegression())
    polyreg.fit(X, y)
    mse = round(np.mean((y - polyreg.predict(X))**2))
    mae = round(np.mean(abs(y - polyreg.predict(X))))
    ax.plot(X, polyreg.predict(X), label='Degree: ' + str(i) + ' MSE: ' + f'{mse:,}' +' MAE: ' + f'{mae:,}')
Datetime Data
    ds          y
0   2019-01-10  3658.0
1   2019-01-11  2952.0
2   2019-01-12  2855.0
3   2019-01-13  3904.0

平面回归

Numeric Data
    ds  y
0   10  3658.0
1   11  2952.0
2   12  2855.0
3   13  3904.0

曲线回归

线性回归意味着将数值与计算的系数相关联。 接下来发生的事情是这些值乘以系数,这反过来给你一个 output 用于预测。

但是,在您的情况下,其中一个变量是日期,如上所述,回归 model 不知道如何处理它。 正如您所注意到的,您需要将它们转换为数字数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM