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

先日Googleの方から私宛にTシャツいただきました!! ありがとうございます!! 個人的にこのグレーの色味がお気に入りです(^^)/
さて、本題に入ります。 前回「prediction.trainedmodels.predict」で予想データをカンマ区切りで横に並べて入力するか?縦に並べて入力するか?という疑問が湧きましたので、検証してみます。
入力(横に並べる)
{
"input":
{
"csvInstance":
[
"M,175,165,france"
]
}
}
結果
"outputValue": "73.833076"
入力(縦に並べる)
{
"input":
{
"csvInstance":
[
"M"
"175"
"165"
"france"
]
}
}
結果
"outputValue": "175.622411"
予想結果を見ると縦に並べた方が正しいのですが、Googleのドキュメントを見るとカンマ区切りで横に並べてるんですよね… どうやって、検証しましょう???(’_')

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☆さんがオリジナルのツールをつくってくれました。
これなら、いっぺんにデータを入力できますね。

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

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

