Рубрики
Без рубрики

Stonksmaster – Прогнозируйте цены на акции, используя Python & ML 📈

Новичок в машинном обучении? Нужен хороший первоначальный проект, чтобы начать? Вы в правильной статье … Tagged с помощью машинного обучения, Python, новичков, учебного пособия.

Новичок в машинном обучении? Нужен хороший первоначальный проект, чтобы начать?

Вы на правильной статье!

В этой статье мы постараемся создать очень простое приложение для прогнозирования запасов, используя машинное обучение и его концепции. И, как следует из названия, наверняка будет полезно и весело. Итак, начнем.

Мы ожидаем, что у вас будет базовое воздействие на науку о данных и машинное обучение.

«Область исследования, которая дает компьютерам возможность учиться, не будучи явно запрограммированной»

Это то, что Артур Самуэль назвал машинным обучением.

Машинное обучение В последние годы обнаружил свои приложения в различных областях, некоторые из которых включают виртуальных личных помощников, онлайн -поддержку клиентов, рекомендации по продукту и т. Д.

Мы будем использовать библиотеки, такие как Numpy , Панды , matplotlib , Scikit-learn и несколько других.

Если вы не знакомы с этими библиотеками, вы можете обратиться к следующим ресурсам:

Шаги в машинном обучении

При выполнении любой задачи машинного обучения мы обычно выполняем следующие шаги:

  1. Сбор данных Это самый очевидный шаг. Если мы хотим поработать над проектом ML, нам сначала нужны данные. Будь то необработанные данные из Excel, доступ, текстовые файлы или данные в виде изображений, видео и т. Д., Этот шаг является основой будущего обучения.

  2. Подготовка данных Плохие данные всегда приводят к плохим пониманию, которое приводит к проблемам. Наши результаты прогнозирования зависят от качества используемых данных. Нужно потратить время на определение качества данных, а затем предпринять шаги для решения таких проблем, как отсутствующие данные и т. Д.

  3. Обучение модели Этот шаг включает в себя выбор соответствующего алгоритма и представление данных в виде модели. С точки зрения непрофессионала, представление модели-это процесс представления нашего оператора «реальной проблемы» в математической модели для компьютера, чтобы понять. Очищенные данные разделен на три части – обучение, проверка и тестирование – пропорционально в зависимости от сценария. Затем обучающая часть передается модели для изучения отношений/функции.

  4. Оценка модели Довольно часто мы тренируем не только одну модель, а много. Таким образом, чтобы сравнить производительность различных моделей, мы оцениваем все эти модели по данным проверки. Как это не было видно ни одной из моделей, данные проверки помогают нам оценить реальную производительность моделей.

  5. Улучшение производительности Часто производительность модели сначала не является удовлетворительной, и, следовательно, нам необходимо пересмотреть более ранние варианты, которые мы сделали при определении представлений данных и параметров модели. Мы можем использовать разные переменные (функции) или даже собрать еще несколько данных. Нам может потребоваться изменить всю архитектуру, чтобы получить лучшую производительность в худшем случае.

  6. Сообщать о производительности Как только мы удовлетворены производительностью модели в наборе проверки, мы оцениваем нашу выбранную модель на наборе данных тестирования, и это дает нам справедливое представление о производительности нашей модели на реальных данных, которых она не видел ранее Анкет

Сейчас приходя к нашему проекту, поскольку мы имеем дело с фондовым рынком и пытаемся предсказать цены на акции, самое важное – это Возможность читать акции

Как читать акции?

Чтение фондовых диаграмм, или котировки на складе является решающим навыком в том, чтобы понять, как работает акция, что происходит на более широком рынке, и как этот акции, по прогнозам, будет выполнять.

Акции имеют Цитата страниц или Диаграммы , которые дают как основную, так и более подробную информацию о акциях, ее производительности и компании в целом. Итак, следующий вопрос, который появляется, – это то, что составляет актерский график?

Стоковые диаграммы

