Линейная регрессия Python всегда 100% точности - PullRequest
0 голосов
/ 13 декабря 2018

Эй, ребята, у меня есть проблема с моим проектом экзамена.Я пытаюсь создать очень простой инструмент для прогнозирования акций, используя веб-API под названием Iextrading, который возвращает мне акции Telsa за последние 5 лет в формате json, ничего особенного.Затем я хочу, чтобы иметь возможность прогнозировать запас для завтра (на следующий день).Тем не менее, я должен признать, что я чувствую себя очень потерянным, занимаясь машинным обучением.Я думаю, что мне удалось создать ай-модель.Но это всегда говорит о 100% точности, что, я знаю, не должно быть правдой / возможным.Если честно, я даже не знаю, где искать проблему, я предполагаю, что она должна быть связана с данными теста / поезда.И я думаю, как только это будет сделано, тогда мне нужно выяснить, как дать только дату завтра модели в качестве входных данных для прогноза.

Вот мой код, большое спасибо заранее:

import matplotlib 
import matplotlib.pyplot as plt 
import numpy as np 
from sklearn import datasets, linear_model 
import sklearn.metrics as sm
import pandas as pd 

data = pd.read_json('https://api.iextrading.com/1.0/stock/tsla/chart/5y')
data.head()

data = data.iloc[:, :]

from sklearn import preprocessing
enc = preprocessing.LabelEncoder()
enc.fit(data['date'])
data['date'] = enc.transform(data['date'])

#Label is like a date expression ex. "Dec 13", "Nov 12"
from sklearn import preprocessing
enc2 = preprocessing.LabelEncoder()
enc2.fit(data['label'])
data['label'] = enc2.transform(data['label'])

X = data.iloc[:, :-1].values 
X = data.drop('close', axis=1)
y = data.iloc[:, 3] 

# Split in train and test
num_training = int(0.8 * len(X))
num_test = len(X) - num_training

# Training data
X_train, y_train = X[:num_training], y[:num_training]

# Test data
X_test, y_test = X[num_training:], y[num_training:]

# Create linear regressor object
regressor = linear_model.LinearRegression()

# Train the model using the training sets
regressor.fit(X_train, y_train)

# Predict the output
y_test_pred = regressor.predict(X_test)

# Compute performance metrics
print("Linear regressor performance:")
print("Mean absolute error =", round(sm.mean_absolute_error(y_test, y_test_pred), 2))
print("Mean squared error =", round(sm.mean_squared_error(y_test, y_test_pred), 2)) 
print("Median absolute error =", round(sm.median_absolute_error(y_test, y_test_pred), 2)) 
print("Explain variance score =", round(sm.explained_variance_score(y_test, y_test_pred), 2))
print("R2 score =", round(sm.r2_score(y_test, y_test_pred), 2))

# Perform prediction on train data, reuse
y_test_pred_new = regressor.predict(X_test)
print("\nNew mean absolute error =", round(sm.r2_score(y_test, y_test_pred_new), 2))

Вот пример данных

Data columns (total 12 columns):
change              1258 non-null float64
changeOverTime      1258 non-null float64
changePercent       1258 non-null float64
close               1258 non-null float64
date                1258 non-null datetime64[ns]
high                1258 non-null float64
label               1258 non-null object
low                 1258 non-null float64
open                1258 non-null float64
unadjustedVolume    1258 non-null int64
volume              1258 non-null int64
vwap                1258 non-null float64
dtypes: datetime64[ns](1), float64(8), int64(2), object(1)

#Example Values from data entry: 0
change : 0.184
changeOverTime: 0.000000
changePercent: 0.125
close: 147.654
date: 2013-12-13
high: 151.80
label: Dec 13, 13
low: 147.3200
open: 148.05
unadjustedVolume: 10599775
volume: 10599775
vwap: 149.5224
...