今天要來串接AutoML Table的API了,在串接之前一樣要先把Model deploy。
大家可以先拿昨天的資料在UI介面上online predict一下。
記得昨天的UI介面嗎?最下面有個REST API
點下去就會把上方feature column的值變成json,並給你一個URL讓你呼叫。
不過我這邊CURL的方式一直會出現403,看來不是用我的service account去呼叫,而是使用我的google user去呼叫,所以一直驗證失敗。
這讓我想到Day16我用了REST API呼叫Translation API,就照本宣科來一次AutoML Table。先按照JSON格式來定義struct
,他需要Payload
裡面有個Row
,Row
內有Values
& ColumnSpecIds
。
1 | type Body struct { |
實際的格式可以參考這裡:https://cloud.google.com/automl-tables/docs/reference/rest/v1beta1/projects.locations.models/predict
(你也可以看到其實Values, ColumnSpecIds是deprecated的狀態,可以用cells代替。
接下來看看function:
1 | func OnlinePredict() error { |
這邊除了建立body json以外,要注意的就是Predict API裡的{name}
其實很長,裡面包含PROJECT_NUMBER
跟MODEL_NAME
,應該長這樣子projects/PROJECT_NUMBER/locations/us-central1/models/MODEL_NAME
。
然後我們就來看看結果:
預測結果是99.83% Deposit=1 (存款不會透過銀行), 0.16% Deposit=2 (存款會透過銀行),跟在UI結果直接按predict差不多。
寫到最後才發現原來其實有Go API可以呼叫,可是要去翻翻Github: https://github.com/googleapis/google-cloud-go/tree/master/automl/apiv1beta1
OK,今天就寫到這邊,謝謝大家的觀看。
今天的code可以看Github:https://github.com/josephMG/ithelp-2019/tree/Day-27