Как я могу построить даты в сюжет? - PullRequest
0 голосов
/ 27 февраля 2020

Я сделал полиномиальную регрессию, и я хочу построить данные, но графически не отображает их должным образом. Что я могу сделать? Вот код Я думаю, что формат данных как-то не поддерживается плотно, но я не знаю, как его преобразовать. Вот график: https://snipboard.io/RAl9Xj.jpg

import pandas as pd
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
import plotly.graph_objs as go
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
import datetime as dt

data = pd.read_csv("https://raw.githubusercontent.com/iulianastroia/csv_data/master/final_dataframe.csv")
data['day'] = pd.to_datetime(data['day'], dayfirst=True)
data = data.sort_values(by=['day'])
print("sorted days", data.day)

group_by_df = pd.DataFrame(
    [name, group.mean().pm25] for name, group in data.groupby('day')
)
group_by_df.columns = ['day', 'pm25']

group_by_df['day'] = pd.to_datetime(group_by_df['day'])
group_by_df['day'] = group_by_df['day'].map(dt.datetime.toordinal)
print(group_by_df)

X = group_by_df['day'].values.reshape(-1, 1)
y = group_by_df['pm25'].values.reshape(-1, 1)

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3,shuffle=False)
lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)  # training the algorithm
poly_reg = PolynomialFeatures(degree=5)
X_poly = poly_reg.fit_transform(X_train)
print("x poly", X_poly)
pol_reg = LinearRegression()
pol_reg.fit(X_poly, y_train)
group_by_df['day'] = group_by_df['day'].map(dt.datetime.fromordinal)
poly_reg = PolynomialFeatures(degree=4)
X_poly = poly_reg.fit_transform(X_test)
pol_reg = LinearRegression()
pol_reg.fit(X_poly, y_test)
x_test_transformed = []
for i in X_test:
    i = dt.datetime.fromordinal(i)
    print("*", i)
    i = pd.Timestamp(i, tz=None).to_pydatetime()
    x_test_transformed.append(i)
dfObj = pd.DataFrame(x_test_transformed)
dfObj.columns = ['x_test_transformed']

print(dfObj)
fig = go.Figure()
fig.add_trace(go.Line(
    x=dfObj['x_test_transformed'],
    y=pol_reg.predict(poly_reg.fit_transform(X_test)),
    name='predicted values'
))
fig.update_layout(title='Real data and forecast with polynomial prediction', yaxis_title='Pm2.5',
                  xaxis_title='Day',
                  showlegend=True)
fig.show()
...