2024-04-29 09:42:40 发布
网友
我用过
sklearn.preprocessing.OneHotEncoder
要转换某些数据,输出是scipy.sparse.csr.csr_matrix 如何将它与其他列一起合并回原始数据帧?
scipy.sparse.csr.csr_matrix
我试着用pd.concat但是
pd.concat
TypeError: cannot concatenate a non-NDFrame object
谢谢
在创建编码器时,通过将参数sparse设置为False,还可以避免首先返回稀疏矩阵。
sparse
False
OneHotEncoder的文档说明:
sparse : boolean, default=TrueWill return sparse matrix if set True else will return an array.
sparse : boolean, default=True
Will return sparse matrix if set True else will return an array.
然后,您可以再次调用DataFrame构造函数将numpy数组转换为DataFrame。
如果A是csr_matrix,则可以使用^{}(还有.todense()生成numpymatrix,这也适用于DataFrame构造函数):
csr_matrix
.todense()
numpy
matrix
DataFrame
df = pd.DataFrame(A.toarray())
然后您可以将其与pd.concat()一起使用。
pd.concat()
A = csr_matrix([[1, 0, 2], [0, 3, 0]]) (0, 0) 1 (0, 2) 2 (1, 1) 3 <class 'scipy.sparse.csr.csr_matrix'> pd.DataFrame(A.todense()) 0 1 2 0 1 0 2 1 0 3 0 <class 'pandas.core.frame.DataFrame'> RangeIndex: 2 entries, 0 to 1 Data columns (total 3 columns): 0 2 non-null int64 1 2 non-null int64 2 2 non-null int64
在0.20版中,pandas引入了sparse data structures,包括^{}。
pandas
或者,可以将稀疏矩阵传递给sklearn,以避免在转换回pandas时内存不足。只需通过将numpyarray传递给scipy.sparse.csr_matrix构造函数并使用scipy.sparse.hstack来将其他数据转换为稀疏格式(请参见docs)。
sklearn
array
scipy.sparse.csr_matrix
scipy.sparse.hstack
在创建编码器时,通过将参数
sparse
设置为False
,还可以避免首先返回稀疏矩阵。OneHotEncoder的文档说明:
然后,您可以再次调用DataFrame构造函数将numpy数组转换为DataFrame。
如果A是} (还有
csr_matrix
,则可以使用^{.todense()
生成numpy
matrix
,这也适用于DataFrame
构造函数):然后您可以将其与
pd.concat()
一起使用。在0.20版中,} 。
pandas
引入了sparse data structures,包括^{或者,可以将稀疏矩阵传递给
sklearn
,以避免在转换回pandas
时内存不足。只需通过将numpy
array
传递给scipy.sparse.csr_matrix
构造函数并使用scipy.sparse.hstack
来将其他数据转换为稀疏格式(请参见docs)。相关问题 更多 >
编程相关推荐