google-cloud-platform - 在 BigQuery 中使用 MAX 值展平结果
问题描述
我需要用最大数字展平结果中的概率列:
original predicted probabilities
<=50K >50K >50K 0.5377828170971353
<=50K 0.46221718290286473
<=50K <=50K >50K 0.05434716579642335
<=50K 0.9456528342035766
我想展平我的结果,但现在使用这个查询我只是得到上面的表并使用 bigQuery Python 客户端得到:[object Object],[object Object]
SELECT
original,
predicted,
probabilities
FROM
ML.PREDICT(MODEL `my_dataset.my_model`,
(
SELECT
*
FROM
`bigquery-public-data.ml_datasets.census_adult_income`
))
解决方案
您的probabilities
字段是 REPEATED RECORD,即结构数组。您可以使用子查询来遍历数组并选择最大概率,如下所示:
SELECT
original,
predicted,
(SELECT p
-- Iterate over the array
FROM UNNEST(probabilities) as p
-- Order by probability and get the first result
ORDER BY p.prob DESC
LIMIT 1) AS probabilities
FROM
ML.PREDICT(MODEL `my_dataset.my_model`,
(
SELECT
*
FROM
`bigquery-public-data.ml_datasets.census_adult_income`
))
结果将如下所示:
你得到的 python 结果看起来更像是一个对象的 javascript 表示。这是我在python中的做法:
from google.cloud import bigquery
client = bigquery.Client()
# Perform a query.
sql = ''' SELECT ... ''' # Your query
query_job = client.query(sql)
rows = query_job.result() # Waits for query to finish
for row in rows:
print(row.values())
输出:
(' >50K', ' >50K', {'label': ' >50K', 'prob': 0.5218586871072727})
(' >50K', ' >50K', {'label': ' >50K', 'prob': 0.5907989087876587})
(' >50K', ' >50K', {'label': ' >50K', 'prob': 0.734145221825564})
请注意,概率是 BigQuery SQL 中的结构数据类型,因此它映射为 python 字典。
查看BigQuery 快速入门,了解有关客户端库的更多信息。
推荐阅读
- git - 当 Git 创建标签时(`git tag -a` 命令没有指定提交) - 它是否从 HEAD 获得参考?
- python - 如何从另一个列字符串值中删除列字符串值?
- c - Swift:在导入的 c 库中找不到函数
- .htaccess - 如何传递 id 但不在 URL 中显示
- c++ - 如何在 Windows 上将犰狳与 nvblas 链接
- javascript - Ajax 响应返回错误响应
- android - 添加 Admob 后出现无效的应用程序 ID 错误
- kubernetes-helm - Helm 找不到图表
- c# - 如何在 C# 中的“查询表达式”的“选择”标记中使用“lambda 表达式”
- constructor - D 中的 RAI 用于结构,避免昂贵的复制