dask的LinearRegression的基本原理是什么,以及如何使用它?

时间:2018-10-23 03:22:26

标签: python pandas scikit-learn dask dask-ml

我一直在玩耍,遇到一些麻烦。

假设我的数据保存在名为 data 的DataFrame(大熊猫或淡淡风格)中,并且我正尝试拟合 data [yname] 的LinearRegression模型针对 data [xname] ,其中 yname xname 是我数据框中某些列的名称。

1)Scikit学习+熊猫数据框版本

with(df, ave(Customer.Ids, Company, FUN = function(x) head(x, 1))) #[1] 1211 1325 1211

2)Scikit学习+ dask数据框版本

sklearn.linear_model.LinearRegression().fit*(data[xname].values.reshape(-1,1), data[yname]) chunks = list(data[xname].map_partitions(len).compute())

3)dask-ml + dask数据框版本

sklearn.linear_model.LinearRegression().fit(data[xname].to_dask_array(chunks).reshape(-1,1), data[yname]) chunks = list(data[xname].map_partitions(len).compute())

这是我的问题:

  1. 第一个版本在pandas数据帧上的运行速度非常快,但是如果我的数据不适合存储在内存中,则必须使用dask数据帧,这会花费很多时间,因为 data [xname] 列需要跨所有块计算,这非常慢。实际上,我想在我的 data 中每列运行一个模型。在这种情况下,如何充分利用dask的功能?
  2. 使用版本3)与版本2)的基本原理是什么?他们似乎做大致相同的事情。我在这里使用dask_ml.linear_model错误吗?此外,除了将正则化参数 C 设置为较高的值之外,似乎没有一种简单的方法可以使模型中没有损失(l1 / l2)。
  3. 是否有比我要使我的 data [xname] 具有适用于LinearRegression API的正确格式(具有(n_samples,n_features)数组)更简单的方法?这与转换为to_dask_array和重塑有关。

0 个答案:

没有答案