開始使SDK用 (針對 Python (肉毒 3)) - Amazon Personalize

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

開始使SDK用 (針對 Python (肉毒 3))

本教程向您展示如何使用 Python(Boto3)從頭到尾完成 Amazon Personalize 化工作流程。SDK

完成入門練習後,若要避免產生不必要的費用,請刪除您建立的資源。如需詳細資訊,請參閱刪除 Amazon Personalize 化資源的要求

必要條件

以下是在本指南中使用 Python 範例的先決條件:

  • 完成入門先決條件以設定所需權限並建立訓練資料。如果您使用自己的來源資料,請確定您的資料格式與先決條件一樣。

  • 依照中的指定設定 AWS SDK for Python (Boto3) 環境正在設定 AWS SDKs

教學課程

在以下步驟中,您可以驗證您的環境並SDK為 Amazon Personalize 化的 Python(Boto3)客戶端創建。然後,您可以匯入資料、建立和部署含有行銷活動的解決方案版本,以及取得建議。

當您完成事前準備之後,請執行下列 Python 範例,以確認您的環境設定正確。此代碼還會創建您在本教程中使用的 Amazon Personalize 化 boto3 客戶端。如果您的環境設定正確,則會顯示可用配方的清單,您可以執行本自學課程中的其他範例。

import boto3 personalizeRt = boto3.client('personalize-runtime') personalize = boto3.client('personalize') response = personalize.list_recipes() for recipe in response['recipes']: print (recipe)

