标签: sparse-matrix

Incanter是否支持稀疏矩阵?

Incanter是否支持稀疏矩阵(乘法,分解,求解)?

clojure matrix sparse-matrix incanter

8
推荐指数
1
解决办法
446
查看次数

Python:如何使用python存储稀疏矩阵?

我在python中使用稀疏矩阵输出,我需要将这个稀疏矩阵存储在我的硬盘中,我该怎么办?如果我应该创建一个数据库,那我该怎么办?这是我的代码:

import nltk
import cPickle
import numpy
from scipy.sparse import lil_matrix
from nltk.corpus import wordnet as wn
from nltk.corpus import brown
f = open('spmatrix.pkl','wb')
def markov(L):
    count=0
    c=len(text1)
    for i in range(0,c-2):
        h=L.index(text1[i])
        k=L.index(text1[i+1])
        mat[h,k]=mat[h,k]+1//matrix
    cPickle.dump(mat,f,-1)



text = [w for g in brown.categories() for w in brown.words(categories=g)]
text1=text[1:500]
arr=set(text1)
arr=list(arr)
mat=lil_matrix((len(arr),len(arr)))
markov(arr)
f.close()
Run Code Online (Sandbox Code Playgroud)

我需要将这个"mat"存储在一个文件中,并且应该使用坐标来访问矩阵的值.

