python - 使用 dask 和 dask-ml 将 scikit 学习转换应用于大于内存的数据集?
问题描述
过去一个月左右我一直在玩弄dask
它,它非常有用。我正在使用dask
具有约 12 个字段(2 个文本,其余为浮点)的约 3000 万个记录数据集,用于分析/改进各种模型的集合。我想做的是对数值数据应用box cox 变换。
我一直在研究dask-ml
并且有对类似预处理步骤的内置支持,例如MinMaxScaler
or StandardScaler
boxcox 方法似乎没有在 dask-ml 中实现,所以我很好奇是否可以应用 scikit-learn 转换器?
与此同时,我正在将我写的这个 boxcox 函数映射到各个字段,但我知道scikit-learn
转换器优化了 lambda 值——我的函数没有。
def boxcox(x,lam=1e-8):
if lam == 0:
y = da.log(x)
else:
y = ( da.power(x, lam) - 1.) / lam
return y
data_boxcox = {}
for col in numeric_cols:
data_boxcox["{col}_bc".format(col=col)] = dg[col].map(
lambda x: boxcox(x, lam=-1e-8),meta=(('boxcox', 'i8')))
...
df = df.assign(field1_bc = data_boxcox["field1_bc"])
df = df.assign(field2_bc = data_boxcox["field2_bc"])
...
df = Client.persist(df)
任何关于如何更好地实现 Box Cox 转换或改进dask
代码的建议都非常感谢。
解决方案
推荐阅读
- sql-server - 在 SSAS 中执行查询时出现“多维数据集不存在”
- c# - 使用 CodeDOM 制作动态方法 Country and Population
- c - 编译为 c 时进行垃圾收集的算法
- python - 模型在测试集上表现良好,但在训练和验证集上表现不佳
- c - 如何使用 GDI 和纯 C 编写快递文本?
- java - 处理 BLE 信标的线程:只有一个有效……为什么?
- javascript - 在 express 中使用 async/await
- python - 如何使用opencv识别特定区域的颜色并用它控制覆盆子的输出?
- java - 为什么 VS Code 对我的字段是私有的有问题?
- https - 在实际下载之前,如何可靠地获取通过 http(s) 下载的文件的摘要/哈希/指纹?