标签: sparse-matrix

稀疏约束线性最小二乘求解器

这个伟大的SO答案指向一个好的稀疏求解器Ax=b,但是我已经有了约束,x因此每个元素x都是>=0一个<=N.

此外,A巨大的(约2e6x2e6),但<=4每行元素非常稀疏.

有什么想法/建议吗?我正在寻找像MATLAB这样的东西,lsqlin但是有很大的稀疏矩阵.

我基本上试图解决稀疏矩阵上的大规模有界变量最小二乘问题:

替代文字

编辑:CVX中:

cvx_begin
    variable x(n)
    minimize( norm(A*x-b) );
    subject to 
        x <= N;
        x >= 0;
cvx_end
Run Code Online (Sandbox Code Playgroud)

c++ math linear-algebra linear-programming sparse-matrix

9
推荐指数
1
解决办法
6469
查看次数

k-意味着在非常大的稀疏矩阵上聚类?

我试图在一个非常大的矩阵上做一些k-means聚类.

矩阵大约是500000行×4000个cols但非常稀疏(每行只有几个"1"值).

整件事不适合内存,因此我将其转换为稀疏的ARFF文件.但是R显然无法读取稀疏的ARFF文件格式.我还将数据作为普通的CSV文件.

R中是否有可用于有效加载此类稀疏矩阵的包?然后,我将使用群集包中的常规k-means算法继续.

非常感谢

r cluster-analysis sparse-matrix

9
推荐指数
1
解决办法
5920
查看次数

将系数名称转换为R中的公式

当使用具有因子的公式时,拟合模型将系数命名为XY,其中X是因子的名称,Y是其特定级别.我希望能够从这些系数的名称创建一个公式.

原因是:如果我将套索适合稀疏设计矩阵(如下所示),我想创建一个新的公式对象,它只包含非零系数的项.

require("MatrixModels")
require("glmnet")
set.seed(1)
n <- 200
Z <- data.frame(letter=factor(sample(letters,n,replace=T),letters),
                x=sample(1:20,200,replace=T))
f <- ~ letter + x:letter + I(x>5):letter
X <- sparse.model.matrix(f, Z)
beta <- matrix(rnorm(dim(X)[2],0,5),dim(X)[2],1)
y <- X %*% beta + rnorm(n)

myfit <- glmnet(X,as.vector(y),lambda=.05)
fnew <- rownames(myfit$beta)[which(myfit$beta != 0)]
 [1] "letterb"              "letterc"              "lettere"             
 [4] "letterf"              "letterg"              "letterh"             
 [7] "letterj"              "letterm"              "lettern"             
[10] "lettero"              "letterp"              "letterr"             
[13] "letters"              "lettert"              "letteru"             
[16] "letterw"              "lettery"              "letterz"             
[19] "lettera:x"            "letterb:x"            "letterc:x"           
[22] "letterd:x"            "lettere:x"            "letterf:x"           
[25] "letterg:x"            "letterh:x"            "letteri:x"           
[28] "letterj:x" …
Run Code Online (Sandbox Code Playgroud)

r formula sparse-matrix

9
推荐指数
1
解决办法
2735
查看次数

如何并行scipy稀疏矩阵乘法

我有一个scipy.sparse.csr_matrix格式的大型稀疏矩阵X,我想用一个利用并行性的numpy数组W来乘以它.经过一些研究后,我发现我需要在多处理中使用Array,以避免在进程之间复制X和W(例如:如何在Python多处理中将Pool.map与Array(共享内存)结合起来?并将共享的只读数据复制到Python多处理的不同过程?).这是我最近的尝试

import multiprocessing 
import numpy 
import scipy.sparse 
import time 

def initProcess(data, indices, indptr, shape, Warr, Wshp):
    global XData 
    global XIndices 
    global XIntptr 
    global Xshape 

    XData = data 
    XIndices = indices 
    XIntptr = indptr 
    Xshape = shape 

    global WArray
    global WShape 

    WArray = Warr     
    WShape = Wshp 

