

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

# 開始方法 (SDK for Python (Boto3))
<a name="getting-started-python"></a>

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

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

**Topics**
+ [

## 前提条件
](#gs-sdk-prerequisites)
+ [

## チュートリアル
](#gs-python-custom-tutorial)
+ [

## Jupyter (iPython) ノートブックでの Amazon Personalize API の開始方法
](#gs-jupyter-notebook)

## 前提条件
<a name="gs-sdk-prerequisites"></a>

このガイドで Python の例を使用するための前提条件のステップを以下に示します。
+ [開始方法の前提条件](gs-prerequisites.md) を完了して必要な権限を設定し、トレーニングデータを作成します。独自のソースデータを使用する場合は、前提条件に示しているようにそのデータがフォーマットされていることを確認します。
+ 「」で指定されているように AWS SDK for Python (Boto3) 環境をセットアップします[AWS SDKs のセットアップ](aws-personalize-set-up-sdks.md)。

## チュートリアル
<a name="gs-python-custom-tutorial"></a>

次のステップでは、環境を確認し、Amazon Personalize 用の SDK for Python (Boto3) クライアントを作成します。次に、データをインポートし、キャンペーンを含むソリューションバージョンを作成してデプロイし、レコメンデーションを取得します。

### ステップ 1: Python 環境を確認し、boto3 クライアントを作成する
<a name="gs-python-example"></a>

前提条件のステップを完了したら、以下の 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)
```

### ステップ 2: データをインポートする
<a name="getting-started-python-import-dataset"></a>

Amazon Personalize boto3 クライアントを作成して環境を検証したら、「[開始方法の前提条件](gs-prerequisites.md)」の完了時に作成した履歴データをインポートします。過去のデータを 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))
   ```

1. 次のコードを使用してデータセットグループを作成します。`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'])
   ```

1. 次のコードを使用して、新しいデータセットグループにアイテムインタラクションデータセットを作成します。データセットに名前を付け、前のステップの `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']
   ```

1. 以下のコードとともにデータセットのインポートジョブを使用してデータをインポートします。このコードでは describe\$1dataset\$1import\$1job メソッドを使用してジョブのステータスを追跡します。

   ジョブの名前、前のステップの `dataset_arn`、トレーニングデータおよび IAM サービスロール ARN を格納した Amazon S3 バケットパス (`s3://bucket name/folder name/ratings.csv`) をパラメータに渡します。このロールは [開始方法の前提条件](gs-prerequisites.md) の一部として作成しました。Amazon Personalize には、バケットにアクセスするための許可が必要です。「[Amazon Personalize に対する、Amazon S3 リソースへのアクセスの付与](granting-personalize-s3-access.md)」を参照してください。

   ```
   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)
   ```

### ステップ 3: ソリューションを作成する
<a name="getting-started-python-create-solution"></a>

データをインポートしたら、次のようにソリューションとソリューションバージョンを作成します。*ソリューション*にはモデルをトレーニングするための設定が含まれており、*ソリューションバージョン*はトレーニング済みモデルです。

1.  次のコードを使用して新しいソリューションを作成します。パラメータとして、前からの `dataset_group_arn`、ソリューションの名前、User-Personalization-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)
   ```

1. 次のコードを使用してソリューションバージョンを作成します。前のステップからの `solution_arn` をパラメータとして渡します。次のコードは、ソリューションバージョンを作成します。トレーニング中、コードは [DescribeSolutionVersion](API_DescribeSolutionVersion.md) 操作を使用してソリューションバージョンのステータスを取得します。トレーニングが完了すると、メソッドは新しいソリューションバージョンの 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)
   ```

### ステップ 4: キャンペーンの作成
<a name="getting-started-python-deploy-solution"></a>

ソリューションバージョンをトレーニングして評価した後、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'])
```

### ステップ 5: レコメンデーションを取得する
<a name="getting-started-python-get-recommendations"></a>

キャンペーンを作成したら、そのキャンペーンを使用して推奨事項を取得できます。次のコードは、キャンペーンからレコメンデーションを取得し、各レコメンデーションアイテムの 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) ノートブックでの Amazon Personalize API の開始方法
<a name="gs-jupyter-notebook"></a>

 Jupyter ノートブックを使用して Amazon Personalize の使用を開始するには、[Amazon Personalize サンプル](https://github.com/aws-samples/amazon-personalize-samples)リポジトリの [getting\$1started](https://github.com/aws-samples/amazon-personalize-samples/tree/master/getting_started) フォルダにある一連のノートブックのクローンを作成するかダウンロードします。ノートブックでは、トレーニングデータのインポート、ソリューションの作成、キャンペーンの作成、および Amazon Personalize を使用したレコメンデーションの取得について説明します。

**注記**  
 ノートブックを使用する前に、[README.md](https://github.com/aws-samples/amazon-personalize-samples/blob/master/getting_started/README.md) の手順に従って環境を構築してください。