Акционная диаграмма представляет собой набор информации о акциях конкретной компании, которая обычно показывает информацию о изменениях цен, текущей торговой цене, исторических максимумах и минимумах, дивидендах, объеме торговли и финансовой информации другой компании.

Также мы хотели бы ознакомить вам некоторые основные терминологии фондового рынка

Символ тикера

Символ тикера – это символ, который используется на фондовой бирже для определения данного запаса. Например, тикер Apple (AAPL), а тикер Snapchat – это (SNAP).

Все символы аккета актива

Открытая цена

Открытая цена – это просто цена, по которой акции открылись в любой день

Закрыть цену

Близкая цена, возможно, более значительна, чем открытая цена для большинства акций. Закрытие-это цена, по которой акции перестали торговать в течение обычных торговых часов (в нерабочее время торговля может также повлиять на цену акций). Если запас закрывается выше предыдущего закрытия, он считается восходящим движением для акций. Наоборот, если цена на близкую цену акции ниже закрытия предыдущего дня, акции показывают нисходящее движение.

Теперь Пришло время испачкать руки и начать настраивать проект

Инициализация нашего проекта

Шаг 1: Сбор данных

Используйте Iexfinance Библиотека для загрузки DataFrame. DataFrame, который мы получаем, содержит ежедневные данные о запасе. Загруженный DataFrame дает нам много информации, включая цену открытия, цену закрытия, объем и т. Д. Но мы заинтересованы в начальных ценах с их соответствующими датами.

import pandas as pd
import numpy as np
import iexfinance
from iexfinance.stocks import get_historical_data
from datetime import datetime, date

# start date should be within 5 years of current date according to iex API we have used
# The more data we have, the better results we get!

start = datetime(2016, 1, 1)
end = date.today()
# use your token in place of token which you will get after signing up on IEX cloud
# Head over to https://iexcloud.io/ and sign-up to get your API token
df = get_historical_data("AAPL", start=start, end=end, output_format="pandas", token="your_token")

Шаг 2: Подготовка данных

Кроме того, было бы удобно преобразовать даты в их соответствующие временные отметки. И, наконец, у нас будет кафедра данных, которая будет содержать наши начальные цены и временные отметки.

Нам нужно знать, что созданная нами модель хороша. Мы собираемся сдерживать некоторые данные, которые алгоритмы не увидят, и мы будем использовать эти данные, чтобы получить второе и независимое представление о том, насколько точной может быть лучшая модель.

Мы разделим загруженный набор данных на два, 80%, из которых мы будем использовать для обучения, оценки и выбора среди наших моделей, и 20%, которые мы будем сдерживать в качестве набора данных проверки.

from sklearn.model_selection import train_test_split

prices = df[df.columns[0:1]]
prices.reset_index(level=0, inplace=True)
prices["timestamp"] = pd.to_datetime(prices.date).astype(int) // (10**9)
prices = prices.drop(['date'], axis=1)
prices

dataset = prices.values
X = dataset[:,1].reshape(-1,1)
Y = dataset[:,0:1]

validation_size = 0.15
seed = 7

X_train, X_validation, Y_train, Y_validation = train_test_split(X, Y, test_size=validation_size, random_state=seed)

Функция train_test_split () происходит из Scikit-learn библиотека.

Scikit-learn (Также известная как Sklearn) – это библиотека бесплатного программного машинного обучения для Python. Scikit-Learn предоставляет ряд контролируемых и неконтролируемых алгоритмов обучения через постоянный интерфейс в Python. Библиотека сосредоточена на моделировании данных. Он не сосредоточен на загрузке, манипулировании и суммировании данных.

Шаг 3: Обучение модели

Мы не знаем, какие алгоритмы будут хорошими в этом проекте или какие конфигурации использовать.

