まゆこのましんラーニング♡#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☆さん(^^)/