如何使用 Scipy 处理巨大的稀疏矩阵构造?

2023-12-21

因此,我正在处理维基百科转储来计算大约 5,700,000 个页面的页面排名。 这些文件经过预处理,因此不是 XML 格式。
它们取自http://haselgrove.id.au/wikipedia.htm http://haselgrove.id.au/wikipedia.htm格式为:

from_page(1): to(12) to(13) to(14)..
from_page(2): to(21) to(22)..
.
.
.
from_page(5,700,000): to(xy) to(xz)

很快。所以。基本上它是一个构造[5,700,000*5,700,000]矩阵,这只会破坏我的 4 GB 内存。因为它非常非常稀疏,这使得使用它更容易存储scipy.lil.sparse or scipy.dok.sparse,现在我的问题是:

我到底该如何转换.txt包含稀疏矩阵链接信息的文件?读取它并将其计算为普通的 N*N 矩阵,然后将其转换还是什么?我不知道。

此外,链接有时会跨行,那么处理这种情况的正确方法是什么?
例如:随机线就像..

[
1: 2 3 5 64636 867
2:355 776 2342 676 232
3: 545 64646 234242 55455 141414 454545 43
4234 5545345 2423424545
4:454 6776
]

完全像这样:没有逗号,也没有分隔符。

任何有关稀疏矩阵构造和跨行数据处理的信息都会有所帮助。


Scipy 提供了几种稀疏矩阵的实现。它们每个都有自己的优点和缺点。您可以找到有关矩阵格式的信息here http://docs.scipy.org/doc/scipy-0.14.0/reference/sparse.html:

有多种方法可以获得所需的稀疏矩阵。由于内存要求很高(大约 10^12 个条目!),计算完整的 NxN 矩阵然后进行转换可能是不可能的。

在你的情况下,我会准备你的数据来构建一个酷矩阵 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.coo_matrix.html#scipy.sparse.coo_matrix.

coo_matrix((data, (i, j)), [shape=(M, N)])

data[:] the entries of the matrix, in any order
i[:] the row indices of the matrix entries
j[:] the column indices of the matrix entries

您可能还想看看小矩阵 http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.lil_matrix.html#scipy.sparse.lil_matrix,可用于逐步构建矩阵。

创建矩阵后,您可以根据您的用例将其转换为更适合计算的格式。

