أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot

Amazon SageMaker الطيار الآلي يجعل من الممكن للمؤسسات إنشاء ونشر نموذج التعلم الآلي الشامل (ML) ونشره بسرعة مع بضعة أسطر من التعليمات البرمجية أو حتى بدون أي كود على الإطلاق مع أمازون ساجميكر ستوديو. يفرغ الطيار الآلي الرفع الثقيل للبنية التحتية للتكوين والوقت المستغرق لبناء خط أنابيب كامل ، بما في ذلك هندسة الميزات واختيار النموذج وضبط المعلمة الفائقة.

في هذا المنشور ، نوضح كيفية الانتقال من البيانات الأولية إلى خط أنابيب استدلال قوي ومنتشر بالكامل باستخدام الطيار الآلي.

حل نظرة عامة

نستخدم مجموعة بيانات Lyft العامة حول مشاركة الدراجات لهذه المحاكاة للتنبؤ بما إذا كان المستخدم سيشارك أم لا في برنامج مشاركة الدراجة للجميع. هذه مشكلة تصنيف ثنائية بسيطة.

نريد أن نظهر مدى سهولة إنشاء خط أنابيب استدلال آلي وفي الوقت الفعلي لتصنيف المستخدمين بناءً على مشاركتهم في برنامج Bike Share for All. تحقيقًا لهذه الغاية ، نقوم بمحاكاة خط أنابيب استيعاب واستدلال شامل للبيانات لشركة مشاركة دراجات خيالية تعمل في منطقة خليج سان فرانسيسكو.

يتم تقسيم البنية إلى جزأين: خط أنابيب الابتلاع وخط أنابيب الاستدلال.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

نحن نركز بشكل أساسي على خط أنابيب ML في القسم الأول من هذا المنشور ، ونراجع خط أنابيب استيعاب البيانات في الجزء الثاني.

المتطلبات الأساسية المسبقة

لمتابعة هذا المثال ، أكمل المتطلبات الأساسية التالية:

  1. قم بإنشاء مثيل دفتر ملاحظات SageMaker جديد.
  2. خلق أمازون كينسيس داتا فايرهاوس تيار التسليم مع AWS لامدا وظيفة التحويل. للحصول على التعليمات ، انظر Amazon Kinesis Firehose Data Transformation مع AWS Lambda. هذه الخطوة اختيارية ومطلوبة فقط لمحاكاة تدفق البيانات.

استكشاف البيانات

لنقم بتنزيل وتصور مجموعة البيانات الموجودة في الأماكن العامة خدمة تخزين أمازون البسيطة (Amazon S3) دلو وموقع ويب ثابت:

# The dataset is located in a public bucket and static s3 website.
# https://www.lyft.com/bikes/bay-wheels/system-data import pandas as pd
import numpy as np
import os
from time import sleep !wget -q -O '201907-baywheels-tripdata.zip' https://s3.amazonaws.com/baywheels-data/201907-baywheels-tripdata.csv.zip
!unzip -q -o 201907-baywheels-tripdata.zip
csv_file = os.listdir('.')
data = pd.read_csv('201907-baywheels-tripdata.csv', low_memory=False)
data.head()

تُظهر لقطة الشاشة التالية مجموعة فرعية من البيانات قبل التحويل.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

يحتوي العمود الأخير من البيانات على الهدف الذي نريد توقعه ، وهو متغير ثنائي يأخذ إما قيمة نعم أو لا ، مما يشير إلى ما إذا كان المستخدم يشارك في برنامج Bike Share for All.

دعنا نلقي نظرة على توزيع المتغير المستهدف لدينا لأي خلل في البيانات.

# For plotting
%matplotlib inline
import matplotlib.pyplot as plt
#!pip install seaborn # If you need this library
import seaborn as sns
display(sns.countplot(x='bike_share_for_all_trip', data=data))

أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

كما هو موضح في الرسم البياني أعلاه ، فإن البيانات غير متوازنة ، حيث يشارك عدد أقل من الأشخاص في البرنامج.