建立 Amazon Personalize boto3 用戶端並驗證您的環境之後,請匯入完成後建立的歷史資料。入門先決條件若要將歷史資料匯入 Amazon Personalize,請執行下列操作:

  1. 使用下面的代碼在 Amazon Personalize 化創建模式。getting-started-schema以結構描述的名稱取代。

    import json schema = { "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" } create_interactions_schema_response = personalize.create_schema( name='getting-started-schema', schema=json.dumps(schema) ) interactions_schema_arn = create_interactions_schema_response['schemaArn'] print(json.dumps(create_interactions_schema_response, indent=2))
  2. 使用下列程式碼建立資料集群組。dataset group name以資料集群組的名稱取代。

    response = personalize.create_dataset_group(name = 'dataset group name') dataset_group_arn = response['datasetGroupArn'] description = personalize.describe_dataset_group(datasetGroupArn = dataset_group_arn)['datasetGroup'] print('Name: ' + description['name']) print('ARN: ' + description['datasetGroupArn']) print('Status: ' + description['status'])
  3. 使用下列程式碼在新資料集群組中建立 Item 互動資料集。為資料集指定名稱,schema_arndataset_group_arn提供與先前步驟。

    response = personalize.create_dataset( name = 'datase_name', schemaArn = 'schema_arn', datasetGroupArn = 'dataset_group_arn', datasetType = 'Interactions' ) dataset_arn = response['datasetArn']
  4. 使用以下代碼導入數據集導入作業導入數據。程式碼會使用描述資料集匯入工作的方法來追蹤工作的狀態。

    將下列項目當作參數傳遞:任務的名稱、上dataset_arn一步的名稱、儲存訓練資料的 Amazon S3 儲存貯體路徑 (s3://bucket name/folder name/ratings.csv),以及您的IAM服務角色ARN。您已建立此角色,做為中的一部分入門先決條件。Amazon Personalize 化需要存取存儲桶的權限。請參閱 讓 Amazon Personalize 化訪問 Amazon S3 資源

    import time response = personalize.create_dataset_import_job( jobName = 'JobName', datasetArn = 'dataset_arn', dataSource = {'dataLocation':'s3://amzn-s3-demo-bucket/filename.csv'}, roleArn = 'role_arn', importMode = 'FULL' ) dataset_interactions_import_job_arn = response['datasetImportJobArn'] description = personalize.describe_dataset_import_job( datasetImportJobArn = dataset_interactions_import_job_arn)['datasetImportJob'] print('Name: ' + description['jobName']) print('ARN: ' + description['datasetImportJobArn']) print('Status: ' + description['status']) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: describe_dataset_import_job_response = personalize.describe_dataset_import_job( datasetImportJobArn = dataset_interactions_import_job_arn ) status = describe_dataset_import_job_response["datasetImportJob"]['status'] print("Interactions DatasetImportJob: {}".format(status)) if status == "ACTIVE" or status == "CREATE FAILED": break time.sleep(60)

匯入資料之後,您可以建立解決方案和解決方案版本,如下所示。該解決方案包含用於訓練模型的配置,解決方案版本是訓練有素的模型。

  1. 使用下面的代碼創建一個新的解決方案。傳遞下列項目做為參數:dataset_group_arn從較早的、解決方案的名稱,以及使用者個人化 V2 方案 ()。ARN arn:aws:personalize:::recipe/aws-user-personalization-v2儲存您ARN的新解決方案,以供日後使用。

    create_solution_response = personalize.create_solution( name='solution name', recipeArn= 'arn:aws:personalize:::recipe/aws-user-personalization-v2', datasetGroupArn = 'dataset group arn' ) solution_arn = create_solution_response['solutionArn'] print('solution_arn: ', solution_arn)
  2. 使用以下代碼創建解決方案版本。作為參數傳遞solution_arn從上一個步驟。下列程式碼會建立解決方案版本。在訓練期間,程式碼會使用DescribeSolutionVersion作業來擷取解決方案版本的狀態。訓練完成後,此方法會傳回新解決方案版本ARN的。存放它以供日後使用。

    import time import json create_solution_version_response = personalize.create_solution_version( solutionArn = solution_arn ) solution_version_arn = create_solution_version_response['solutionVersionArn'] print(json.dumps(create_solution_version_response, indent=2)) max_time = time.time() + 3*60*60 # 3 hours while time.time() < max_time: describe_solution_version_response = personalize.describe_solution_version( solutionVersionArn = solution_version_arn ) status = describe_solution_version_response["solutionVersion"]["status"] print("SolutionVersion: {}".format(status)) if status == "ACTIVE" or status == "CREATE FAILED": break time.sleep(60)

建立解決方案版本之後,請使用 Amazon 個人化行銷活動部署該版本。使用下列程式碼建立可部署解決方案版本的促銷活動。將下列項目當做參數傳solution_version_arn遞:行銷活動的和名稱。該方法返回您的新廣告系列的 Amazon 資源名稱(ARN)。存放它以供日後使用。

response = personalize.create_campaign( name = 'campaign name', solutionVersionArn = 'solution version arn' ) arn = response['campaignArn'] description = personalize.describe_campaign(campaignArn = arn)['campaign'] print('Name: ' + description['name']) print('ARN: ' + description['campaignArn']) print('Status: ' + description['status'])

建立行銷活動後 , 您可以使用行銷活動來取得建議。下列程式碼會示範如何從廣告活動取得建議,並列印出每個建議項目的 ID。傳遞您在上一個步驟中建立ARN的行銷活動。對於使用者 ID,您可以從訓練資料傳遞使用者的 ID,例如123

response = personalizeRt.get_recommendations( campaignArn = 'Campaign ARN', userId = '123', numResults = 10 ) print("Recommended items") for item in response['itemList']: print (item['itemId'])

開始使用 Amazon Personalize 化APIs與 Jupyter () iPython 筆記本

若要使用 Jupyter 筆記本開始使用 Amazon Personalize,請複製或下載 Amazon Personalize 範例儲存庫的 getting_start 資料夾中找到的一系列筆記本。筆記本會逐步引導您匯入訓練資料、建立解決方案、建立行銷活動,以及使用 Amazon Personalize 取得建議。

注意

在開始使用筆記本之前,請確保按照 README. md 中的步驟構建您的環境