def dot2(args):
    rowInds, i = args     

    global XData 
    global XIndices
    global XIntptr 
    global Xshape 

    data = numpy.frombuffer(XData, dtype=numpy.float)
    indices = numpy.frombuffer(XIndices, dtype=numpy.int32)
    indptr = numpy.frombuffer(XIntptr, dtype=numpy.int32)
    Xr = scipy.sparse.csr_matrix((data, indices, …
Run Code Online (Sandbox Code Playgroud)

python parallel-processing scipy sparse-matrix

9
推荐指数
1
解决办法
4253
查看次数

Mongodb独特的稀疏指数

我在我的mongodb集合上创建了一个稀疏且唯一的索引.

var Account = new Schema({
                email: { type: String, index: {unique: true, sparse: true} },
                        ....
Run Code Online (Sandbox Code Playgroud)

它已被正确创建:

{ "ns" : "MyDB.accounts", "key" : { "email" : 1 }, "name" : "email_1", "unique" : true, "sparse" : true, "background" : true, "safe" : null }
Run Code Online (Sandbox Code Playgroud)

但是,如果我插入第二个未设置密钥的文档,则会收到此错误:

{ [MongoError: E11000 duplicate key error index: MyDB.accounts.$email_1  dup key: { : null }]
  name: 'MongoError',
  err: 'E11000 duplicate key error index: MyDB.accounts.$email_1  dup key: { : null }',
  code: 11000,
  n: 0,
  ok: …
Run Code Online (Sandbox Code Playgroud)

indexing unique sparse-matrix mongoose mongodb

9
推荐指数
1
解决办法
7523
查看次数

如何在大型稀疏文件上创建快速有效的文件流写入

我有一个应用程序,可以在多个段中写入大文件.我使用FileStream.Seek来定位每个wirte.看来,当我在稀疏文件中的深位置调用FileStream.Write时,write会在所有前面的字节上触发"回填"操作(写入0),这很慢.

有没有更有效的方法来处理这种情况?

以下代码演示了该问题.初始写入在我的机器上大约需要370 MS.

    public void WriteToStream()
    {
        DateTime dt;
        using (FileStream fs = File.Create("C:\\testfile.file"))
        {   
            fs.SetLength(1024 * 1024 * 100);
            fs.Seek(-1, SeekOrigin.End);
            dt = DateTime.Now;
            fs.WriteByte(255);              
        }

        Console.WriteLine(@"WRITE MS: " + DateTime.Now.Subtract(dt).TotalMilliseconds.ToString());
    }
Run Code Online (Sandbox Code Playgroud)

c# file-io filestream sparse-matrix

9
推荐指数
1
解决办法
2826
查看次数

大稀疏矩阵到矩阵误差

我想应用鼠标包,但我无法将大型稀疏矩阵转换为矩阵.

library(Matrix)
library(mice)

i=c(2,9,6:10^7)
j=c(2,9,6:10^7)
x=7*(1:7^7)

write.csv(a,"a.csv")
c=read.csv("a.csv")
w=sparseMatrix(i=c[,1],j=c[,2],x=c[,3])

w=as.matrix(w)
Run Code Online (Sandbox Code Playgroud)
Error in asMethod(object) : 
      Cholmod error 'problem too large' at file ../Core/cholmod_dense.c, line 105
Run Code Online (Sandbox Code Playgroud)

r matrix sparse-matrix large-data r-mice

9
推荐指数
0
解决办法
3027
查看次数

将列添加到稀疏矩阵

当我执行以下代码时,我得到一个备用矩阵:

import numpy as np
from scipy.sparse import csr_matrix

row = np.array([0, 0, 1, 2, 2, 2])
col = np.array([0, 2, 2, 0, 1, 2])
data = np.array([1, 2, 3, 4, 5, 6])
sp = csr_matrix((data, (row, col)), shape=(3, 3))
print(sp)

  (0, 0)        1
  (0, 2)        2
  (1, 2)        3
  (2, 0)        4
  (2, 1)        5
  (2, 2)        6
Run Code Online (Sandbox Code Playgroud)

我想在这个稀疏矩阵中添加另一列,因此输出为:

  (0, 0)        1
  (0, 2)        2
  (0, 3)        7
  (1, 2)        3
  (1, 3)        7
  (2, 0)        4
  (2, 1) …
Run Code Online (Sandbox Code Playgroud)

python numpy scipy sparse-matrix python-3.x

9
推荐指数
1
解决办法
7785
查看次数

将scipy稀疏矩阵存储为HDF5

我想以HDF5格式压缩和存储一个巨大的Scipy矩阵.我该怎么做呢?我试过以下代码:

a = csr_matrix((dat, (row, col)), shape=(947969, 36039))
f = h5py.File('foo.h5','w')    
dset = f.create_dataset("init", data=a, dtype = int, compression='gzip')
Run Code Online (Sandbox Code Playgroud)

我得到这样的错误,

TypeError: Scalar datasets don't support chunk/filter options
IOError: Can't prepare for writing data (No appropriate function for conversion path)
Run Code Online (Sandbox Code Playgroud)

我无法将其转换为numpy数组,因为会有内存溢出.什么是最好的方法?

python hdf5 scipy sparse-matrix h5py

9
推荐指数
2
解决办法
2768
查看次数

使用scipy进行矩阵求幂:expm,expm2和expm3

矩阵取幂可以使用scipy.linalg库中的函数在python中执行,即expm, expm2, expm3.expm利用Pade近似; expm2使用特征值分解方法,expm3并使用默认数量为20的泰勒级数.

在SciPy 0.13.0发行说明中声明:

不推荐使用矩阵指数函数scipy.linalg.expm2和scipy.linalg.expm3.所有用户都应该使用数字更强大的scipy.linalg.expm函数.

虽然expm2expm3自发布版本SciPy的0.13.0已被弃用,我发现,在许多情况下,这些实现比快expm.由此,出现了一些问题:

在什么情况下expm2和expm3会导致数值不稳定?

在什么情况下(例如稀疏矩阵,对称,......)每个算法更快/更精确?

python scipy sparse-matrix

9
推荐指数
1
解决办法
1037
查看次数