開始方法 (SDK for Python (Boto3)) - Amazon Personalize

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

開始方法 (SDK for Python (Boto3))

このチュートリアルでは、 for Python (Boto3) を使用して Amazon Personalize SDK ワークフローを最初から最後まで完了する方法を示します。

開始方法の演習を完了したら、不要な料金が発生しないように、作成したリソースを削除します。詳細については、「Amazon Personalize リソースを削除するための要件」を参照してください。

前提条件

このガイドで Python の例を使用するための前提条件のステップを以下に示します。

  • 開始方法の前提条件 を完了して必要な権限を設定し、トレーニングデータを作成します。独自のソースデータを使用する場合は、前提条件に示しているようにそのデータがフォーマットされていることを確認します。

  • 「」で指定されているように AWS SDK for Python (Boto3) 環境を設定しますのセットアップ AWS SDKs

チュートリアル

次のステップでは、環境を確認し、Amazon Personalize SDK用の for 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. 次のコードを使用して、新しいデータセットグループにアイテムインタラクションデータセットを作成します。データセットに名前を付け、前のステップの schema_arn および dataset_group_arn を指定します。

    response = personalize.create_dataset( name = 'datase_name', schemaArn = 'schema_arn', datasetGroupArn = 'dataset_group_arn', datasetType = 'Interactions' ) dataset_arn = response['datasetArn']
  4. 以下のコードとともにデータセットのインポートジョブを使用してデータをインポートします。このコードでは describe_dataset_import_job メソッドを使用してジョブのステータスを追跡します。

    パラメータとして、ジョブの名前、前のステップ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 の 、ソリューションの名前、User-Personalization-v2 レシピ () ARNの を渡しますarn:aws:personalize:::recipe/aws-user-personalization-v2。 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 Personalize キャンペーンでそれをデプロイします。次のコードを使用して、ソリューションバージョンをデプロイするキャンペーンを作成します。パラメータとして、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 には、123 などのトレーニングデータからユーザーの ID を渡します。

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

Jupyter (iPython) ノートブックAPIsで Amazon Personalize の使用を開始する

Jupyter ノートブックを使用して Amazon Personalize の使用を開始するには、Amazon Personalize サンプルリポジトリの getting_started フォルダにある一連のノートブックのクローンを作成するかダウンロードします。ノートブックでは、トレーニングデータのインポート、ソリューションの作成、キャンペーンの作成、および Amazon Personalize を使用したレコメンデーションの取得について説明します。

注記

ノートブックの使用を開始する前に、.READMEmd の手順に従って環境を構築してください。