Ce référentiel GitHub contient mon projet final pour le Nanodegree Machine Learning Engineer d'Udacity.
Il s'agit d'un prédicteur de cours boursier. Il utilise l'algorithme DeepAR d'Amazon pour créer un modèle et prévoir les futurs cours des actions. Ce référentiel contient un Jupiter Notebook utilisé pour collecter les données, former un modèle et l'évaluer. Ce bloc-notes contient également une application Web qui peut être déployée pour prédire les cours des actions jusqu'à 30 jours de bourse dans le futur.
Pour exécuter cette application Web, vous devez d'abord créer et déployer un modèle. Il y a quelques exigences avant de commencer.
Vous devez vous inscrire à RapidAPI. Créez un compte et abonnez-vous à l'API Yahoo Finance. Vous aurez besoin de votre RAPIDAPI-HOST
et RAPIDAPI-KEY
dans le Jupiter Notebook pour entraîner votre modèle.
Vous devez également disposer d'un compte Amazon Web Services (AWS). Créez un compte et accédez à Amazon SageMaker depuis votre console AWS. Créez une instance de bloc-notes. Sur la page Créer une instance de notebook, cliquez sur Dépôts Git et sélectionnez Cloner un référentiel Git public sur cette instance de notebook uniquement . Dans l'URL du référentiel Git, saisissez https://github.com/scliff108/Udacity-ML-Capstone-Project.git
. Enfin, créez l’instance de notebook.
Une fois l’instance Notebook configurée, ouvrez le notebook stock-forecasting-deepar
. Assurez-vous de saisir votre RAPIDAPI-HOST
et RAPIDAPI-KEY
dans la fonction load_historical_data
sous l'en-tête Load and Explore the Data .
Après cela, vous pouvez exécuter toutes les cellules du bloc-notes. Après environ 15 minutes, vous devriez avoir un modèle généré et évalué.
Maintenant que vous disposez d'un modèle formé, vous devrez créer une fonction Lambda pour envoyer des données au point de terminaison SageMaker et renvoyer le résultat. Copiez et collez le code ci-dessous dans une fonction Lambda sur AWS. Vous devrez saisir votre compartiment S3 et votre nom de point de terminaison Predictor dans le code fourni.
import boto3
import os
import sys
import json
s3 = boto3.resource('s3')
def lambda_handler(event, context):
bucket = ''# YOUR BUCKET HERE
key = 'lambda-deepar-stock-forecasting/test/test.json'
obj = s3.Object(bucket, key)
file_content = obj.get()['Body'].read().decode('utf-8')
instances = file_content.splitlines()
instances = [json.loads(i) for i in instances]
for i in instances:
for _ in range(30):
i['dynamic_feat'][0].append(i['dynamic_feat'][0][-1])
configuration = {'num_samples': 30,
'output_types': ['mean'],
}
request_data = {'instances': instances,
'configuration': configuration
}
payload = json.dumps(request_data).encode('utf-8')
runtime = boto3.Session().client('sagemaker-runtime')
response = runtime.invoke_endpoint(EndpointName = '', # YOUR ENDPOINT NAME HERE
ContentType = 'application/json',
Body = payload
)
result = response['Body'].read().decode('utf-8')
return {
'statusCode': 200,
'body': result
}
Malheureusement, Lambda ne peut gérer qu'une quantité limitée de données, nous devons donc fournir moins de données au prédicteur DeepAR que ce que nous avons sur S3. Pour ce faire, ouvrez le notebook lambda-data
. Encore une fois, entrez vos informations RapidAPI et exécutez toutes les cellules. Cela téléchargera des données suffisamment petites pour que Lambda puisse les gérer.
Enfin, nous pouvons configurer API Gateway pour déclencher la fonction Lambda que nous avons créée et obtenir des prévisions de cours boursiers. Pour ce faire, créez une nouvelle méthode POST et assurez-vous que la fonction Lambda est sélectionnée. Ensuite, entrez le nom de votre fonction Lambda dans la zone de texte et cliquez sur Enregistrer. Enfin, cliquez sur le menu déroulant Actions pour déployer l'API.
Vous aurez besoin de l' URL d'appel pour déployer votre application Web.
Maintenant que vous disposez d’une API, vous pouvez commencer à l’utiliser dans une application Web. J'ai créé un fichier HTML et JavaScript très simple pour interagir avec l'API. Téléchargez le dossier du site Web à partir de ce référentiel GitHub, ajoutez l'URL de votre API publique à l'endroit indiqué dans le fichier et ouvrez-le. Lorsque vous cliquez sur le bouton Obtenir des données , vous devriez voir les 20 actions en accordéon. Cliquez sur le titre pour voir les prix prévus.
Votre application Web ressemblera à ceci pour démarrer.
Après avoir cliqué sur le bouton Obtenir des données , votre application Web ressemblera à ceci.
Après avoir cliqué sur une action, votre application Web ressemblera à ceci.