Линейная регрессия со склеарном дает неверные результаты, но имеет высокую точность - PullRequest
0 голосов
/ 27 апреля 2020

Мой заголовок довольно самодостаточен, поэтому я перейду к коду.

Я сделал простую программу линейной регрессии, которая предсказывает биржевые данные Google. Как вы можете видеть ниже, я прочитал его из файла CSV. Кроме того, я получаю акции из пакета pandas_datareader (YAHOO).

import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
from sklearn import linear_model
from sklearn.model_selection import train_test_split

epochs = 1000

data = pd.read_csv('stocks.csv')

data_x = np.array(data['Timestamp']).reshape(-1,1)
data_y = np.array(data['Scale Close']).reshape(-1,1)
plt.plot(data_y, label = 'Data')

reglr = linear_model.LinearRegression(n_jobs=1)
x_train, x_test, y_train, y_test = train_test_split(data_x,data_y,test_size=0.1, random_state = 4)

def fit(epochs):
    for epoch in range(epochs):
        reglr.fit(x_train, y_train)
        print('coef:',reglr.coef_)

    pre = reglr.predict(x_test)

    print('FirstElement', pre[0],'FirstElementActual',y_test[0])

    count = reglr.score(x_test,y_test)
    return count, pre

accuracy1, pre = fit(epochs)
accuracy2, pre = fit(epochs+1000)
print('####ACCURACY1',accuracy1,'####ACCURACY2',accuracy2)
plt.plot(pre, label = "Prediction")
plt.legend()
plt.show()

Это дает мне такой вывод:

coef: [[2.92640722e-09]]
coef: [[2.92640722e-09]]
coef: [[2.92640722e-09]]

.
.
.
coef: [[2.92640722e-09]]
coef: [[2.92640722e-09]]
coef: [[2.92640722e-09]]
coef: [[2.92640722e-09]]
FirstElement [0.53657982] FirstElementActual [0.52925823]
0.0021231421871198554
####ACCURACY1 0.9232907005819857 ####ACCURACY2 0.9232907005819857

Это выглядит прекрасно, пока я не покажу вам график: Prediction of Stocks

Почему он дает такие неправильные ответы, но все еще имеет точность 92% ?

ps Количество эпох не имеет значения. Выше я тренирую его сначала с 1000 эпохами, а затем с 2000, и точность осталась прежней.

О, а также, если это не обязательно, это файл CSV:

Unnamed: 0        Date         High  ...    Adj Close     Timestamp  Scale Close
0        1570  2020-02-28  1342.449951  ...  1339.250000  1.582866e+09     0.878272
1        1569  2020-02-27  1369.400024  ...  1314.949951  1.582780e+09     0.862336
2        1568  2020-02-26  1413.670044  ...  1390.469971  1.582693e+09     0.911861
3        1567  2020-02-25  1436.849976  ...  1386.319946  1.582607e+09     0.909140
4        1566  2020-02-24  1436.380005  ...  1419.859985  1.582520e+09     0.931135
5        1565  2020-02-21  1510.949951  ...  1483.459961  1.582261e+09     0.972844
6        1564  2020-02-20  1527.069946  ...  1516.989990  1.582175e+09     0.994832
7        1563  2020-02-19  1530.739990  ...  1524.869995  1.582088e+09     1.000000
8        1562  2020-02-18  1530.560059  ...  1519.439941  1.582002e+09     0.996439
9        1561  2020-02-14  1520.050049  ...  1518.729980  1.581656e+09     0.995973
...