يحتوي مستودع GitHub هذا على مشروعي النهائي لمهندس التعلم الآلي Nanodegree في Udacity.
هذا هو توقع سعر السهم. ويستخدم خوارزمية DeepAR من Amazon لإنشاء نموذج والتنبؤ بأسعار الأسهم المستقبلية. يحتوي هذا المستودع على Jupiter Notebook يُستخدم لجمع البيانات وتدريب النموذج وتقييمه. يحتوي هذا الدفتر أيضًا على تطبيق ويب يمكن نشره للتنبؤ بأسعار الأسهم حتى 30 يوم تداول في المستقبل.
لتشغيل تطبيق الويب هذا، يجب عليك أولاً إنشاء نموذج ونشره. هناك بعض المتطلبات قبل البدء.
يجب عليك التسجيل في RapidAPI. أنشئ حسابًا واشترك في Yahoo Finance API. ستحتاج إلى RAPIDAPI-HOST
و RAPIDAPI-KEY
في Jupiter Notebook لتدريب النموذج الخاص بك.
يجب أن يكون لديك أيضًا حساب Amazon Web Services (AWS). قم بإنشاء حساب وانتقل إلى Amazon SageMaker من وحدة تحكم AWS الخاصة بك. إنشاء مثيل دفتر ملاحظات. في صفحة إنشاء مثيل دفتر ملاحظات، انقر فوق مستودعات Git وحدد استنساخ مستودع Git عام لمثيل دفتر الملاحظات هذا فقط . في عنوان URL لمستودع Git، اكتب https://github.com/scliff108/Udacity-ML-Capstone-Project.git
. وأخيرًا، قم بإنشاء مثيل دفتر الملاحظات.
بمجرد إعداد مثيل دفتر الملاحظات، افتح دفتر الملاحظات stock-forecasting-deepar
. تأكد من إدخال RAPIDAPI-HOST
و RAPIDAPI-KEY
في وظيفة load_historical_data
تحت عنوان Load and Explore the Data .
بعد ذلك، يمكنك تشغيل جميع الخلايا الموجودة في دفتر الملاحظات. بعد حوالي 15 دقيقة، من المفترض أن يكون لديك نموذج تم إنشاؤه وتقييمه.
الآن بعد أن أصبح لديك نموذج تم تدريبه، ستحتاج إلى إنشاء وظيفة Lambda لإرسال البيانات إلى نقطة نهاية SageMaker وإرجاع النتيجة. انسخ الكود أدناه والصقه في وظيفة Lambda على AWS. سوف تحتاج إلى إدخال حاوية 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 لتشغيل وظيفة Lambda التي أنشأناها والحصول على توقعات أسعار الأسهم. للقيام بذلك، قم بإنشاء طريقة POST جديدة وتأكد من تحديد وظيفة Lambda. ثم أدخل اسم وظيفة Lambda الخاصة بك في مربع النص وانقر فوق "حفظ". وأخيرًا، انقر فوق القائمة المنسدلة "الإجراءات" لنشر واجهة برمجة التطبيقات (API).
ستحتاج إلى عنوان URL للاستدعاء لنشر تطبيق الويب الخاص بك.
الآن بعد أن أصبحت لديك واجهة برمجة التطبيقات (API) متاحة، يمكنك البدء في استخدامها في تطبيق الويب. لقد قمت بإنشاء ملف HTML وJavaScript بسيط جدًا للتفاعل مع واجهة برمجة التطبيقات. قم بتنزيل مجلد موقع الويب من مستودع GitHub، وأضف عنوان URL العام لواجهة برمجة التطبيقات (API) الخاص بك حيث تم تحديده في الملف وافتحه. عند النقر فوق زر الحصول على البيانات ، يجب أن تشاهد الأسهم العشرين في الأكورديان. انقر على السهم لمعرفة الأسعار المتوقعة.
سيبدو تطبيق الويب الخاص بك بهذا الشكل في البداية.
بعد النقر على زر الحصول على البيانات ، سيبدو تطبيق الويب الخاص بك بهذا الشكل.
بعد النقر على أحد الأسهم، سيبدو تطبيق الويب الخاص بك بهذا الشكل.