Python 使用Dask数据帧计算类权重

Python 使用Dask数据帧计算类权重,python,pandas,scikit-learn,dask,Python,Pandas,Scikit Learn,Dask,我得到了一个Dask数据帧,其中一列是实际的标签。其余的列是要素。然而,我不确定如何设置“X”和“y”来未来训练sklearn模型并计算_class_权重,因为数据集非常不平衡。 为此,我已尝试: fn = 'train_text_encoded_08V.parquet' df_dd = dd.read_parquet(fn) X = df_dd[df_dd.columns[1:]] y = df_dd['actual_label'].values class_weights = clas

我得到了一个Dask数据帧,其中一列是实际的标签。其余的列是要素。然而,我不确定如何设置“X”和“y”来未来训练sklearn模型并计算_class_权重,因为数据集非常不平衡。 为此,我已尝试:

fn = 'train_text_encoded_08V.parquet'
df_dd = dd.read_parquet(fn)

X = df_dd[df_dd.columns[1:]]
y = df_dd['actual_label'].values


class_weights = class_weight.compute_class_weight('balanced',
                                                 np.unique(y),
                                                 y)

class_weight_dict = dict(enumerate(class_weights))
我得到了以下错误:

ValueError:'数组块大小未知:%s',nan

我相信这是因为:

print(y)
out[]: dask.array<values, shape=(nan,), dtype=int64, chunksize=(nan,)>

我认为我没有以正确的方式加载X和y。。我该怎么做呢?

Dask不会进行这种类型的计算,除非您明确说明。试一试

X = df_dd[df_dd.columns[1:]].compute()
y = df_dd['actual_label'].compute()