Poe*_*dit 3 python numpy concatenation scipy scikit-learn
只是为了更多地解释有关我的用例的一些事情,A它是一个具有 tf-idf 值的稀疏矩阵,并且B是一个具有我的数据的一些附加功能的数组。
我已经分为训练集和测试集,因此A在B我的示例中仅涉及训练集。我(想)在这段代码之后对测试集执行相同的操作。
我想连接这些矩阵/数组,因为我想将它们传递给sklearnML 模型来训练它,但我不认为我可以单独传递它们。
所以我尝试这样做:
C = np.concatenate((A, B.T), axis=1)
Run Code Online (Sandbox Code Playgroud)
其中 A 是 a <class 'scipy.sparse.csr.csr_matrix'>,B 是 a <class 'numpy.ndarray'>。
但是,当我尝试执行此操作时,出现以下错误:
ValueError: zero-dimensional arrays cannot be concatenated
Run Code Online (Sandbox Code Playgroud)
另外,我认为“np.concatenate”带有稀疏矩阵的 numpy 数组的想法在我的情况下不是很好,因为
A为密集数组基本上是不可能的,因为它太大了Bsklearn将由行连接的稀疏数组和全稠密数组传递给 ML 模型的最佳方法是什么?
您可以使用hstackscipy. hstack将两个矩阵转换为 scipy coo_matrix,合并它们并默认返回一个 coo_matrix 。
将密集数组转换为稀疏数组时不会丢失任何信息。稀疏矩阵只是紧凑的数据存储格式。另外,除非为参数指定一个值,dtype否则hstack所有内容都是向上转型的。因此,也不存在数据丢失的可能性。
此外,如果您计划使用 sklearn 中的逻辑回归,稀疏矩阵必须采用csr格式才能使fit方法发挥作用。
以下代码应该适用于您的用例
from scipy.sparse import hstack
X = hstack((A, B), format='csr')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2489 次 |
| 最近记录: |