使用dask和dask-ml将scikit学习转换应用于大于内存数据集的转换?

时间:2018-04-30 15:53:21

标签: python scikit-learn dask

过去一个月左右我一直在玩dask,这非常有用。为了分析/改进各种模型的集合,我正在使用dask和大约3000万个记录数据集,其中包含~12个字段(2个文本,其余为浮点数)。我想做的是对数值数据应用box cox transformation

我一直在调查dask-ml并且内置支持类似的预处理步骤,例如MinMaxScalerStandardScaler

似乎没有在dask-ml中实现boxcox方法,所以我很好奇是否可以应用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代码的任何建议。

0 个答案:

没有答案