نحن بحاجة إلى موازنة البيانات لمنع التحيز المفرط في التمثيل. هذه الخطوة اختيارية لأن الطيار الآلي يوفر أيضًا نهجًا داخليًا للتعامل مع عدم توازن الفئة تلقائيًا ، والذي يتم تعيينه افتراضيًا على مقياس التحقق من درجة F1. بالإضافة إلى ذلك ، إذا اخترت موازنة البيانات بنفسك ، فيمكنك استخدام تقنيات أكثر تقدمًا لمعالجة عدم توازن الفصل ، مثل سموت or GAN.

بالنسبة لهذا المنشور ، قمنا باختزال فئة الأغلبية (لا) كأسلوب لموازنة البيانات:

الكود التالي يثري البيانات ويقلل من العينات للفئة الممثلة تمثيلا زائدا:

df = data.copy()
df.drop(columns=['rental_access_method'], inplace=True) df['start_time'] = pd.to_datetime(df['start_time'])
df['start_time'] = pd.to_datetime(df['end_time']) # Adding some day breakdown
df = df.assign(day_of_week=df.start_time.dt.dayofweek, hour_of_day=df.start_time.dt.hour, trip_month=df.start_time.dt.month)
# Breaking the day in 4 parts: ['morning', 'afternoon', 'evening']
conditions = [ (df['hour_of_day'] >= 5) & (df['hour_of_day'] < 12), (df['hour_of_day'] >= 12) & (df['hour_of_day'] < 18), (df['hour_of_day'] >= 18) & (df['hour_of_day'] < 21),
]
choices = ['morning', 'afternoon', 'evening']
df['part_of_day'] = np.select(conditions, choices, default='night')
df.dropna(inplace=True) # Downsampling the majority to rebalance the data
# We are getting about an even distribution
df.sort_values(by='bike_share_for_all_trip', inplace=True)
slice_pointe = int(df['bike_share_for_all_trip'].value_counts()['Yes'] * 2.1)
df = df[-slice_pointe:]
# The data is balanced now. Let's reshuffle the data
df = df.sample(frac=1).reset_index(drop=True)

لقد تركنا عن عمد ميزاتنا الفئوية غير مشفرة ، بما في ذلك قيمة الهدف الثنائي. وذلك لأن الطيار الآلي يعتني بترميز البيانات وفك تشفيرها لنا كجزء من هندسة الميزات التلقائية ونشر خطوط الأنابيب ، كما نرى في القسم التالي.

تُظهر لقطة الشاشة التالية عينة من بياناتنا.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

تبدو البيانات في الرسوم البيانية التالية طبيعية بخلاف ذلك ، مع توزيع ثنائي النسق يمثل القمتين لساعات الصباح وساعات الذروة بعد الظهر ، كما هو متوقع. نلاحظ أيضًا أنشطة منخفضة في عطلات نهاية الأسبوع وفي الليل.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

في القسم التالي ، نقوم بتغذية البيانات إلى الطيار الآلي حتى يتمكن من إجراء تجربة لنا.

بناء نموذج تصنيف ثنائي

يتطلب الطيار الآلي أن نحدد دلاء وجهة الإدخال والإخراج. يستخدم حاوية الإدخال لتحميل البيانات وحاوية الإخراج لحفظ القطع الأثرية ، مثل هندسة الميزات ودفاتر Jupyter التي تم إنشاؤها. نحتفظ بـ 5٪ من مجموعة البيانات لتقييم أداء النموذج والتحقق منه بعد اكتمال التدريب وتحميل 95٪ من مجموعة البيانات إلى حاوية إدخال S3. انظر الكود التالي:

import sagemaker
import boto3 # Let's define our storage.
# We will use the default sagemaker bucket and will enforce encryption bucket = sagemaker.Session().default_bucket() # SageMaker default bucket. #Encrypting the bucket
s3 = boto3.client('s3')
SSEConfig={ 'Rules': [ { 'ApplyServerSideEncryptionByDefault': { 'SSEAlgorithm': 'AES256', } }, ] }
s3.put_bucket_encryption(Bucket=bucket, ServerSideEncryptionConfiguration=SSEConfig) prefix = 'sagemaker-automl01' # prefix for ther bucket
role = sagemaker.get_execution_role() # IAM role object to use by SageMaker
sagemaker_session = sagemaker.Session() # Sagemaker API
region = sagemaker_session.boto_region_name # AWS Region # Where we will load our data input_path = "s3://{}/{}/automl_bike_train_share-1".format(bucket, prefix) output_path = "s3://{}/{}/automl_bike_output_share-1".format(bucket, prefix) # Spliting data in train/test set.
# We will use 95% of the data for training and the remainder for testing.
slice_point = int(df.shape[0] * 0.95) training_set = df[:slice_point] # 95%
testing_set = df[slice_point:] # 5% # Just making sure we have split it correctly
assert training_set.shape[0] + testing_set.shape[0] == df.shape[0] # Let's save the data locally and upload it to our s3 data location
training_set.to_csv('bike_train.csv')
testing_set.to_csv('bike_test.csv', header=False) # Uploading file the trasining set to the input bucket
sagemaker.s3.S3Uploader.upload(local_path='bike_train.csv', desired_s3_uri=input_path)

بعد تحميل البيانات إلى وجهة الإدخال ، حان الوقت لبدء الطيار الآلي:

from sagemaker.automl.automl import AutoML
# You give your job a name and provide the s3 path where you uploaded the data
bike_automl_binary = AutoML(role=role, target_attribute_name='bike_share_for_all_trip', output_path=output_path, max_candidates=30)
# Starting the training bike_automl_binary.fit(inputs=input_path, wait=False, logs=False)

كل ما نحتاجه لبدء التجربة هو استدعاء طريقة fit (). يحتاج الطيار الآلي إلى موقع الإدخال والإخراج S3 وعمود السمة الهدف كمعلمات مطلوبة. بعد معالجة الميزة ، يستدعي الطيار الآلي SageMaker ضبط النموذج التلقائي للعثور على أفضل نسخة من النموذج عن طريق تشغيل العديد من الوظائف التدريبية على مجموعة البيانات الخاصة بك. أضفنا المعلمة max_candidates الاختيارية للحد من عدد المرشحين إلى 30 ، وهو عدد وظائف التدريب التي يطلقها الطيار الآلي مع مجموعات مختلفة من الخوارزميات والمعلمات الفائقة من أجل العثور على أفضل نموذج. إذا لم تحدد هذه المعلمة ، فستكون القيمة الافتراضية هي 250.

يمكننا ملاحظة تقدم الطيار الآلي بالشفرة التالية:

# Let's monitor the progress this will take a while. Go grup some coffe.
from time import sleep def check_job_status(): return bike_automl_binary.describe_auto_ml_job()['AutoMLJobStatus'] def discribe(): return bike_automl_binary.describe_auto_ml_job() while True: print (check_job_status(), discribe()['AutoMLJobSecondaryStatus'], end='** ') if check_job_status() in ["Completed", "Failed"]: if "Failed" in check_job_status(): print(discribe()['FailureReason']) break sleep(20)

يستغرق التدريب بعض الوقت حتى يكتمل. أثناء تشغيله ، دعنا نلقي نظرة على سير عمل الطيار الآلي.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

للعثور على أفضل مرشح ، استخدم الكود التالي:

# Let's take a look at the best candidate selected by AutoPilot
from IPython.display import JSON
def jsonView(obj, rootName=None): return JSON(obj, root=rootName, expanded=True) bestCandidate = bike_automl_binary.describe_auto_ml_job()['BestCandidate']
display(jsonView(bestCandidate['FinalAutoMLJobObjectiveMetric'], 'FinalAutoMLJobObjectiveMetric'))

تظهر لقطة الشاشة التالية مخرجاتنا.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

حقق نموذجنا دقة تحقق تصل إلى 96٪ ، لذلك سنقوم بنشره. يمكننا إضافة شرط بحيث لا نستخدم النموذج إلا إذا كانت الدقة أعلى من مستوى معين.

خط أنابيب الاستدلال

قبل نشر نموذجنا ، دعنا نفحص أفضل مرشح لدينا وما يحدث في خط الأنابيب لدينا. انظر الكود التالي:

display(jsonView(bestCandidate['InferenceContainers'], 'InferenceContainers'))

يوضح الرسم البياني التالي ناتجنا.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

قام الطيار الآلي ببناء النموذج وقام بتعبئته في ثلاث حاويات مختلفة ، كل منها يدير مهمة محددة بالتتابع: التحويل والتنبؤ والتحويل العكسي. هذا الاستدلال متعدد الخطوات ممكن مع a خط أنابيب الاستدلال SageMaker.

يمكن للاستدلال متعدد الخطوات أيضًا أن يسلسل نماذج استدلال متعددة. على سبيل المثال ، يمكن أن تؤدي حاوية واحدة تحليل المكون الرئيسي قبل تمرير البيانات إلى حاوية XGBoost.

انشر خط أنابيب الاستدلال إلى نقطة نهاية

تتضمن عملية النشر بضعة أسطر فقط من التعليمات البرمجية:

# We chose to difine an endpoint name.
from datetime import datetime as dt
today = str(dt.today())[:10]
endpoint_name='binary-bike-share-' + today
endpoint = bike_automl_binary.deploy(initial_instance_count=1, instance_type='ml.m5.xlarge', endpoint_name=endpoint_name, candidate=bestCandidate, wait=True)

لنقم بتهيئة نقطة النهاية الخاصة بنا للتنبؤ باستخدام متنبئ:

from sagemaker.serializers import CSVSerializer
from sagemaker.deserializers import CSVDeserializer
csv_serializer = CSVSerializer()
csv_deserializer = CSVDeserializer()
# Initialize the predictor
predictor = sagemaker.predictor.Predictor(endpoint_name=endpoint_name, sagemaker_session=sagemaker.Session(), serializer=csv_serializer, deserializer=csv_deserializer )

الآن بعد أن أصبح لدينا نقطة النهاية والتنبؤ جاهزين ، حان الوقت لاستخدام بيانات الاختبار التي وضعناها جانبًا واختبار دقة نموذجنا. نبدأ بتحديد وظيفة الأداة المساعدة التي ترسل البيانات سطرًا واحدًا في كل مرة إلى نقطة نهاية الاستدلال الخاصة بنا وتحصل على تنبؤ في المقابل. لأن لدينا ملف XGBoost النموذج ، نقوم بإسقاط المتغير الهدف قبل إرسال سطر CSV إلى نقطة النهاية. بالإضافة إلى ذلك ، قمنا بإزالة الرأس من ملف CSV التجريبي قبل المرور عبر الملف ، وهو أيضًا مطلب آخر لـ XGBoost على SageMaker. انظر الكود التالي:

# The fuction takes 3 arguments: the file containing the test set,
# The predictor and finaly the number of lines to send for prediction.
# The function returns two Series: inferred and Actual.
def get_inference(file, predictor, n=1): infered = [] actual = [] with open(file, 'r') as csv: for i in range(n): line = csv.readline().split(',') #print(line) try: # Here we remove the target variable from the csv line before predicting observed = line.pop(14).strip('n') actual.append(observed) except: pass obj = ','.join(line) predicted = predictor.predict(obj)[0][0] infered.append(predicted) pd.Series(infered) data = {'Infered': pd.Series(infered), 'Observed': pd.Series(actual)} return pd.DataFrame(data=data) n = testing_set.shape[0] # The size of the testing data
inference_df = get_inference('bike_test.csv', predictor, n) inference_df['Binary_Result'] = (inference_df['Observed'] == inference_df['Infered'])
display(inference_df.head())

تظهر لقطة الشاشة التالية مخرجاتنا.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

الآن دعنا نحسب دقة نموذجنا.
أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.

انظر الكود التالي:

count_binary = inference_df['Binary_Result'].value_counts()
accuracy = count_binary[True]/n
print('Accuracy:', accuracy)

نحصل على دقة 92٪. هذا أقل قليلاً من نسبة 96٪ التي تم الحصول عليها أثناء خطوة التحقق ، لكنها لا تزال مرتفعة بدرجة كافية. لا نتوقع أن تكون الدقة متماثلة تمامًا لأن الاختبار يتم باستخدام مجموعة بيانات جديدة.

