Эта статья представляет собой учебное пособие по прогнозированию тенденций движения акций с использованием линейной регрессии в Python.

Эта статья - часть задачи Daily Python, которую я взял на себя. Я буду писать короткие статьи о Python ежедневно.

Требования:

  1. Python 3.0
  2. Пип

Установите следующие пакеты:

  1. Pandas - библиотека под лицензией BSD, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных.
  2. Sklearn - предоставляет десятки встроенных алгоритмов и моделей машинного обучения.
  3. Matplotlib - Библиотека графиков, которая выдает показатели качества публикации.
pip install pandas sklearn matplotlib

Что такое линейная регрессия?

В статистике линейная регрессия - это линейный подход к моделированию взаимосвязи между скалярным откликом (или зависимой переменной) и одной или несколькими независимыми переменными (или независимыми переменными). Случай с одной независимой переменной называется простой линейной регрессией. Для нескольких независимых переменных процесс называется множественной линейной регрессией. Этот термин отличается от многомерной линейной регрессии, где прогнозируются несколько коррелированных зависимых переменных, а не одна скалярная переменная.

Фондовые данные: данные по акциям Tesla от Yahoo Finance

Давайте импортируем необходимые библиотеки / модули

import pandas as pd 
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import mean_squared_error
import matplotlib.pyplot as plt

Чтение данных из файла CSV

#Import the data
data = pd.read_csv("TSLA.csv")
print('Raw data from Yahoo Finance : ')
print(data.head())

Удаление ненужных столбцов из фрейма данных

#Remove date and Adj Close columns
data = data.drop('Date',axis=1) 
data = data.drop('Adj Close',axis = 1)
print('\n\nData after removing Date and Adj Close : ')
print(data.head())

Разделение данных на обучающие и тестовые наборы

В этом руководстве мы прогнозируем сумму закрытия по EOD для акций Tesla. Для этого мы удалили дату и скорректированную сумму закрытия из исходных данных. Мы разделяем данные в соотношении 75–25 для данных обучения и тестирования.

#Split into train and test data
data_X = data.loc[:,data.columns !=  'Close' ]
data_Y = data['Close']
train_X, test_X, train_y,test_y = train_test_split(data_X,data_Y,test_size=0.25)
print('\n\nTraining Set')
print(train_X.head())
print(train_y.head())

Создание регрессора из модуля линейной регрессии sci-kit learn

#Creating the Regressor
regressor = LinearRegression()
regressor.fit(train_X,train_y)

Делайте прогнозы и оценивайте результаты

#Make Predictions and Evaluate the results
predict_y = regressor.predict(test_X)
print('Prediction Score : ' , regressor.score(test_X,test_y))
error = mean_squared_error(test_y,predict_y)
print('Mean Squared Error : ',error)

Постройте прогнозные и фактические значения

#Plot the predicted and the expected values
fig = plt.figure()
ax = plt.axes()
ax.grid()
ax.set(xlabel='Close ($)',ylabel='Open ($)', title='Tesla Stock Prediction using Linear Regression')
ax.plot(test_X['Open'],test_y)
ax.plot(test_X['Open'],predict_y)
fig.savefig('LRPlot.png')
plt.show()

Надеюсь, эта статья была полезной, оставьте несколько аплодисментов, если она вам понравилась.

Следите за ежедневным вызовом Python здесь: