Repositori GitHub ini berisi proyek akhir saya untuk Nanodegree Insinyur Pembelajaran Mesin Udacity.
Ini adalah Prediktor Harga Saham. Ia menggunakan algoritma DeepAR Amazon untuk membuat model dan memperkirakan harga saham di masa depan. Repositori ini berisi Notebook Jupiter yang digunakan untuk mengumpulkan data, melatih model, dan mengevaluasinya. Notebook ini juga berisi aplikasi web yang dapat digunakan untuk memprediksi harga saham hingga 30 hari perdagangan di masa depan.
Untuk menjalankan Aplikasi Web ini, Anda harus membuat dan menerapkan model terlebih dahulu. Ada beberapa persyaratan sebelum Anda memulai.
Anda harus mendaftar ke RapidAPI. Buat akun dan berlangganan Yahoo Finance API. Anda memerlukan RAPIDAPI-HOST
dan RAPIDAPI-KEY
di Notebook Jupiter untuk melatih model Anda.
Anda juga harus memiliki akun Amazon Web Services (AWS). Buat akun dan navigasikan ke Amazon SageMaker dari Konsol AWS Anda. Buat Mesin Virtual Notebook. Pada halaman Buat Instans Notebook, klik Repositori Git dan pilih Kloning repositori Git publik ke instans notebook ini saja . Di URL repositori Git, ketik https://github.com/scliff108/Udacity-ML-Capstone-Project.git
. Terakhir, buat instance notebook.
Setelah instans Notebook disiapkan, buka notebook stock-forecasting-deepar
. Pastikan untuk memasukkan RAPIDAPI-HOST
dan RAPIDAPI-KEY
Anda dalam fungsi load_historical_data
di bawah judul Muat dan Jelajahi Data .
Setelah itu, Anda bisa menjalankan semua sel di Notebook. Setelah sekitar 15 menit, model Anda akan dibuat dan dievaluasi.
Sekarang setelah Anda memiliki model yang dilatih, Anda perlu membuat fungsi Lambda untuk mengirim data ke titik akhir SageMaker dan mengembalikan hasilnya. Salin dan tempel kode di bawah ini ke dalam fungsi Lambda di AWS. Anda harus memasukkan Bucket S3 dan Nama Titik Akhir Prediktor Anda dalam kode yang disediakan.
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
}
Sayangnya, Lambda hanya dapat menangani begitu banyak data, jadi kami harus menyediakan lebih sedikit data ke prediktor DeepAR dibandingkan yang kami miliki di S3. Untuk melakukan ini, buka buku catatan lambda-data
. Sekali lagi, masukkan informasi RapidAPI Anda dan jalankan semua sel. Ini akan mengunggah data yang cukup kecil untuk ditangani Lambda.
Terakhir, kita dapat menyiapkan API Gateway untuk memicu fungsi Lambda yang kita buat dan mendapatkan Prediksi Harga Saham. Untuk melakukannya, buat metode POST baru dan pastikan Fungsi Lambda dipilih. Lalu, masukkan nama Fungsi Lambda Anda ke dalam kotak teks dan klik simpan. Terakhir, klik tarik-turun Tindakan untuk Menyebarkan API.
Anda memerlukan URL Invoke untuk menyebarkan Aplikasi Web Anda.
Sekarang setelah Anda memiliki API, Anda dapat mulai menggunakannya di aplikasi web. Saya telah membuat file HTML dan JavaScript yang sangat sederhana untuk berinteraksi dengan API. Unduh folder situs web dari Repositori GitHub ini, tambahkan URL API Publik Anda yang disebutkan dalam file dan buka. Saat Anda mengklik tombol Dapatkan Data , Anda akan melihat 20 saham dalam satu akordeon. Klik pada saham untuk melihat prediksi harga.
Aplikasi web Anda akan terlihat seperti ini untuk memulai.
Setelah Anda mengklik tombol Dapatkan Data , aplikasi web Anda akan terlihat seperti ini.
Setelah mengklik stok, aplikasi web Anda akan terlihat seperti ini.