استيعاب البيانات

قمنا بتنزيل البيانات مباشرة وتكوينها للتدريب. في الحياة الواقعية ، قد تضطر إلى إرسال البيانات مباشرة من جهاز الحافة إلى بحيرة البيانات وجعل SageMaker يقوم بتحميلها مباشرة من بحيرة البيانات إلى الكمبيوتر المحمول.

يعتبر Kinesis Data Firehose خيارًا جيدًا والطريقة الأكثر مباشرة لتحميل البيانات المتدفقة بشكل موثوق في بحيرات البيانات ومخازن البيانات وأدوات التحليل. يمكنه التقاط البيانات المتدفقة وتحويلها وتحميلها إلى Amazon S3 ومخازن بيانات AWS الأخرى.

بالنسبة لحالة الاستخدام الخاصة بنا ، نقوم بإنشاء تدفق توصيل Kinesis Data Firehose مع وظيفة تحويل Lambda للقيام ببعض عمليات تنظيف البيانات خفيفة الوزن أثناء عبورها التدفق. انظر الكود التالي:

# Data processing libraries
import pandas as pd # Data processing
import numpy as np
import base64
from io import StringIO def lambda_handler(event, context): output = [] print('Received', len(event['records']), 'Records') for record in event['records']: payload = base64.b64decode(record['data']).decode('utf-8') df = pd.read_csv(StringIO(payload), index_col=0) df.drop(columns=['rental_access_method'], inplace=True) df['start_time'] = pd.to_datetime(df['start_time']) df['start_time'] = pd.to_datetime(df['end_time']) # Adding some day breakdown df = df.assign(day_of_week=df.start_time.dt.dayofweek, hour_of_day=df.start_time.dt.hour, trip_month=df.start_time.dt.month) # Breaking the day in 4 parts: ['morning', 'afternoon', 'evening'] conditions = [ (df['hour_of_day'] >= 5) & (df['hour_of_day'] < 12), (df['hour_of_day'] >= 12) & (df['hour_of_day'] < 18), (df['hour_of_day'] >= 18) & (df['hour_of_day'] < 21), ] choices = ['morning', 'afternoon', 'evening'] df['part_of_day'] = np.select(conditions, choices, default='night') df.dropna(inplace=True) # Downsampling the majority to rebalance the data # We are getting about an even distribution df.sort_values(by='bike_share_for_all_trip', inplace=True) slice_pointe = int(df['bike_share_for_all_trip'].value_counts()['Yes'] * 2.1) df = df[-slice_pointe:] # The data is balanced now. Let's reshuffle the data df = df.sample(frac=1).reset_index(drop=True) data = base64.b64encode(bytes(df.to_csv(), 'utf-8')).decode("utf-8") output_record = { 'recordId': record['recordId'], 'result': 'Ok', 'data': data } output.append(output_record) print('Returned', len(output), 'Records') print('Event', event) return {'records': output}

تقوم وظيفة Lambda بتحويل خفيف للبيانات المتدفقة من الأجهزة إلى بحيرة البيانات. تتوقع ملف بيانات بتنسيق CSV.

لخطوة الاستيعاب ، نقوم بتنزيل البيانات ومحاكاة تدفق البيانات إلى Kinesis Data Firehose باستخدام وظيفة تحويل Lambda وفي بحيرة بيانات S3 الخاصة بنا.

لنحاكي دفق بضعة أسطر:

# Saving the data in one file.
file = '201907-baywheels-tripdata.csv' data.to_csv(file) # Stream the data 'n' lines at a time.
# Only run this for a minute and stop the cell
def streamer(file, n): with open(file, 'r') as csvfile: header = next(csvfile) data = header counter = 0 loop = True while loop == True: for i in range(n): line = csvfile.readline() data+=line # We reached the end of the csv file. if line == '': loop = False counter+=n # Use your kinesis streaming name stream = client.put_record(DeliveryStreamName='firehose12-DeliveryStream-OJYW71BPYHF2', Record={"Data": bytes(data, 'utf-8')}) data = header print( file, 'HTTPStatusCode: '+ str(stream['ResponseMetadata']['HTTPStatusCode']), 'csv_lines_sent: ' + str(counter), end=' -*- ') sleep(random.randrange(1, 3)) return
# Streaming for 500 lines at a time. You can change this number up and down.
streamer(file, 500) # We can now load our data as a DataFrame because it’s streamed into the S3 data lake:
# Getting data from s3 location where it was streamed.
STREAMED_DATA = 's3://firehose12-deliverybucket-11z0ya3patrod/firehose/2020'
csv_uri = sagemaker.s3.S3Downloader.list(STREAMED_DATA)
in_memory_string = [sagemaker.s3.S3Downloader.read_file(file) for file in csv_uri]
in_memory_csv = [pd.read_csv(StringIO(file), index_col=0) for file in in_memory_string]
display(df.tail())

تنظيف

من المهم حذف جميع الموارد المستخدمة في هذا التمرين لتقليل التكلفة. يحذف الكود التالي نقطة نهاية استدلال SageMaker التي أنشأناها بالإضافة إلى بيانات التدريب والاختبار التي قمنا بتحميلها:

#Delete the s3 data
predictor.delete_endpoint() # Delete s3 data
s3 = boto3.resource('s3')
ml_bucket = sagemaker.Session().default_bucket()
delete_data = s3.Bucket(ml_bucket).objects.filter(Prefix=prefix).delete()

وفي الختام

يمكن لمهندسي ML وعلماء البيانات ومطوري البرامج استخدام الطيار الآلي لبناء ونشر خط أنابيب للاستدلال مع خبرة قليلة في برمجة ML أو بدونها. يوفر الطيار الآلي الوقت والموارد ، باستخدام علم البيانات وأفضل ممارسات التعلم الآلي. يمكن للمؤسسات الكبيرة الآن تحويل الموارد الهندسية بعيدًا عن تكوين البنية التحتية نحو تحسين النماذج وحل حالات استخدام الأعمال. يمكن للشركات الناشئة والمؤسسات الصغيرة البدء في التعلم الآلي مع خبرة قليلة أو معدومة في تعلم الآلة.

لتبدأ مع SageMaker Autopilot ، راجع ملف صفحة المنتج أو قم بالوصول إلى SageMaker Autopilot داخل SageMaker Studio.

نوصي أيضًا بمعرفة المزيد حول الميزات المهمة الأخرى التي يقدمها SageMaker ، مثل متجر ميزات Amazon SageMakerالذي يتكامل مع خطوط أنابيب Amazon SageMaker لإنشاء وإضافة البحث عن الميزات واكتشافها وإعادة استخدام تدفقات عمل ML الآلي. يمكنك تشغيل العديد من عمليات محاكاة الطيار الآلي بميزة مختلفة أو متغيرات مستهدفة في مجموعة البيانات الخاصة بك. يمكنك أيضًا التعامل مع هذا على أنه مشكلة ديناميكية في تخصيص السيارة حيث يحاول نموذجك التنبؤ بالطلب على السيارة بناءً على الوقت (مثل الوقت من اليوم أو اليوم من الأسبوع) أو الموقع ، أو كليهما.


حول المؤلف

أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.دوج مبايا هو مهندس حلول أقدم مع التركيز على البيانات والتحليلات. يعمل Doug بشكل وثيق مع شركاء AWS ، مما يساعدهم على دمج حلول البيانات والتحليلات في السحابة. تتضمن خبرة Doug السابقة دعم عملاء AWS في قطاع مشاركة الرحلات وتوصيل الطعام.

أتمتة نموذج تصنيف الدراجات والدراجات البخارية المشتركة باستخدام Amazon SageMaker Autopilot PlatoBlockchain Data Intelligence. البحث العمودي. عاي.فاليريو بيروني هو مدير علوم تطبيقية يعمل على الضبط التلقائي للنموذج والطيار الآلي من Amazon SageMaker.

الطابع الزمني:

اكثر من التعلم الآلي من AWS