- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个 CSR 格式的稀疏矩阵 (scipy.sparse.csr_matrix),包含大约 100,000 行和 10,000 列。行代表用户,列代表项目,矩阵中的值代表该用户和项目的评分。
我正在尝试计算两个用户之间的相关性。因此,我循环遍历每个用户(称为 user_a),并进行矩阵运算以获得 user_a 与所有其他用户的相关性。
第一步是生成当前用户矩阵。该矩阵包含当前用户的元素,经过屏蔽以匹配 user_a 与所有其他用户的公共(public)元素。
我现在的代码是:
# ratings is the big original matrix
R = ratings.getrow(user_id)
user_matrix = sparse.csr_matrix(R)
user_matrix = user_matrix[numpy.array([0]).repeat(ratings.shape[0]),:]
user_matrix = user_matrix.multiply(ratings.astype(numpy.bool))
( https://stackoverflow.com/a/25342156/947194 )
但是对于只有 500 个项目的用户来说,这些行需要 4 秒。我需要为每个用户运行它(100,000 次)。所以有点慢。
我尝试使用vstack生成user_matrix,但花了7秒
有没有办法减少这些线路的时间?
最佳答案
对于 csr_matrix
ratings
和整数 user_id
,这给出与您的代码相同的结果:
valid_ratings = ratings.astype(bool)
user_matrix = valid_ratings.multiply(ratings[user_id])
但是如果你的 scipy 版本太旧,它就不起作用。我不记得哪个版本的 scipy 扩展了稀疏矩阵的广播行为来实现这项工作。
关于python - 在轴 0 上重复 csr_matrix 行以创建矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34225584/
我有一个 csr_matrix 'a' 类型的稀疏矩阵。我想执行一个操作来创建一个新的 csr_matrix 'b',其中 'b' 的每一行与 'a' 的第 i 行相同。 我认为对于普通的 numpy
我将每个 XML 文档表示为 csr_matrix 格式的特征矩阵。现在我有大约 3000 个 XML 文档,我得到了一个 csr_matrices 列表。我想将这些矩阵中的每一个展平成为特征向量,然
我正在研究 TFIDF。我用过 tfidf_vectorizer.fit_transform。它返回一个 csr_matrix,但我无法理解结果的结构。 数据输入: documents = ( "Th
这个问题在这里已经有了答案: What is the built-in function A of numpy array.A? (4 个答案) 关闭 3 年前。 我最近看到这样的事情: impor
我有两个(scipy)CSR 稀疏矩阵: A (12414693, 235470) B (235470, 48063) 执行: A.dot(B) 导致段错误。 我做错了什么? 编辑 我已经向 scip
我有一个 MxN 稀疏 csr_matrix,我想在矩阵的右侧添加一些只有零的列。原则上,数组indptr、indices和data保持不变,所以我只想改变矩阵的维度。但是,这似乎没有实现。 >>>
我有一个 csr_matrix,假设我调用了: import scipy.sparse as ss mat = ss.csr.csr_matrix((50, 100)) 现在我想修改这个矩阵上的一些值
我有一个稀疏矩阵: from scipy.sparse import csr_matrix M=csr_matrix((5,5)) M[2,3]=4 我想迭代所有非零条目,例如: for x,y,v
我从 pandas Dataframe 中的 SQL 导入二进制数据,该数据框由 UserId 和 ItemId 列组成。我正在使用隐式/二进制数据,正如您在下面的pivot_table 中看到的那样
我在使用 scipy.sparse.csr_matrix 时遇到问题: 例如: a = csr_matrix([[1,2,3],[4,5,6]]) b = csr_matrix([[7,8,9],[1
我按以下方式制作 csr_matrix: >>> A = sparse.csr_matrix([[0, 1, 0], [1, 0, 1],
我想知道 indptr 相对于标准 row, col 定义的用途。由于列表存储的数据位较少,是否最好使用 indptr?如果是这样的话,为什么不总是使用这个方法(假设 row, col 列表是有序的)
我有大约 10,000 个稀疏矩阵,每个矩阵大小为 50,000x5,平均密度为 0.0004。对于每个循环(10000 次),我计算 numpy 数组并将其转换为 csr_matrix 并将其附加到
我有一个稀疏的 csr_matrix,我想将单行的值更改为不同的值。但是,我找不到简单有效的实现方式。这是它必须做的: A = csr_matrix([[0, 1, 0],
我有一个通过 scipy.sparse 创建的稀疏 988x1 向量(csr_matrix 中的一列)。有没有办法在不必将稀疏矩阵转换为密集矩阵的情况下获得其均值和标准差? numpy.mean 似乎
我有一个非常大的稀疏 scipy 矩阵。尝试使用 save_npz 导致出现以下错误: >>> sp.save_npz('/projects/BIGmatrix.npz',W) Traceback (
这里的数据有些奇怪。 如果我创建一个 scipy.sparse.csr_matrix ,其 data 属性仅包含 0 和 1,然后要求它打印 data 属性,有时会出现 2在输出中(其他时候不是)。
我有一个 1 列 x 行的 SciPy csr_matrix(在本例中为向量)。其中有浮点值,我需要将其转换为离散类标签 -1、0 和 1。这应该使用阈值函数来完成,该函数将浮点值映射到这 3 个类标
我想逐步构建一个非常大的稀疏矩阵。问题是 lil_matrix 占用了太多 RAM,以至于效率低下。例如,如果我想创建一个 2000 万 x 2000 万的 lil_matrix,它会完全耗尽我的 R
我正在尝试标准化 csr_matrix: with 91833 stored elements in Compressed Sparse Row format> 我试过的是这样的: import n
我是一名优秀的程序员,十分优秀!