我正在使用一些相当大的稀疏矩阵(从5000x5000到20000x20000)并且需要找到一种以灵活方式连接矩阵的有效方法,以便从不同的部分构造随机矩阵.
现在我使用以下方法连接四个矩阵,但它的效率非常低.有没有更好的方法来做到这一点,不涉及转换为密集矩阵?
rmat[0:m1.shape[0],0:m1.shape[1]] = m1
rmat[m1.shape[0]:rmat.shape[0],m1.shape[1]:rmat.shape[1]] = m2
rmat[0:m1.shape[0],m1.shape[1]:rmat.shape[1]] = bridge
rmat[m1.shape[0]:rmat.shape[0],0:m1.shape[1]] = bridge.transpose()
Run Code Online (Sandbox Code Playgroud) 首先,我昨天开始使用python.我正在尝试使用SciKit和大型数据集(250.000条推文)进行文本分类.对于算法,每个推文将表示为4000 x 1向量,因此这意味着输入为250.000行和4000列.当我尝试在python中构造它时,我在8500条推文之后耗尽内存(当使用列表并附加它时)并且当我预先分配内存时我只得到错误:MemoryError(np.zeros(4000,2500000)).SciKit无法使用这些大型数据集吗?我做错了什么(因为这是我第二天用python)?是否有另一种表示功能的方式,以便它可以适合我的记忆?
编辑:我想要伯努利NB
edit2:也许有可能通过在线学习?阅读推文,让模特使用推文,将其从内存中删除,阅读另一个,让模型学习......但我不认为伯努利NB允许在scikit-learn中进行在线学习