まゆこのましんラーニング♡#05
こんにちは!まゆこです!
最近急に寒くなりましたね(´・・`)
夏が終わるのが寂しいです…(´・・`)
先日Googleの方から私宛にTシャツいただきました!!
ありがとうございます!!
個人的にこのグレーの色味がお気に入りです(^^)/
さて、本題に入ります。
前回「prediction.trainedmodels.predict」で予想データをカンマ区切りで横に並べて入力するか?縦に並べて入力するか?という疑問が湧きましたので、検証してみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
入力(横に並べる) { "input": { "csvInstance": [ "M,175,165,france" ] } } 結果 "outputValue": "73.833076" |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
入力(縦に並べる) { "input": { "csvInstance": [ "M" "175" "165" "france" ] } } 結果 "outputValue": "175.622411" |
予想結果を見ると縦に並べた方が正しいのですが、Googleのドキュメントを見るとカンマ区切りで横に並べてるんですよね…
どうやって、検証しましょう???(‘_’)
GO☆「サンプルプログラムを見つけて、Prediction APIをコールする際の記述を見ればわかると思うよ」
まゆこ「プログラム?なんですか?それ」
GO☆「今までは、APIs Explorerというコンソールからデータを送ってたけど、
プログラムから直接Prediction APIをコールして、データを送ることもできるんだよ」
まゆこ「何がちがうんですか?」
GO☆「やってることは同じだけど、プログラムを組むとより複雑なことができるし、APIの仕様も分かってくるよ」
まゆこ「ふーん…」
GO☆さんがこんなサンプルプログラムを探してくれました。
(そのまま転記したのではなく、内容は少し変えています)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
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を見ると記述が少し変わってました。仕様が変わったのでしょうか?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Ver1.4 { "input":{ "csvInstance":[ col1_value, col2_value, ... ] } } Ver1.6 { "input": { "csvInstance": [ (value) ] } } |
しかし……
ひとつずつ縦にデータ入れていくとなると、APIs Explorerでは結構作業がメンドイですね。
といったら、GO☆さんがオリジナルのツールをつくってくれました。
これなら、いっぺんにデータを入力できますね。
[predict]ボタンを押すと予想してくれて、[input]ボタンを押すとデータを投入してくれるそうです。
お~!!これは便利!!
サングラスをしてイケイケなGO☆さん(^^)/