まゆこのましんラーニング♡#05

こんにちは!まゆこです! 最近急に寒くなりましたね(´・・`) 夏が終わるのが寂しいです…(´・・`)

IMG_4652

先日Googleの方から私宛にTシャツいただきました!! ありがとうございます!! 個人的にこのグレーの色味がお気に入りです(^^)/

さて、本題に入ります。 前回「prediction.trainedmodels.predict」で予想データをカンマ区切りで横に並べて入力するか?縦に並べて入力するか?という疑問が湧きましたので、検証してみます。

入力(横に並べる)
{
"input":
{
"csvInstance":
[
"M,175,165,france"
]
}
}

結果
"outputValue": "73.833076"
入力(縦に並べる)
{
"input":
{
"csvInstance":
[
"M"
"175"
"165"
"france"
]
}
}

結果
"outputValue": "175.622411"

予想結果を見ると縦に並べた方が正しいのですが、Googleのドキュメントを見るとカンマ区切りで横に並べてるんですよね… どうやって、検証しましょう???(’_')

IMG_4651⑵

GO☆「サンプルプログラムを見つけて、Prediction APIをコールする際の記述を見ればわかると思うよ」 まゆこ「プログラム?なんですか?それ」

GO☆「今までは、APIs Explorerというコンソールからデータを送ってたけど、     プログラムから直接Prediction APIをコールして、データを送ることもできるんだよ」

まゆこ「何がちがうんですか?」 GO☆「やってることは同じだけど、プログラムを組むとより複雑なことができるし、APIの仕様も分かってくるよ」 まゆこ「ふーん…」

GO☆さんがこんなサンプルプログラムを探してくれました。 (そのまま転記したのではなく、内容は少し変えています)

    public String predict_cat(String 任意のID, List<Object> 分析データ)
            throws UnrecoverableKeyException, KeyStoreException, NoSuchAlgorithmException,
            CertificateException, IOException {

            Prediction prediction = createPredictionService();

            InputInput inputInput = new InputInput();
            inputInput.setCsvInstance(分析データ);
            Input input = new Input();
            input.setInput(inputInput);

            Output out = prediction.trainedmodels().predict(プロジェクト, 任意のID, input).execute();

            return out.getOutputLabel();
    }

日本語で記述しているところは、値を変える必要があります。 「プロジェクト」と「任意のID」はAPIs Explorerでも入れてましたね。 「分析データ」が投入するデータになります。 この「分析データ」が配列変数(List)になっていて、ここに複数のデータを格納できるってことらしいです。 前回試した身長予想でいうと、M、175、165、france、をこの配列変数に入れていくみたいです。

実行してみました。 結果は、175.622411でした。やはり縦に入れたほうが正解ですね。

そういえば、私が見ていたGoogleのドキュメントはVer1.4ですね。 最新のVer1.6を見ると記述が少し変わってました。仕様が変わったのでしょうか?

Ver1.4
{
  "input":{
    "csvInstance":[ col1_value, col2_value, ... ]
  }
}

Ver1.6
{
  "input": {
    "csvInstance": [
      (value)
    ]
  }
}

しかし…… ひとつずつ縦にデータ入れていくとなると、APIs Explorerでは結構作業がメンドイですね。

といったら、GO☆さんがオリジナルのツールをつくってくれました。

これなら、いっぺんにデータを入力できますね。

screen_tool001

[predict]ボタンを押すと予想してくれて、[input]ボタンを押すとデータを投入してくれるそうです。

IMG_4653

お~!!これは便利!! サングラスをしてイケイケなGO☆さん(^^)/