过去一个月左右我一直在玩dask
,这非常有用。为了分析/改进各种模型的集合,我正在使用dask
和大约3000万个记录数据集,其中包含~12个字段(2个文本,其余为浮点数)。我想做的是对数值数据应用box cox transformation。
我一直在调查dask-ml
并且内置支持类似的预处理步骤,例如MinMaxScaler
或StandardScaler
似乎没有在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
代码的任何建议。