我必须在一些太大而不适合记忆的数据上训练分类模型,我正在使用scikit learn和pandas进行分析。所以这是我的问题,如何在在线学习管道中使用验证进行超参数调整?
我使用pandas read_sql_query和chucksize并使用sklearn SGDClassifier partial_fit从sql数据库传输数据。这是一个例子:
clf = SGDCClassifier()
for chunk in pd.read_sql_query("""
select *
from table;
""",
con = conn,
chunksize = n):
preprocess chunk
.
.
.
clf.partial_fit(chunk)
我的问题是:在这样的设置中进行验证的最佳方法是什么?
答案 0 :(得分:1)
验证(用于调整或其他任何方式)对于流来说实际上是很自然的。
说这是流
的逻辑表示@Override
从左侧开始,右侧添加元素。由于这是一个流设置,我们假设它不能全部适合内存。
在步骤 i ,你有这个内存块
|-------------------------------------------------------------------------->
所以你事先决定了火车的大小(|--------------------(cccccccccccc)---------------------------------------->
)和测试(r
)部分,那么你有类似的东西:
t
此时,您只能从|--------------------(rrrrrrrrrrrtt)---------------------------------------->
学习,并在r
上查看自己。
在步骤 i + 1 ,有些t
成为t
,你必须丢弃一些旧的r
(它更多但不允许存储数据的聚合。
不要忘记留下一些数据进行清洁测试。