

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

# CatBoost アルゴリズムの入出力インターフェイス
<a name="InputOutput-CatBoost"></a>

勾配ブースティングは表形式のデータで動作し、行が観測値、1 つの列がターゲット変数またはラベル、残りの列が特徴を表します。

SageMaker AI の CatBoost の実装では、トレーニングと推論に CSV 形式が対応しています。
+ **トレーニング ContentType** の場合、有効な入力は *text/csv* である必要があります。
+ **推論 ContentType** の場合、有効な入力は *text/csv* です。

**注記**  
CSV トレーニングの場合、アルゴリズムはターゲット変数が最初の列にあり、CSV にはヘッダーレコードがないと見なします。  
CSV 推論の場合、アルゴリズムは CSV 入力にラベル列がないと見なします。

**トレーニングデータ、検証データ、カテゴリ別特徴の入力形式**

CatBoost モデルに入力するトレーニングデータをフォーマットする方法にご注意ください。トレーニングデータと検証データを含む Amazon S3 バケットへのパスを指定する必要があります。カテゴリ別特徴のリストを含めることもできます。`training` と `validation` チャネルの両方を使用して入力データを提供します。`training` チャネルだけを使用することもできます。

**`training` と `validation` チャネルの両方を使用する**

入力データは、2 つの S3 パス (1 つは `training` チャネル用、もう 1 つは `validation` チャネル用) によって指定できます。各 S3 パスは、1 つ以上の CSV ファイルを指す S3 プレフィックスか、1 つの特定の CSV ファイルを指すフル S3 パスのいずれかです。ターゲット変数は CSV ファイルの最初の列にある必要があります。予測変数 (特徴量) は残りの列にある必要があります。`training` または `validation` チャネルに複数の CSV ファイルが提供された場合、CatBoost アルゴリズムはファイルを連結します。検証データは、各ブースティングの反復の最後に検証スコアを計算するために使用されます。検証スコアが改善しなくなると、早期停止が適用されます。

予測子にカテゴリ別特徴が含まれている場合は、トレーニングデータファイルまたはファイルと同じ場所に `categorical_index.json` という名前の JSON ファイルを提供できます。カテゴリ別特徴の JSON ファイルを提供する場合、`training` チャネルは特定の CSV ファイルではなく S3 プレフィックスを指している必要があります。このファイルには Python ディクショナリが含まれている必要があり、キーは `"cat_index_list"` という文字列で、値が一意の整数のリストです。値リストの各整数は、トレーニングデータの CSV ファイル内の対応するカテゴリ別特徴の列インデックスを示す必要があります。各値は、正の整数 (0 は目標値を表すため 0 より大きい) で、`Int32.MaxValue` (2147483647) より小さく、列の総数よりも小さい必要があります。カテゴリ別インデックス JSON ファイルは 1 つだけである必要があります。

**`training` チャネルのみを使用する**。

別の方法として、`training` チャネル用の単一の S3 パスを介して入力データを指定することもできます。この S3 パスは、1 つ以上の CSV ファイルを含む `training/` という名前のサブディレクトリを持つディレクトリを指す必要があります。オプションで、同じ場所に 1 つ以上の CSV ファイルを含む `validation/` という別のサブディレクトリを含めることができます。検証データが提供されない場合は、トレーニングデータの 20% がランダムにサンプリングされ、検証データとして使用されます。予測変数にカテゴリ別特徴が含まれている場合は、データサブディレクトリと同じ場所に `categorical_index.json` という名前の JSON ファイルを提供できます。

**注記**  
CSV トレーニング入力モードの場合、アルゴリズムで使用できるメモリの合計 (インスタントカウント \$1 `InstanceType` で使用できるメモリ) でトレーニングデータセットを保持できる必要があります。

SageMaker AI CatBoost は `catboost.CatBoostClassifier` および `catboost.CatBoostRegressor` モジュールを使用してモデルをシリアル化/逆シリアル化し、それをモデルの保存/ロードに使用できます。

**SageMaker AI CatBoost でトレーニングしたモデルを `catboost` で使用する**
+ 次の Python コードを使用します。

  ```
  import tarfile
  from catboost import CatBoostClassifier
  
  t = tarfile.open('model.tar.gz', 'r:gz')
  t.extractall()
  
  file_path = os.path.join(model_file_path, "model")
  model = CatBoostClassifier()
  model.load_model(file_path)
  
  # prediction with test data
  # dtest should be a pandas DataFrame with column names feature_0, feature_1, ..., feature_d
  pred = model.predict(dtest)
  ```