Используйте matplotlib для построения графиков результатов линейной регрессии - PullRequest
0 голосов
/ 03 октября 2018

Как можно изобразить результаты линейной регрессии из scikit learn после анализа, чтобы увидеть данные «тестирования» (реальные значения против прогнозируемых значений) в конце программы?Приведенный ниже код близок, но я считаю, что в нем отсутствует коэффициент масштабирования.

вход:

import pandas as pd
import numpy as np
import datetime

pd.core.common.is_list_like = pd.api.types.is_list_like # temp fix
import fix_yahoo_finance as yf
from pandas_datareader import data, wb
from datetime import date
from sklearn.linear_model import LinearRegression
from sklearn import preprocessing, cross_validation, svm
import matplotlib.pyplot as plt

df = yf.download('MMM', start = date (2012, 1, 1), end = date (2018, 1, 1) , progress = False)
df_low = df[['Low']] # create a new df with only the low column
forecast_out = int(5) # predicting some days into future
df_low['low_prediction'] = df_low[['Low']].shift(-forecast_out) # create a new column based on the existing col but shifted some days

X_low = np.array(df_low.drop(['low_prediction'], 1))
X_low = preprocessing.scale(X_low) # scaling the input values

X_low_forecast = X_low[-forecast_out:] # set X_forecast equal to last 5 days
X_low = X_low[:-forecast_out] # remove last 5 days from X

y_low = np.array(df_low['low_prediction'])
y_low = y_low[:-forecast_out]

X_low_train, X_low_test, y_low_train, y_low_test = cross_validation.train_test_split(X_low, y_low, test_size = 0.2)

clf_low = LinearRegression() # classifier
clf_low.fit(X_low_train, y_low_train) # training

confidence_low = clf_low.score(X_low_test, y_low_test) # testing

print("confidence for lows: ", confidence_low)
forecast_prediction_low = clf_low.predict(X_low_forecast)
print(forecast_prediction_low)

plt.figure(figsize = (17,9))
plt.grid(True)
plt.plot(X_low_test, color = "red")
plt.plot(y_low_test, color = "green")
plt.show()

изображение:

enter image description here

1 Ответ

0 голосов
/ 03 октября 2018

Вы строите графики y_test и X_test, в то время как вы должны вместо этого строить графики y_test и clf_low.predict(X_test), если хотите сравнить цель и прогноз.

Кстати, clf_low вВаш код не является классификатором, это регрессор.Лучше использовать псевдоним model вместо clf.

...