簡體   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