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

Узнайте Python по строительству инвестиций AI для Fintech – урок3: Как построить и обучать AI

Эта статья была первоначально опубликована по адресу: https: //www.blog.duomly.com/python-course-with-building-a-f … Tagged с Python, MachineLearning, Учебником, начинающими.

Автор оригинала: Duomly.

Курс Python & Ai (4 части серии)

Эта статья была изначально опубликована в: https://www.blog.duomly.com/python-course-with-building-a-fintech-investment-ai-finton-3-how-i-ai-build-andairain-ai.

вступление

В сегодняшнем эпизоде Python с курсом AI мы узнаем, как построить AI и как тренироваться AI.

Последние эпизоды вы можете найти здесь:

Урок 2 – Как найти финансовые данные и как использовать Pandas:

Курс Python со строительством Fintech Investment Ai – Урок 2: Пандас и получение финансовых данных

Урок 1 – Подготовьте проект AI:

Курс Python со строительством Fintech Investment Ai – Урок 2: Пандас и получение финансовых данных

В этом уроке мы можем оставить скучную подготовку и сосредоточиться на супер захватывающих вещах!

Сегодня мы построим первую модель AI, которая будет именно RNN (рецидивирующая нейронная сеть).

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

Вы готовы к этому потрясающему путешествию?

Я надеюсь, что вы, потому что я не могу дождаться, чтобы показать вам все эти мощные вещи!

Давайте начнем!

Если вы предпочитаете видео, вот версия YouTube:

Создать модуль AI.

В качестве первого шага мы создадим модуль с именем «AI».

Во-первых, вам нужно создать каталог с именем «Ai» в корне в корне проекта.

Далее нам нужно создать файл с тем же именем, с расширением «.py».

Импортные зависимости

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

Зайдите в файл AI.PY и импортируйте эти зависимости.

from datetime import date, timedelta
import numpy as np
import pandas as pd
import yfinance as yf
from pandas_datareader import data as pdr
import matplotlib.pyplot as plt

Установить и импортировать KERAS

Далее мы должны установить библиотеку под названием «KERAS».

Конечно, если вы не установили их, вы должны установить Sklearn, Pandas, Numpy и Matplotlib.

Если вы используете CONDA, вы, вероятно, у них уже установлены.

Первый открытый терминал и тип:

pip install keras

Далее, ниже предыдущего импорта необходимо импортировать «слои» и «последовательно» из KERAS.

Как третья линия Импорт MinmaxScaler из Sklearn.preProcessing.

from keras import layers
from keras import Sequential
from sklearn.preprocessing import MinMaxScaler

Получить цены на акции от API

Как четвертый шаг, нам нужно сосредоточиться на ценах.

Нам нужно определить функцию, названную «GetStock» с «запасом» в качестве параметра.

Внутри функции нам нужно определить сегодняшнюю дату.

def getStock(stock):
  today = date.today()

Принимать данные за последние 5 лет

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

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

Единственное изменение здесь будет изменять количество дней до 1850.

monthAgo = today - timedelta(days=1850)
data = pdr.get_data_yahoo(stock, start=monthAgo, end=today)
return data

Разделение данных

Теперь мы можем пойти в какую-то работу по данным, которые мы получили.

В качестве первого шага нам нужно создать функцию с именем «SLICDDATA», и принимать «Склады», как параметр.

Далее нам нужно разделить данные на две части.

Первые цены за последний месяц (20 дней).

Вторая часть – все данные без последних 20 дней.

Оба части должны быть возвращены.

def splitData(stockPrices):
  stockPricesLastMonth = stockPrices[-20:]
  stockPricesTest = stockPrices[:-20]
  return stockPricesLastMonth, stockPricesTest

Подготовьте данные

На следующем шаге мы можем пойти в подготовку этих данных.

Давайте создадим функцию, названную «Подготовленные», и принять «цены», как параметр.

def prepareData(prices):
  stockPricesLastMonth, stockPricesTest = splitData(prices)

Получить только «открыть» ценность цен как важный

Теперь мы должны продолжить приготовление данных внутри функции «Подпись».

Нам нужно брать только «открывать» цены от ряда и назначить его в переменную под названием «ScaledData».

cleanData = stockPricesTest.iloc[:, 1:2].values

Масштабирование данных для ускорения алгоритма

Далее нам нужно масштабировать данные, которые ускоряют наш расчет.

Мы будем использовать функцию «Fit_Transform» на данные, которые мы убрали ранее.

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

scaledData = scaler.fit_transform(cleanData)
return scaledData, stockPricesTest, stockPricesLastMonth

Сплит поезда и результат

На этом этапе нам нужно определить функцию, названную «SplitTreateSt».

