Este repositorio de GitHub contiene mi proyecto final para Nanogrado de ingeniero de aprendizaje automático de Udacity.
Este es un predictor del precio de las acciones. Utiliza el algoritmo DeepAR de Amazon para crear un modelo y pronosticar los precios futuros de las acciones. Este repositorio contiene un Jupiter Notebook que se utiliza para recopilar datos, entrenar un modelo y evaluarlo. Este cuaderno también contiene una aplicación web que se puede implementar para predecir los precios de las acciones hasta 30 días hábiles en el futuro.
Para ejecutar esta aplicación web, primero debe crear e implementar un modelo. Hay algunos requisitos antes de comenzar.
Debes registrarte en RapidAPI. Cree una cuenta y suscríbase a la API de Yahoo Finance. Necesitará su RAPIDAPI-HOST
y RAPIDAPI-KEY
en el cuaderno de Júpiter para entrenar su modelo.
También debe tener una cuenta de Amazon Web Services (AWS). Cree una cuenta y navegue a Amazon SageMaker desde su consola de AWS. Cree una instancia de Notebook. En la página Crear una instancia de Notebook, haga clic en Repositorios Git y seleccione Clonar un repositorio Git público solo en esta instancia de Notebook . En la URL del repositorio de Git, escriba https://github.com/scliff108/Udacity-ML-Capstone-Project.git
. Finalmente, cree la instancia del cuaderno.
Una vez configurada la instancia de Notebook, abra el cuaderno stock-forecasting-deepar
. Asegúrese de ingresar su RAPIDAPI-HOST
y RAPIDAPI-KEY
en la función load_historical_data
bajo el encabezado Cargar y explorar los datos .
Después de eso, puede ejecutar todas las celdas del Notebook. Después de unos 15 minutos, debería generar y evaluar un modelo.
Ahora que tiene un modelo entrenado, deberá crear una función Lambda para enviar datos al punto final de SageMaker y devolver el resultado. Copie y pegue el siguiente código en una función Lambda en AWS. Deberá ingresar su depósito S3 y el nombre del punto final de su predictor en el código proporcionado.
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
}
Desafortunadamente, Lambda solo puede manejar una cantidad limitada de datos, por lo que tenemos que proporcionar menos datos al predictor DeepAR que los que tenemos en S3. Para hacer esto, abra el cuaderno lambda-data
. Nuevamente, ingrese su información de RapidAPI y ejecute todas las celdas. Esto cargará datos que son lo suficientemente pequeños como para que Lambda los maneje.
Finalmente, podemos configurar API Gateway para activar la función Lambda que creamos y obtener predicciones de precios de acciones. Para hacer esto, cree un nuevo método POST y asegúrese de que la función Lambda esté seleccionada. Luego, ingrese el nombre de su función Lambda en el cuadro de texto y haga clic en guardar. Finalmente, haga clic en el menú desplegable Acciones para implementar API.
Necesitará la URL de invocación para implementar su aplicación web.
Ahora que tiene una API disponible, puede comenzar a usarla en una aplicación web. He creado un archivo HTML y JavaScript muy simple para interactuar con la API. Descargue la carpeta del sitio web desde este repositorio de GitHub, agregue la URL de su API pública donde se indica en el archivo y ábrala. Cuando haces clic en el botón Obtener datos , deberías ver las 20 acciones en un acordeón. Haga clic en la acción para ver los precios previstos.
Su aplicación web se verá así para comenzar.
Después de hacer clic en el botón Obtener datos , su aplicación web tendrá este aspecto.
Después de hacer clic en una acción, su aplicación web se verá así.