一个数据集包含数字和类别变量,我将它们分为两部分:
但是出现了以下错误:
cont_data = data[cont_variables].values
disc_data = data[disc_variables].values
然后我使用 sklearn.preprocessing.OneHotEncoder
来编码分类数据,接着我尝试将编码后的分类数据与数值数据合并:
np.concatenate((cont_data, disc_data_coded), axis=1)
但是出现了以下错误:
ValueError: all the input arrays must have same number of dimensions
我确保维度的数量相等:
print(cont_data.shape) # (24000, 35)
print(disc_data_coded.shape) # (24000, 26)
最后,我发现cont_data
是一个numpy数组
。
>>> disc_data_coded
<24000x26 sparse matrix of type '<class 'numpy.float64'>'
with 312000 stored elements in Compressed Sparse Row format>
我将OneHotEncoder
中的参数sparse
改为False
,一切正常。
但问题是,如何直接合并numpy数组
和sparse矩阵
,而不需要设置sparse=False
?
sparse
是scipy
中的一个子模块。要运行上面的代码,只需要添加:from scipy import sparse
。 - htredleaf