【发布时间】:2019-12-20 17:46:50
【问题描述】:
背景:
我在 Google Cloud BigQuery 中有大量数据 (1500GB)。
我正在尝试使用这些数据作为训练数据集来构建 ML 模型。所以我在 Jupyter notebook 中编写了以下代码来获取数据集。
import pandas as pd
from google.cloud import bigquery
import os
os.environ['GOOGLE_APPLICATION_CREDENTIALS'] = './my_credential.json'
client = bigquery.Client()
sql = """
SELECT
Feature1,
Feature2,
Feature3,
target
FROM dataset
"""
sql_result = client.query(
sql
)
sql_result.to_dataframe()
问题:
代码在执行 30 分钟后抛出内存错误。 我知道这是因为代码试图将 1500GB 数据提取到我的 Jupyter 笔记本,但我不知道如何修复。
如何使用 Jupyter notebook 对如此大量的数据进行训练?
【问题讨论】:
-
您是否考虑过发送多个查询以仅检索 N 个样本而不是查询整个数据集,其中 N 是您在训练期间的批量大小?您也可以进行随机查询 javatpoint.com/sql-select-random 但它们必须是非- 重叠
-
@JacoSolari 感谢您的建议。这是个好主意。但是我怎么知道我已经覆盖了所有 1500GB 数据集?是否存在对相同数据进行训练的风险(因为样本是随机的)?
-
是的,这就是我所说的不重叠。我不是 SQL 专家,但我猜你的每个样本都有一个唯一的 ID。您可以在每个随机查询中存储唯一 ID(假设您填写了一个列表)并从下一个查询中排除那些“已查询”的 ID。
标签: python machine-learning google-bigquery jupyter-notebook bigdata