稀疏矩阵的结果是这样的:`稀疏矩阵的结果是这样的:

(173, 168) 2.0 (173, 169) 1.0 (173, 172) 1.0 (173, 237) 4.0 (174, 231) 1.0 (175, 141) 1.0 (176, 195) 1.0 
Run Code Online (Sandbox Code Playgroud)

但是当我将它存储到一个文件中并阅读相同的内容时我会这样:

(0, 68) 1.0 …
Run Code Online (Sandbox Code Playgroud)

python numpy sparse-matrix

8
推荐指数
2
解决办法
1万
查看次数

在python/R中使用稀疏矩阵的利弊?

我正在使用python中的大型稀疏矩阵(文本生成的文档特征矩阵).它需要相当多的处理时间和内存来咀嚼这些,我想稀疏矩阵可以提供一些改进.但是我担心使用稀疏矩阵库会使插入其他python(和R,通过rpy2)模块变得更加困难.

穿过这座桥的人是否已经提供了一些建议?在性能,可伸缩性和兼容性方面,在python/R中使用稀疏矩阵的优缺点是什么?

python r sparse-matrix

8
推荐指数
1
解决办法
749
查看次数

bsxfun是否可用于稀疏矩阵

我希望逐元素二元运算适用于大型逻辑向量.这些向量的内容是男子气概,因此出于性能考虑,最好使用稀疏矩阵.如果我这样做,结果矩阵是不正确的.

Examble

A = logical([0;1;0;0]);
B = logical([0 0 1 1]);

C = bsxfun(@and,A,B)
Run Code Online (Sandbox Code Playgroud)

在这种情况下C是

 C = 
     0     0     0     0
     0     0     1     1
     0     0     0     0
     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

如果我使用稀疏矩阵C是

 C = full(bsxfun(@and,sparse(A),sparse(B)))
 C = 
     0     0     0     0
     1     1     1     1
     0     0     0     0
     0     0     0     0
Run Code Online (Sandbox Code Playgroud)

这显然是错的.

我是否监督某事或这是一个Matlab错误.

matlab sparse-matrix bsxfun

8
推荐指数
1
解决办法
948
查看次数

Matlab:每行或每列的第一个非零元素

例如,

A = [ -1   0  -2   0   0
   2   8   0   1   0
   0   0   3   0  -2
   0  -3   2   0   0
   1   2   0   0  -4];
Run Code Online (Sandbox Code Playgroud)

如何获得每行的第一个非零元素的向量?

matlab matrix sparse-array sparse-matrix

8
推荐指数
3
解决办法
1万
查看次数

是否有可能像在Matlab中一样快地计算Python中的稀疏矩阵的逆?

Matlab使用稀疏命令计算对角矩阵的倒数需要0.02秒.

P = diag(1:10000);
P = sparse(P);
tic;
A = inv(P);
toc
Run Code Online (Sandbox Code Playgroud)

但是,对于Python代码,它需要永远 - 几分钟.

import numpy as np
import time

startTime = time.time()
P = np.diag(range(1,10000))
A = np.linalg.inv(P)
runningTime = (time.time()-startTime)/60
print "The script was running for %f minutes" % runningTime
Run Code Online (Sandbox Code Playgroud)

我试图使用Scipy.sparse模块,但它没有帮助.运行时间下降,但只有40秒.

import numpy as np
import time
import scipy.sparse as sps
import scipy.sparse.linalg as spsl

startTime = time.time()
P = np.diag(range(1,10000))
P_sps = sps.coo_matrix(P)
A = spsl.inv(P_sps)
runningTime = (time.time()-startTime)/60
print "The script was running for %f …
Run Code Online (Sandbox Code Playgroud)

python performance matlab numpy sparse-matrix

8
推荐指数
1
解决办法
5458
查看次数

将稀疏矩阵从Python传输到R

我正在用Python做一些文本分析工作.不幸的是,我需要切换到R才能使用特定的软件包(遗憾的是,软件包无法轻松地在Python中复制).

目前,文本被解析为二元组计数,缩减为大约11,000个双字母的词汇,然后存储为字典:

{id1: {'bigrams':[(bigram1, count), (bigram2, count), ...]},
id2: {'bigrams': ...} 
Run Code Online (Sandbox Code Playgroud)

我需要将它放入R中的dgCMatrix中,其中行是id1,id2,...并且列是不同的双字母组合,以便单元格表示该id-bigram的"计数".

有什么建议?我想把它扩展到一个巨大的CSV,但这似乎超级低效加上由于内存限制可能不可行.

python r text-analysis sparse-matrix

8
推荐指数
1
解决办法
1270
查看次数

在scipy.sparse python中提取稀疏矩阵的主对角线

如何提取稀疏矩阵的主对角线?矩阵在scipy.sparse中创建.我想要等效的np.diagonal()但是对于稀疏矩阵.

python scipy sparse-matrix python-2.7

8
推荐指数
1
解决办法
2796
查看次数

使用randomized_svd进行推荐

我正在撰写文章:Maksims N. Volkovs和​​Guang Wei Yu 论文链接中有关推荐系统中二进制反馈的有效潜在模型.

它是通过使用来自协同过滤方法的邻居相似性信息,使用基于模型的方法,SVD来产生推荐.

所以基本上作者不是R(M users * N songs)像在SVD中那样分解用户评级矩阵进行推荐,而是分解用户歌曲预测矩阵S(M users * N songs)或稀疏矩阵S(M users * top-k predicted songs).

我们得到了,

Ur,$r,Vr = sklearn.utils.extmath.randomized_svd(', n_components  = 1000)
Run Code Online (Sandbox Code Playgroud)

哪里 r = SVD rank = n_components.

我们确实使用Ur和 生成预测Vr:

S(u, v) =  Ur(u, :) * Vr(v, :).T
Run Code Online (Sandbox Code Playgroud)

哪里 u = user, v = item v , T = transpose

S(M*top-k)使用协同过滤方法生成矩阵并馈送到randomized_svd

但是通过上述方法产生的预测不会产生准确性(truncated mAP@500我正在使用的性能测量,mAP = 0.01),而作者已经为相同的kaggle百万歌曲挑战数据挑战链接产生了0.14的良好mAP …

python matlab sparse-matrix pandas scikit-learn

8
推荐指数
1
解决办法
737
查看次数

如何使用TensorFlow中的稀疏张量进行计算?

我想以批量方式从TensorFlow中的DNC实现中实现此公式.

eqn1
式2
eqn3

使用批量密集张量,它非常简单.

# w [B, N], p [B, N], L [B, N, N], B=batch_size
dot_prod = tf.batch_matmul(tf.expand_dims(w, axis=2), tf.expand_dims(p, axis=1))
one_prod = 1 - tf.expand_dims(w, 1) - tf.expand_dims(w, 2) 
L =  one_prod * pre_L + dot_prod
Run Code Online (Sandbox Code Playgroud)

有没有办法用稀疏张量实现这个?w,pL是稀疏的,但TensorFlow缺乏稀疏批处理matmul和稀疏索引.

python sparse-matrix tensorflow

8
推荐指数
1
解决办法
671
查看次数