DataRobotのAPIを利用していますが、下記2点の実装方法が分からなかったです。
解決方法や参考になるご意見がありましたら教えて頂けませんでしょうか。
1.APIで予測を行う際に「特徴量」を追加して取得する方法
DataRobotの予測結果に「特徴量」を追加するとき、
今まではGUIから「ダウンロードに含める特徴量」を指定して予測を作成していました。
これをAPIから取得したいですが、APIで予測結果を取得するときに「ダウンロードに含める特徴量」を
含める方法が分かりませんでした。
2.予測説明(reason_code)の出力の際のゲートウェイタイムアウトエラー
(1)get_result_when_complete()
予測説明をAPIで取得する際に「get_result_when_complete()」関数を使いましたが、
「関数の最大待ち時間」が超えてしまい、タイムアウトエラーになってしまいました。
(2)status()
上記問題を解決しようと思い、「get_result()」で予測説明の結果を取得するようにして、
「reason_code.create.status()」が"COMPLETE"になったら取得するようにもコード書いてみましたが、
一回処理が終わっても"COMPLETE"に更新されないことが発生してしまい、
この方法でもできませんでした。
解決済! 解決策の投稿を見る。
>1.APIで予測を行う際に「特徴量」を追加して取得する方法
APIには予測専用のREST-API(通称V1)とPython/Rの SDK(通称V2)の2種類ございますが、ご質問内容からPython/Rの SDK(通称V2)をご利用になっておられると思います。Python/Rの SDK(通称V2)では予測結果に特徴量を追加するためのAPIが用意されておりません。そのため、お手数ですが予測データは変数に格納しておき、予測結果が返却された後に予測結果に付与したい特徴量を自前で追加する、という形でご対応ください。
尚、特にPython/Rの SDK(通称V2)を使用しなければならない理由がなければ、予測専用のREST-API(通称V1)であれば任意の特徴量を追加する指定が可能ですし、予測の処理時間やモデル管理面でもメリットがございますのでREST-API(通称V1)のご利用をご検討いただくとよろしいかと思います。
>2.予測説明(reason_code)の出力の際のゲートウェイタイムアウトエラー
Python/Rの SDK(通称V2)では予測の説明を含む予測処理に時間を要しますため、最大待ち時間の600秒を超えてしまっておられると思います。以下をご検討いただけますでしょうか。
(1) 予測データを分割して、小規模データで予測を分割実行する。
(2) 以下のようタイムアウトの時間を増やしてみる。
例:
# 予測の説明の初期化
pei_job = dr.PredictionExplanationsInitialization.create(project.id, model.id)
pei_job.wait_for_completion(max_wait=1200 )
print("予測の説明の初期化終了")
# 予測の説明を予測結果に付与
pe_job = dr.PredictionExplanations.create(project.id, model.id, dataset_from_path.id)
print("予測の説明を予測結果に付与終了")
#予測処理が完了したら結果を取得
pe = pe_job.get_result_when_complete( max_wait=1200 )
print("配列に結果取得終了")
(3)予測専用のREST-API(通称V1)を使用した予測処理に変更を検討
よろしくお願いします。