Итак, мы тестируем с 6 различными алгоритмами:

  • Линейная регрессия (LR)
  • Лассо (Лассо)
  • Эластичная сеть (en)
  • Knn (K-nearest соседей)
  • Тележка (классификация и регрессия деревьев)
  • SVR (поддержка векторной регрессии)
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import Lasso
from sklearn.linear_model import ElasticNet
from sklearn.tree import DecisionTreeRegressor
from sklearn.neighbors import KNeighborsRegressor
from sklearn.svm import SVR

# Test options and evaluation metric
num_folds = 10
seed = 7
scoring = "r2"

# Spot-Check Algorithms
models = []
models.append((' LR ', LinearRegression()))
models.append((' LASSO ', Lasso()))
models.append((' EN ', ElasticNet()))
models.append((' KNN ', KNeighborsRegressor()))
models.append((' CART ', DecisionTreeRegressor()))
models.append((' SVR ', SVR()))

Шаг 4: Оценка модели

from sklearn.model_selection import KFold
from sklearn.model_selection import cross_val_score

# evaluate each model in turn
results = []
names = []
for name, model in models:
    kfold = KFold(n_splits=num_folds, random_state=seed, shuffle=True)
    cv_results = cross_val_score(model, X_train, Y_train, cv=kfold, scoring=scoring)
    # print(cv_results)
    results.append(cv_results)
    names.append(name)
    msg = "%s: %f (%f)" % (name, cv_results.mean(), cv_results.std())
    print(msg)

Вывод вышеприведенного кода дает нам оценки точности для каждого из наших алгоритмов. Нам нужно сравнить модели друг с другом и выбрать наиболее точные.

Как только мы выбираем, что приводит к наилучшей точности, все, что нам нужно сделать, это

  • Определите модель
  • Вместить данные в нашу модель
  • Делать предсказания

Постройте свои прогнозы вместе с фактическими данными, и два участка будут почти перекрываться.

Шаг 5: Сообщение о модели и прогнозирование

# Future prediction, add dates here for which you want to predict
dates = ["2020-12-23", "2020-12-24", "2020-12-25", "2020-12-26", "2020-12-27",]
#convert to time stamp
for dt in dates:
  datetime_object = datetime.strptime(dt, "%Y-%m-%d")
  timestamp = datetime.timestamp(datetime_object)
  # to array X
  np.append(X, int(timestamp))

from matplotlib import pyplot as plt
from sklearn.metrics import mean_squared_error

# Define model
model = DecisionTreeRegressor()
# Fit to model
model.fit(X_train, Y_train)
# predict
predictions = model.predict(Xp)
print(mean_squared_error(Y, predictions))

# %matplotlib inline 
fig= plt.figure(figsize=(24,12))
plt.plot(X,Y)
plt.plot(X,predictions)
plt.show()

Ура! Вы наконец -то построили предиктор запаса. Мы надеемся, что эта статья очень помогла начинающим и всем остальным. Для тех, кто заинтересован в том, чтобы вывести этот проект на следующий уровень, мы рекомендуем вам прочитать в нейронных сетях LSTM и попытаться его реализовать.

Хотя мы предсказываем цены, эта модель практически не жизнеспособна, потому что многие другие факторы должны учитываться при прогнозах!

Модель ссылки

Обновление: мы сделали новый пост после этой статьи, в которой мы использовали ансамблевые методы для дальнейшего улучшения наших моделей.

Stonksmaster: Прогнозируйте цены на акции, используя Python и ML – Часть II

Ришав Радж Кумар для группы пользователей GNU/Linux, NIT Durgapur ・ 10 декабря ’20 ・ 7 минут прочтения

Мы надеемся, что вы нашли это проницательным.

Это был один из проектов в 10 дней кода Организовано Группа пользователей GNU/Linux, NIT Durgapur

Посетите наш Веб -сайт Чтобы узнать больше о нас, а также следить за нами:

Эта статья была в соавторстве

Нирвик Агарвальфоллоу

Ришав Радж Кумарфоллоу

Оригинал: “https://dev.to/nitdgplug/stonksmaster-predict-stock-prices-using-python-ml-3hmc”