Cloud ML Engineでオンライン予測リクエストを送信したときに所属確率を返すようにする

Google Cloud PlatformのML Engineでデプロイしたモデルにリクエストを送ると通常predict関数を呼ぶのでクラスの所属確率がわかりません.
クラスの所属確率をだすにはpredictをpredict_probaで上書きしたモデルを保存すればいいです.
以下は基本的にscikit-learn と XGBoost によるオンライン予測のスタートガイド  |  scikit-learn と XGBoost の Cloud ML Engine  |  Google Cloudに沿ってます.

モデルの作成

from sklearn import datasets
from sklearn.linear_model import LogisticRegression
from sklearn.externals import joblib


def main():
    iris = datasets.load_iris()
    clf = LogisticRegression()
    clf.fit(iris.data, iris.target)
    clf.predict = clf.predict_proba    # predictをpredict_probaで上書き

    joblib.dump(clf, "model.joblib")


if __name__ == "__main__":
    main()

モデルをStorageにアップロードし,デプロイ

# upload
gsutil cp ./model.joblib gs://$BUCKET_NAME/model.joblib

# deploy
gcloud ml-engine versions create $VERSION_NAME --model $MODEL_NAME --origin $MODEL_DIR --runtime-version=1.10 --framework $FRAMEWORK --python-version=3.5

予測リクエストの送信

{
  "instances": [
    [6.8,  2.8,  4.8,  1.4],
    [6.0,  3.4,  4.5,  1.6]
  ]
}
curl -X POST -H "Content-Type: application/json" -d @input.json  \
-H "Authorization: Bearer `gcloud auth print-access-token`" \
"https://ml.googleapis.com/v1/projects/${PROJECT_ID}/models/${MODEL_NAME}/versions/${VERSION_NAME}:predict"

結果

{"predictions": [[0.008144896997669845, 0.7771569459145118, 0.21469815708781834], [0.041747653750674074, 0.47784428289897735, 0.48040806335034864]]}

参考