正解を登録する方法

正解の登録APIを用いて、予測したデータに対し正解ラベルを付与することができます。

Additional Info API

Additional Info API を使用することで、Inference API で予測したデータに対して正解ラベルを付与することができます。これにより、予測したデータに対する予測精度を表示したり学習時からのモデルの劣化の検知や期間に応じた予測精度を把握することができます。過去の予測結果は、モデルの監視タブの出力ボタンから「過去の予測データと予測結果を保存」を選択することでダウンロードすることができ、この中に含まれる transactionID というキーを用いて過去の予測と正解を紐づけることができます。

URL

正解の登録APIのURLは
https://developer-api.predictionone.sony.biz/v1/external/additional_info
で、HTTPメソッドは、PATCHです。

Request

name 説明
x-api-key API Key。モデルごとに1つ割り当てられる。
content-type application/json; charset=utf-8 を指定する
path parameter

ありません。

query parameter

ありません。

body

以下のフォーマットです。

{
    "additional_info": [{
      "transaction_id": "xxxxxxxxx",
      "ground_truth": "1"
    ]}
}

additional_info の各要素に指定するパラメータ(additional_info にリストとして複数の要素を含めることで複数の正解を同時に登録することが可能です)

name type 説明
transaction_id string required 正解を登録したいデータに対するID。モデルの監視タブの出力ボタンから「過去の予測データと予測結果を保存」を選択し transactionID 列を見ることで、過去に予測したデータ(行)に対するIDを知ることができる。  
ground_truth string required 予測したデータに対して登録する正解データ。二値分類または多値分類の場合は学習データに正解として含まれる文字列を指定する必要がある。数値予測の場合は数値に変換できる文字列である必要がある。

Response

body

以下のフォーマットです。すべて登録できた場合はレスポンスは空のリストとなります。

{
    "error_result": [{
      "transaction_id": "xxxxxxxxx",
      "code": "400100204",
      "message": "invalid_api_key"
	}]
}
error message
code error message reason
4001000204 BAD_REQUEST invalid_api_key. APIキーが存在しない
4001000204 BAD_REQUEST Inactive_credential. APIキーが間違っている
4001000204 BAD_REQUEST Not_found_credential. APIキーが間違っている
4001000204 BAD_REQUEST Expired_classifier. APIの有効期限切れ
4001000204 BAD_REQUEST This user may be deleted. ユーザー情報が削除されている可能性がある
4001000204 BAD_REQUEST This model may be deleted. モデルが削除されている可能性がある
4001000204 BAD_REQUEST This job may be deleted. ジョブが削除されている可能性がある
4001000204 BAD_REQUEST Not found inference additional info. 正解の登録ができません
4001000204 BAD_REQUEST Not in classify value. 正解が間違っている可能性がある
4001000204 BAD_REQUEST Not format value. 正解が間違っている可能性がある
5001000201 INTERNAL_SERVER_ERROR Not found configuration_file. 設定ファイルが削除されている可能性がある

実行例

正解の登録APIのpythonによる実行例が以下になります。サンプルデータの「1_プレミアムサービス購入.csv」で作成したモデルに対して、API作成を行った状態を前提としています。また、予測対象として「2_プレミアムサービス購入(予測用).csv」を利用して、Inference APIの実行例をもとに予測を実行した状態を前提としています。(参考:Inference API)

まず、過去の予測のtransactionIDを入手するために、モデルの監視タブの出力ボタンから「過去の予測データと予測結果を保存」を選択して過去の予測結果のcsvファイル(inference_data.csv)をダウンロード行います。その後、それらのtransactionIDに正解を紐づけるために正解の登録APIを実行します。この例では先頭の50行の正解が、「購入あり」で残りの行の正解が「購入なし」だった場合の例となります。

api_key = 'YOUR_API_KEY'
api_url = 'YOUR_API_URL'
transaction_path = 'inference_data.csv'
data = pd.read_csv(transaction_path, encoding='utf-8-sig', engine='python')

header = {"x-api-key": api_key, "Content-Type": "application/json; charset=UTF-8"}
body = {'additional_info': []}
for i, row in data.iterrows():
    if i < 50:
        body['additional_info'].append({"transaction_id": row['transactionID'], "ground_truth": '購入あり'})
    else:
        body['additional_info'].append({"transaction_id": row['transactionID'], "ground_truth": '購入なし'})
body = json.dumps(body, ensure_ascii=True)
body = body.encode('utf-8')
response = requests.patch(api_url, data=body, headers=header)
print(response.json())