Мой заголовок довольно самодостаточен, поэтому я перейду к коду.
Я сделал простую программу линейной регрессии, которая предсказывает биржевые данные 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
Это выглядит прекрасно, пока я не покажу вам график:
Почему он дает такие неправильные ответы, но все еще имеет точность 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