此 GitHub 儲存庫包含我的 Udacity 機器學習工程師奈米學位的最終專案。
這是股票價格預測器。它使用亞馬遜的 DeepAR 演算法創建模型並預測未來的股票價格。該儲存庫包含一個 Jupiter Notebook,用於收集資料、訓練模型並對其進行評估。該筆記本還包含一個 Web 應用程序,可以部署該應用程式來預測未來最多 30 個交易日的股票價格。
要執行此 Web 應用程序,您必須先建立並部署模型。開始之前有一些要求。
您必須註冊 RapidAPI。建立帳戶並訂閱雅虎財經 API。您將需要 Jupiter Notebook 中的RAPIDAPI-HOST
和RAPIDAPI-KEY
來訓練您的模型。
您還必須擁有 Amazon Web Services (AWS) 帳戶。建立帳戶並從 AWS 主控台導覽至 Amazon SageMaker。建立一個筆記本實例。在建立筆記本實例頁面上,按一下Git 儲存庫並選擇僅將公用 Git 儲存庫複製到此筆記本實例。在Git 儲存庫 URL中,輸入https://github.com/scliff108/Udacity-ML-Capstone-Project.git
。最後,建立筆記本實例。
設定筆記本實例後,打開stock-forecasting-deepar
筆記本。請務必在標題「載入和瀏覽資料」下的load_historical_data
函數中輸入您的RAPIDAPI-HOST
和RAPIDAPI-KEY
。
之後,您可以執行 Notebook 中的所有儲存格。大約 15 分鐘後,您應該產生並評估模型。
現在您已經訓練了模型,您將需要建立一個 Lambda 函數以將資料傳送到 SageMaker 端點並傳回結果。將下列程式碼複製並貼上到 AWS 上的 Lambda 函數中。您需要在提供的程式碼中輸入您的S3 儲存桶和預測器端點名稱。
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
}
不幸的是,Lambda 只能處理這麼多數據,因此我們必須向 DeepAR 預測器提供比 S3 更少的數據。為此,請開啟lambda-data
筆記本。再次輸入您的 RapidAPI 資訊並運行所有單元。這將上傳足夠小的資料供 Lambda 處理。
最後,我們可以設定 API Gateway 來觸發我們建立的 Lambda 函數並取得股票價格預測。為此,請建立一個新的 POST 方法並確保選擇 Lambda 函數。然後,在文字方塊中輸入 Lambda 函數的名稱並按一下儲存。最後,按一下操作下拉清單以部署 API。
您將需要呼叫 URL來部署您的 Web 應用程式。
現在您已經有了可用的 API,您可以開始在 Web 應用程式中使用它。我製作了一個非常簡單的 HTML 和 JavaScript 檔案來與 API 互動。從此 GitHub 儲存庫下載網站資料夾,在檔案中指定的位置新增您的公共 API URL 並開啟它。當您單擊“獲取數據”按鈕時,您應該會在手風琴中看到 20 隻股票。點擊股票即可查看預測價格。
您的網頁應用程式啟動時將如下所示。
點擊“獲取數據”按鈕後,您的網頁應用程式將如下所示。
點擊股票後,您的網路應用程式將如下所示。