仅是为了解释一些用例,A
是具有tf-idf值的稀疏矩阵,而B
是具有数据附加特征的数组。
我已经划分为训练集和测试集,因此示例中的A
和B
仅与训练集有关。我(想)在这段代码之后对测试集做同样的事情。
我想将这些矩阵/数组连接起来,因为然后我想将它们传递给sklearn
ML模型以对其进行训练,因此我认为不能单独传递它们。
所以我尝试这样做:
C = np.concatenate((A, B.T), axis=1)
其中A是<class 'scipy.sparse.csr.csr_matrix'>
,B是<class 'numpy.ndarray'>
。
但是,当我尝试执行此操作时,出现以下错误:
ValueError: zero-dimensional arrays cannot be concatenated
另外,我认为`np.concatenate` a numpy array with a sparse matrix的想法不是很好,因为
A
转换为密集数组,因为它太大了B
转换为稀疏数组,我会丢失(或实际上不是?)信息将稀疏和完全密集的由行连接的数组传递给sklearn
ML模型的最佳方法是什么?
答案 0 :(得分:2)
您可以从scipy使用hstack
。 .header {
grid-area: header;
background-color: red;
display: grid;
grid-template-areas: 'headerLeft rest headerRight';
grid-template-columns: 10% 1fr 30%;
padding: 5px;
}
.header p {
margin: 0px;
}
.headerRight {
grid-area: headerRight;
}
.headerRight p {
float: right;
}
会将两个矩阵都转换为scipy coo_matrix
,将它们合并并默认返回一个coo_matrix。
将密集数组转换为稀疏数组时,不会丢失任何信息。稀疏矩阵只是紧凑的数据存储格式。另外,除非为<div class="layout">
<div class="header">
<div class="headerRight">
<p style="margin: 0px 0px 0px 1px;"><img src="https://i.imgur.com/V2aWxOK.png" style="height: 13vh" /></p>
<p><img src="https://i.imgur.com/V2aWxOK.png" style="height: 13vh" /></p>
<p style="margin: 0px 5px 0px 0px">Ola</p>
<br />
<p style="margin: 0px 5px 0px 0px">Ola</p>
</div>
</div>
</div>
的参数hstack
指定一个值,否则所有内容均为upcasted。因此,那里也没有数据丢失的可能性。
进一步,如果您打算从sklearn使用Logistic回归,则稀疏矩阵必须采用 csr 格式,dtype
方法才能正常工作。
以下代码应适合您的用例
hstack