Привет! Я Пракхар Шривастава, дизайнер и разработчик, в настоящее время работаю над MuteDev. Посетите мой веб-сайт и поделитесь им с друзьями. ;) :)

Я дизайнер и разработчик, в основном работаю на Python, последние несколько лет занимаюсь машинным обучением.

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

Итак, приступим.

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

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

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

Условие:

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

  • Базовые знания машинного обучения.
  • Понимание программирования на Python.

Здесь мы будем использовать следующие несколько библиотек Python:

  • quandl: главный источник финансовых, экономических и альтернативных наборов данных, предназначенный для профессионалов в области инвестиций. Платформой Quandl пользуются более 400 000 человек, включая аналитиков ведущих мировых хедж-фондов, управляющих активами и инвестиционные банки.
  • NumPy: NumPy — это библиотека для языка программирования Python, добавляющая поддержку больших многомерных массивов и матриц, а также большой набор высокоуровневых математических функций для работы с этими массивами.
  • sklearn: включает различные алгоритмы классификации, регрессии и кластеризации, включая машины опорных векторов, случайные леса, повышение градиента, k-means и DBSCAN, и предназначен для взаимодействия с числовыми и научными библиотеками Python NumPy и SciPy.

Начнем путешествие:

Шаг 1. Импорт библиотек

Сюда мы импортируем все библиотеки, которые будем использовать в нашем проекте.

Поскольку «sklearn» — очень обширная библиотека, мы просто импортируем несколько ее методов, которые нам нужны.

импорт квандла

импортировать numpy как np

из sklearn.linear_model импортировать линейную регрессию

из sklearn.svm импортировать SVR

из sklearn.model_selection импорта train_test_split

Шаг 2. Получение набора данных

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

Для этого мы используем метод get() библиотеки quandl.

df=quandl.get("WIKI/AMZN")

В наборе данных мы должны создать столбец под названием «Прогноз» для хранения прогнозируемой цены закрытия акций. Мы делаем это,

df[‘Прогноз’]=0

В приведенном выше фрагменте кода столбец «Прогноз» инициализируется 0.

Примечание. Quandl также предоставляет набор данных для индийского фондового рынка, поэтому проверьте код индийских акций на их веб-сайте. Есть много других альтернатив Quandl, NSE также предоставляет данные, но ограниченные индийским фондовым рынком.

Шаг 3: Объявление переменных

Независимой переменной (X) будут все значения, кроме «Прогноза». Для этого мы запускаем следующий фрагмент кода,

X=np.array(df.drop([‘Прогноз’],1))

Зависимая переменная (Y) — это переменная, которую необходимо предсказать, в нашем случае это «Прогноз».

Y=np.array(df[‘Прогноз’])

Шаг 4. Разделение набора данных

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

Для разделения данных мы используем метод train_test_split(), определенный в sklearn.model_seletion.

x_train,x_test,y_train,y_test=train_test_split(X,Y, test_size=0,2)

Примечание. Я использовал test_size = 0,2, что означает, что я разделил набор данных на соотношение 80:20, т. е. 80% будут использоваться в качестве тренировочного набора, 20% — для тестирования.

Шаг 5. Обучение модели

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

1. СВМ:

#Создать и обучить машину опорных векторов (регрессор)

svr_rbf=SVR(kernel=’rbf’, C=1e3, gamma=0,1)

svr_rbf.fit(x_train,y_train)

#Testing Model Accuracy возвращает коэффициент определения R² прогноза. Наилучший возможный балл – 1,0

svm_confidence=svr_rbf.score(x_test,y_test)

print("Надежность SVM", svm_confidence)

2. Линейная регрессия:

#Создание и обучение модели линейной регрессии

LR=Линейная регрессия()

LR.fit(x_train,y_train)

#Testing Model Accuracy возвращает коэффициент определения R² прогноза. Наилучший возможный балл – 1,0

LR_confidence=lr.score(x_test,y_test)

print("Надежность SVM", lr_confidence)

Шаг 6: Прогноз

Наконец, нам осталось предсказать наши будущие ценности.

#Распечатать прогнозы модели LR на следующие n дней (в нашем случае – 30 дней)

LR_prediction=lr.predict(x_forecast)

печать(LR_prediction)

#Распечатать прогнозы модели SVm на следующие n дней (в нашем случае – 30 дней)

svm_prediction=svr_rbf.predict(x_forecast)

печать(svm_prediction)

ВЫШЕУКАЗАННЫЙ КОД МОЖНО СКАЧАТЬ С GITHUB.

Я надеюсь, что вы получили то, что искали, и если да, пожалуйста, поделитесь этим со своими друзьями и коллегами.