更改Dask数据框/数组的尺寸?

时间:2019-06-12 14:14:40

标签: python pandas dask

我正在通过SKlearn快速建立机器学习管道。分类器的拟合函数需要解释变量和目标变量(X和Y列)。

当前正在通过dask客户端运行本地集群。

X=df.iloc[:,[0,1,4,5,6,7,8,9,10,11]]
Y=df.iloc[:,[12]]
X_train, X_test, y_train, y_test = train_test_split(X, Y,random_state=0) #testsize=0.1
estimator2 = RFClassifier(n_jobs=-1,random_state=10)
clf2 = Incremental(estimator1)
---------------------------------------------------------------------------
AssertionError                            Traceback (most recent call last)
<ipython-input-39-3ee1fd4128bb> in <module>()
----> 1 clf2.fit(X_train, y_train)

D:\Anaconda\lib\site-packages\dask_ml\wrappers.py in fit(self, X, y, **fit_kwargs)
    483     def fit(self, X, y=None, **fit_kwargs):
    484         estimator = sklearn.base.clone(self.estimator)
--> 485         self._fit_for_estimator(estimator, X, y, **fit_kwargs)
    486         return self
    487 

D:\Anaconda\lib\site-packages\dask_ml\wrappers.py in _fit_for_estimator(self, estimator, X, y, **fit_kwargs)
    474                 random_state=self.random_state,
    475                 shuffle_blocks=self.shuffle_blocks,
--> 476                 **fit_kwargs
    477             )
    478 

D:\Anaconda\lib\site-packages\dask_ml\_partial.py in fit(model, x, y, compute, shuffle_blocks, random_state, **kwargs)
    169             y = y.to_dask_array()
    170 
--> 171         assert y.ndim == 1
    172         assert x.chunks[0] == y.chunks[0]

从出现的错误中可以看出,该函数期望维数为1,但是y变量的dask数据帧的值为ndim2。我不确定为什么从下面的块中可以看出,只有1列。

y_train.columns.values
>>> array(['label'], dtype=object)

1 个答案:

答案 0 :(得分:1)

我怀疑,如果您传递一个序列而不是一个数据框,那么一切都会很好

这样做

# Y=df.iloc[:,[12]]
Y=df.iloc[:,12]

或者这个

# clf2.fit(X_train, y_train)
clf2.fit(X_train, y_train.label)