我不认识数据格式,可能有解析器,也可能没有。不过,编写自己的解析器应该不会很困难。包含冒号的每一行开始一个新行,冒号之后以及不带冒号的连续行中的所有索引都是该行的列条目。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Scipy 处理巨大的稀疏矩阵构造? 的相关文章

  • 有没有办法降低 scipy/numpy 精度以减少内存消耗?

    在我的 64 位 Debian Lenny 系统 4GByte RAM 4GByte 交换分区 上 我可以成功执行以下操作 v array 10000 random 512 512 512 dtype np int16 f fftn v 但
  • scipy cdist 与稀疏矩阵

    我需要计算两组向量之间的距离 source matrix and target matrix 我有以下几行 当两者source matrix and target matrix属于类型scipy sparse csr csr matrix
  • 使用和不使用 SciPy 计算 k 组合的数量

    我对这个函数感到困惑combSciPy 的 http docs scipy org doc scipy 0 14 0 reference generated scipy misc comb html看起来比简单的 Python 实现要慢 这
  • FutureWarning:使用非元组序列进行多维索引

    我收到的警告是 C Users el Anaconda3 envs Py3 lib site packages scipy io matlab miobase py 414 FutureWarning 使用非元组序列进行多维 不推荐使用索引
  • R 中大型稀疏矩阵的聚类分析

    我有一个包含 250000 笔交易 行 和 2183 项 列 的交易数据集 我想将其转换为稀疏矩阵 然后对其进行分层聚类 我尝试了包 sparcl 但它似乎不适用于稀疏矩阵 关于如何解决这个问题有什么建议吗 或者我可以使用任何其他包对稀疏矩
  • 使用 scipy.signal.spectrogram 在 pyqtgraph 中绘制 wavfile 的频谱

    我有一个用于音乐和语音分析的 PyQt 加 pyqtgraph 程序 我想绘制 wav 文件的频谱 使用 scipy python 包计算 我可以在 matplotlib 中完成 但由于 matplotlib 的性能 我需要切换到 pyqt
  • ID3和C4.5:“增益比”如何标准化“增益”?

    ID3算法使用 信息增益 度量 C4 5 使用 增益比 度量 即信息增益除以SplitInfo 然而SplitInfo对于记录在不同结果之间平均分配的分割 该值较高 否则较低 我的问题是 这如何帮助解决信息增益偏向于具有多种结果的分裂的问题
  • 计算径向轮廓的最有效方法

    我需要优化图像处理应用程序的这一部分 它基本上是按距中心点的距离划分的像素的总和 def radial profile data center y x np indices data shape first determine radii
  • NumPy 数组与 SQLite

    我在 Python 中见过的最常见的 SQLite 接口是sqlite3 但是有什么东西可以很好地与 NumPy 数组或 rearray 配合使用吗 我的意思是 它可以识别数据类型 不需要逐行插入 并提取到 NumPy rec 数组中 有点
  • 期望最大化抛硬币的例子

    我最近一直在自学期望最大化 并在这个过程中给自己举了一些简单的例子 http cs dartmouth edu cs104 CS104 11 04 22 pdf http cs dartmouth edu cs104 CS104 11 04
  • 如何将多项式拟合到带有误差线的数据

    我目前正在使用 numpy polyfit x y deg 将多项式拟合到实验数据 然而 我想拟合一个基于点误差使用加权的多项式 我已经发现scipy curve fit http docs scipy org doc scipy refe
  • Matlab没有优化以下内容吗?

    我有一个很长的向量 1xrv 和一个很长的向量w1xs 和一个矩阵Arxs 它是稀疏的 但维度非常大 我期望 Matlab 对以下内容进行优化 这样我就不会遇到内存问题 A v w 但看起来 Matlab 实际上是在尝试生成完整的v w矩阵
  • Matlab 和 Python 中的优化算法(dog-leg trust-region)

    我正在尝试使用 Matlab 和 Python 中的狗腿信赖域算法求解一组非线性方程 在Matlab中有fsolve https www mathworks com help optim ug fsolve html其中此算法是默认算法 而
  • 如何将 python 点列表转换为 numpy 图像数组?

    我有一个 python 点列表 x y 坐标 200 245 344 248 125 34 它表示二维平面上的轮廓 我想使用一些 numpy scipy 算法进行平滑 插值等 它们通常需要 numpy 数组作为输入 例如scipy ndim
  • 使用 Python 从基于 AJAX 的网站提取信息

    我正在尝试使用 Python 检索基于 ajax 的网站 例如 www snapbird org 上的查询结果 由于它没有显示在页面源中 我不确定如何继续 我是一个Python新手 因此如果我能得到一个指向正确方向的指针那就太好了 如果更容
  • Panda如何将行分组到不同的时间桶中?

    我有一个带有名为时间戳的日期时间类型列的数据帧 我想根据时间部分的时间戳将数据帧拆分为多个数据帧 每个数据帧包含按其值模 x 分钟进行值的行 其中 x 是变量 请注意e and f不按原来的顺序 以 10 分钟为模 我希望所有时间都以3在一
  • Python 有限边界 Voronoi 单元

    我正在尝试改编我在 stackoverflow 上找到的代码来创建具有有限边界的 voronoi 单元 我发现下面的代码https stackoverflow com a 20678647 2443944 https stackoverfl
  • 在 scipy.stats 中,rv_continuous 有一个 fit 方法来查找 MLE,但 rv_discrete 没有。为什么?

    我想找到一些可能受离散分布控制的数据的最大似然估计 但在 scipy stats 中 只有表示连续分布的类才具有拟合函数来执行此操作 代表离散分布的类不具有离散分布的原因是什么 简短的回答 因为据我所知 没有人为其编写代码 甚至没有人尝试过
  • 忽略稀疏矩阵中的重复条目

    我尝试过初始化csc matrix and csr matrix从列表中 data rows cols 值如文档所示 sparse csc matrix data rows cols shape n n 问题是 我实际上拥有的生成方法dat
  • 使用 Python 和 lmfit 拟合复杂模型?

    我想适合椭偏仪 http en wikipedia org wiki Ellipsometry使用 LMFit 将数据转换为复杂模型 两个测量参数 psi and delta 是复杂函数中的变量rho 我可以尝试将问题分离为实部和虚部共享参

随机推荐