Далее мы должны добавить «ScaledData» как параметр.

def splitTrainTest(scaledData):

Принимать данные в течение первых 6 месяцев и реальных цен

Внутри функции «SplittreateSt», мы возьмем данные за последние 6 месяцев и вернем двух переменных.

Один из них будет «вкладами», а второй, «Real Price».

inputs = []
realPrice = []
for i in range(120, len(scaledData)):
  inputs.append(scaledData[i-120:i, 0])
  realPrice.append(scaledData[i, 0])
return inputs, realPrice

Создайте таблицу массивов и RESHAPE, чтобы иметь один список

Далее мы должны создать 3D-массив и изменить переменную с именем «Входные данные».

Для этого нам нужно создать функцию, названную «RESHAPEDATA», поставить «входы» и «RealPrice» в качестве переменных.

Внутри функции мы должны использовать методы «NP.Array» и «NP.Reshape».

В качестве последнего шага мы вернем входы.

def reshapeData(inputs, realPrice):
  inputs, realPrice = np.array(inputs), np.array(realPrice)
  inputs = np.reshape(inputs, (inputs.shape[0], inputs.shape[1], 1))
  return inputs

Создать модель

Большой! Теперь мы пойдем в реальную вещь. Мы создадим модель AI.

В качестве первого шага нам нужно создать функцию, названную «CreateModel», и пройти «входы», как параметр.

def createModel(inputs):

Создать 3 слоя LSTM

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

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

Я нашел 3 слоя LSTM с 30 единицами, а 0,2 отсева дает хорошие результаты.

model.add(layers.LSTM(units = 30, return_sequences = True, input_shape = (inputs.shape[1], 1)))
model.add(layers.Dropout(0.2))

model.add(layers.LSTM(units = 30, return_sequences = True))
model.add(layers.Dropout(0.2))

model.add(layers.LSTM(units = 30))
model.add(layers.Dropout(0.2))

Добавить модель и компилировать

Последняя часть функции «CreateModel» должна быть добавления плотного слоя и компилировать модель.

Я использовал «Адам», как оптимизатор, а также «MSE» в качестве потери.

model.add(layers.Dense(units = 1))
model.compile(optimizer='adam', loss='mse')

Модель поезда

Потрясающие!

Теперь мы можем пойти в учебную модель.

Нам нужно создать функцию, названную «TrainModel», и пропустите там четыре параметра.

Добавим «входы», «RealPrice», «эпохи» и «партия» в качестве параметров.

Далее нам нужно добавить «Model.fit», которая отвечает за обучение.

def trainModel(inputs, realPrice, epochs, batch):
  model.fit(inputs, realPrice, epochs = epochs, batch_size = batch)

Определите цену, модель и скарелер

Вся логика готова, на этом этапе, мы должны выполнить это.

Первый – определить переменную, ответственную за получение цены.

Далее нам нужно назначить «последовательное» на «модель».

И нам нужно добавить «Scaler».

prices = getStock('MSFT')
model = Sequential()
scaler = MinMaxScaler(feature_range=(0,1))

Поезд А.И.

На почти последнем шаге нам нужно поставить все эти функции на один под названием «Trainai».

Добавьте «цены», «эпохи» и «партии» в качестве параметров.

def trainAI(prices, epochs, batch):
  scaled, stockPricesTest, stockPricesLastMonth = prepareData(prices)
  inputs, realPrice = splitTrainTest(scaled)
  reshapedInputs = reshapeData(inputs, realPrice)
  createModel(reshapedInputs)
  trainModel(reshapedInputs, realPrice, epochs, batch)

Поезд на поезде А.И.

Теперь последний шаг, а веселье начинается!

Позвоните на метод «Trainai» и пройдите необходимые данные.

О количестве эпохи и размера партии, вы можете экспериментировать, я сделал 50, но некоторые люди рекомендуют даже 1000, а размер пакетных размеров меньше 4-8.

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

trainAI(prices, 50, 64)

Заключение

Поздравляю!

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

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

Репозиторий кода для урока 3 курса Python находится здесь:

https://github.com/Duomly/python-ai-investment-fintech/tree/Python-AI-course-Lesson-3

В следующем уроке мы проверим наш AI, и мы предсказываем цены на акции.

Мы сравним эти цены с настоящими, чтобы знать, насколько умны наша AI.

Продолжайте учиться с нами, и я не могу дождаться, чтобы показать вам следующий эпизод, где мы увидим реальные результаты, как наша AI работает!

Спасибо за прочтение,

Радек из дуоомированного

Курс Python & Ai (4 части серии)

Оригинал: “https://dev.to/duomly/learn-python-by-building-investment-ai-for-fintech-lesson3-how-to-build-and-train-ai-20me”