Эта статья представляет собой учебное пособие по прогнозированию тенденций движения акций с использованием линейной регрессии в Python.
Эта статья - часть задачи Daily Python, которую я взял на себя. Я буду писать короткие статьи о Python ежедневно.
Требования:
- Python 3.0
- Пип
Установите следующие пакеты:
- Pandas - библиотека под лицензией BSD, предоставляющая высокопроизводительные, простые в использовании структуры данных и инструменты анализа данных.
- Sklearn - предоставляет десятки встроенных алгоритмов и моделей машинного обучения.
- 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()
Надеюсь, эта статья была полезной, оставьте несколько аплодисментов, если она вам понравилась.