htr*_*eaf 7 python numpy scikit-learn
数据集包含数值变量和分类变量,然后我将其分为两部分:
cont_data = data[cont_variables].values
disc_data = data[disc_variables].values
Run Code Online (Sandbox Code Playgroud)
然后我使用sklearn.preprocessing.OneHotEncoder对分类数据进行编码,然后我尝试将编码的分类数据与数值数据合并:
np.concatenate((cont_data, disc_data_coded), axis=1)
Run Code Online (Sandbox Code Playgroud)
但是出现以下错误:
ValueError: all the input arrays must have same number of dimensions
Run Code Online (Sandbox Code Playgroud)
我确保维数相等:
print(cont_data.shape) # (24000, 35)
print(disc_data_coded.shape) # (24000, 26)
Run Code Online (Sandbox Code Playgroud)
终于,我发现那cont_data是一段numpy array时间
>>> disc_data_coded
<24000x26 sparse matrix of type '<class 'numpy.float64'>'
with 312000 stored elements in Compressed Sparse Row format>
Run Code Online (Sandbox Code Playgroud)
我改变了参数sparse的OneHotEncoder是False,一切都OK了。但问题是,如何numpy array在sparse matrix不设置的情况下直接将 a与 a合并sparse=False?
hpa*_*ulj 10
稀疏矩阵不是 numpy 数组的子类;所以numpy方法通常不起作用。改用稀疏函数,例如sparse.vstackand sparse.hstack。但是所有的输入都必须是稀疏的。
或者首先使稀疏矩阵稠密,使用.toarray(),然后使用np.concatenate。
你想要结果是稀疏的还是密集的?
In [32]: sparse.vstack((sparse.csr_matrix(np.arange(10)),sparse.csr_matrix(np.on
...: es((3,10)))))
Out[32]:
<4x10 sparse matrix of type '<class 'numpy.float64'>'
with 39 stored elements in Compressed Sparse Row format>
In [33]: np.concatenate((sparse.csr_matrix(np.arange(10)).A,np.ones((3,10))))
Out[33]:
array([[0., 1., 2., 3., 4., 5., 6., 7., 8., 9.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.],
[1., 1., 1., 1., 1., 1., 1., 1., 1., 1.]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2313 次 |
| 最近记录: |