标签: linear-algebra

我如何衡量Twitter等特定词汇的趋势?

我白天有报纸文章的语料库.语料库中的每个单词都具有当天存在的频率计数.我一直在寻找能够捕捉突破性词语的算法,类似于Twitter在人们的推文中衡量趋势的方式.

例如,在同一组报纸中,"经济衰退"这个词的出现频率如下:
第1天| 经济衰退| 456
第2天| 经济衰退| 2134
第3天| 经济衰退| 3678

而'欧洲'
第1天| 欧洲| 67895
第2天| 欧洲| 71999
第3天| 欧洲| 73321

我正在考虑每天增加%增长并将其乘以频率总和的对数.然后我会取平均分数并比较各种单词.

在这种情况下:
经济衰退=(3.68*8.74 + 0.72*8.74)/ 2 = 19.23
欧洲=(0.06*12.27 + 0.02*12.27)/ 2 = 0.49

是否有更好的方法来捕捉爆炸式增长?我正在尝试挖掘每日语料库以查找在特定时间段内越来越多地提及的术语.如果有更好的算法,请告诉我.我希望能够找到具有高非恒定加速度的单词.也许采用二阶导数会更有效.或者也许我这样做过于复杂,并且在发现频道上观看了太多的物理编程.如果可能,请告诉我一个数学示例谢谢!

algorithm math statistics geometry linear-algebra

15
推荐指数
1
解决办法
1054
查看次数

矩阵没有对齐错误:Python SciPy fmin_bfgs

问题提示: 当尝试使用scipy.optimize.fmin_bfgs最小化(优化)函数时,该函数抛出一个

derphi0 = np.dot(gfk,pk)ValueError:矩阵未对齐

错误.根据我的错误检查,这发生在第一次迭代的最后通过fmin_bfgs - 就在返回任何值或任何调用回调之前.

配置: Windows Vista Python 3.2.2 SciPy 0.10 IDE =带有PyDev的Eclipse

详细说明: 我使用scipy.optimize.fmin_bfgs来最小化简单逻辑回归实现的成本(从Octave转换为Python/SciPy).基本上,成本函数名为cost_arr函数,梯度下降在gradient_descent_arr函数中.

我已手动测试并完全验证*cost_arr*和*gradient_descent_arr*正常工作并正确返回所有值.我还测试了验证正确的参数是否传递给*fmin_bfgs*函数.然而,运行时,我得到ValueError:矩阵没有对齐.根据来源评论,确切的错误发生在

def line_search_wolfe1函数在#Minpack的Wolfe行和scaplar搜索中由scipy包提供.

值得注意的是,如果我使用scipy.optimize.fmin,则fmin函数将运行完成.

确切错误:

文件"D:\ Users\Shannon\Programming\Eclipse\workspace\SBML\sbml\LogisticRegression.py",第395行,在fminunc_opt中

optcost = scipy.optimize.fmin_bfgs(self.cost_arr, initialtheta, fprime=self.gradient_descent_arr, args=myargs, maxiter=maxnumit, callback=self.callback_fmin_bfgs, retall=True)   
Run Code Online (Sandbox Code Playgroud)

文件"C:\ Python32x32\lib\site-packages\scipy\optimize\optimize.py",第533行,在fmin_bfgs old_fval,old_old_fval)
文件"C:\ Python32x32\lib\site-packages\scipy\optimize\linesearch. py",第76行,in line_search_wolfe1 derphi0 = np.dot(gfk,pk)ValueError:矩阵未对齐

我用以下方法调用优化函数:optcost = scipy.optimize.fmin_bfgs(self.cost_arr,initialtheta,fprime = self.gradient_descent_arr,args = myargs,maxiter = maxnumit,callback = self.callback_fmin_bfgs,retall = True)

我花了几天时间试图解决这个问题,似乎无法确定是什么导致 矩阵没有对齐错误.

附录:2012-01-08我更多地使用了这个并且似乎已经缩小了问题(但是对于如何修复它们感到困惑).首先,fmin(仅使用fmin)使用这些函数 - 成本,渐变.其次,在手动实现中的单次迭代中测试时,成本和梯度函数都能准确地返回预期值(不使用fmin_bfgs).第三,我在optimize.linsearch中添加了错误代码,错误似乎是在def line_search_wolfe1行中引发的:derphi0 = np.dot(gfk,pk).在这里,根据我的测试,scipy.optimize.optimize pk = [[12.00921659] [11.26284221]] pk type = and …

linear-algebra scipy linear-regression python-3.x

15
推荐指数
1
解决办法
8292
查看次数

scipy.linalg.eig返回协方差矩阵的复特征值?

协方差矩阵的特征值应该是实数和非负的,因为协方差矩阵是对称的和半正定的.

但是,请看scipy的以下实验:

>>> a=np.random.random(5)
>>> b=np.random.random(5)
>>> ab = np.vstack((a,b)).T
>>> C=np.cov(ab)
>>> eig(C)
7.90174997e-01 +0.00000000e+00j,
2.38344473e-17 +6.15983679e-17j,
2.38344473e-17 -6.15983679e-17j,
-1.76100435e-17 +0.00000000e+00j,   
5.42658040e-33 +0.00000000e+00j
Run Code Online (Sandbox Code Playgroud)

但是,在Matlab中重现上面的例子可以正常工作:

a = [0.6271, 0.4314, 0.3453, 0.8073, 0.9739]
b = [0.1924, 0.3680, 0.0568, 0.1831, 0.0176]
C=cov([a;b])
eig(C)
-0.0000
-0.0000
 0.0000
 0.0000
 0.7902
Run Code Online (Sandbox Code Playgroud)

python matlab numpy linear-algebra scipy

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

大型矩阵反演

我正在考虑采用大矩阵的逆矩阵,通常大小为1000 x 1000,但有时超过100000 x 100000(由于时间和内存,目前失败).我知道正常的情绪是"不要反过来,找其他方法去做",但目前这是不可能的.造成这种情况的原因是由于已经制作的软件需要使矩阵反转.(注意:我正在研究如何改变这种情况,但这需要很长时间)

目前我们正在使用数值重新复制的LU分解方法,我目前正在测试特征库.特征库似乎更稳定,速度更快,但我仍在测试阶段的准确性.我已经快速浏览了其他库,例如ATLAS和LAPACK,但尚未对这些库进行任何实质性测试.

似乎特征库不使用并发方法来计算逆(尽管对于逆分的LU分解部分也是如此),并且据我所知,ATLAS和LAPACK在此限制中是相似的.(我目前正在使用openMP测试特征的速度差异而没有.)

第一个问题是任何人都可以解释如何通过并行化优化矩阵求逆.我在这里发现了一篇关于矩阵求逆并行算法的文章,但我不明白.看来这篇文章谈到另一种方法?我也不确定scaLAPACK或PETSc是否有用?

第二个问题,我看了这个文章使用GPU来提高性能的,但我从来没有编码的GPU,因此不知道是什么人所要表达的,但在底部的图表看起来相当惊人.这怎么可能,以及如果要成为现实,我该如何开始实现这样的事情.

我也发现这篇文章,还有时间阅读它来理解,但它似乎很有希望,因为内存是我们软件的当前问题.

有关这些文章或一般问题的任何信息都会有很大帮助.如果这个问题看起来含糊不清,我再次道歉,如果有必要,我会尽量扩大.

parallel-processing concurrency linear-algebra matrix-inverse eigen

15
推荐指数
3
解决办法
9790
查看次数

Moore-Penrose推广了一个大型稀疏矩阵的逆

我有一个方形矩阵,有几万行和一列,只有几10,所以我用这个Matrix包以高效的方式存储在R中.由于base::matrix内存不足,对象无法处理该数量的单元格.

我的问题是我需要矩阵以及此类矩阵的Moore-Penrose广义逆,这是我目前无法计算的.

我尝试过的:

  • solve产生Error in LU.dgC(a) : cs_lu(A) failed: near-singular A (or out of memory)错误
  • MASS::ginvMatrix班级不相容
  • 没有直接的方法将稀疏转换Matrix为例如bigmemory::big.matrix,而后者也MASS::ginv无论如何也无法工作
  • 如果我尝试计算矩阵的Choleski分解以便稍后调用Matrix::chol2inv它,我会收到以下错误消息:

    Error in .local(x, ...) : 
      internal_chm_factor: Cholesky factorization failed
    In addition: Warning message:
    In .local(x, ...) :
      Cholmod warning 'not positive definite' at file ../Cholesky/t_cholmod_rowfac.c, line 431
    
    Run Code Online (Sandbox Code Playgroud)
  • 基于相关问题,我还尝试pbdDMAT了单个节点上的包,但pbdDMAT::chol产生了Cholmod error …

r linear-algebra sparse-matrix matrix-inverse large-data

15
推荐指数
1
解决办法
2375
查看次数

python中用于计算最小范数解或从伪逆获得的解的最准确方法是什么?

我的目标是解决:

Kc=y
Run Code Online (Sandbox Code Playgroud)

使用伪逆(即最小范数解):

c=K^{+}y
Run Code Online (Sandbox Code Playgroud)

这样的模型是(希望)高次多项式模型f(x) = sum_i c_i x^i.我特别感兴趣的是欠定的情况,我们有更多的多项式特征而不是数据(几个方程太多的变量/未知数)columns = deg+1 > N = rows.注意K是多项式特征的vandermode矩阵.

我最初使用的是python函数np.linalg.pinv,但后来我注意到有一些时髦的事情正如我在这里所说:为什么在python中解决Xc = y的不同方法会给出不同的解决方案呢?.在那个问题中,我使用方阵来学习[-1.+1]具有高次多项式的区间函数.那里的答案建议我降低多项式的次数和/或增加区间大小.主要问题是我不清楚如何在事物变得不可靠之前选择间隔或最大程度.我认为我的主要问题是选择这样一个数值稳定的范围取决于我可能使用的方法.最后我真正关心的是那个

  1. 我使用的方法与该多项式拟合问题的伪逆完全(或非常接近)
  2. 它的数值稳定

理想情况下,我想尝试一个大程度的多项式,但这可能受到我的机器精度的限制.是否可以通过使用比浮子更精确的东西来提高机器的数值精度?

另外,我真的关心我使用的python中的任何函数,它提供了对伪逆的最接近的答案(并且希望它在数值上稳定,所以我实际上可以使用它).要检查伪逆的答案,我编写了以下脚本:

import numpy as np
from sklearn.preprocessing import PolynomialFeatures

def l2_loss(y,y_):
    N = y.shape[0]
    return (1/N)*np.linalg.norm(y-y_)

## some parameters
lb,ub = -200,200
N=100
D0=1
degree_mdl = 120
## target function
freq_cos = 2
f_target = lambda x: …
Run Code Online (Sandbox Code Playgroud)

python precision numpy linear-algebra linear-regression

15
推荐指数
1
解决办法
1140
查看次数

广播的NumPy算法 - 为什么一种方法的性能更高?

这个问题是我以高效的方式计算Vandermonde矩阵的答案 .

这是设置:

x = np.arange(5000)  # an integer array
N = 4
Run Code Online (Sandbox Code Playgroud)

现在,我将以两种不同的方式计算Vandermonde矩阵:

m1 = (x ** np.arange(N)[:, None]).T
Run Code Online (Sandbox Code Playgroud)

和,

m2 = x[:, None] ** np.arange(N)
Run Code Online (Sandbox Code Playgroud)

完整性检查:

np.array_equal(m1, m2)
True
Run Code Online (Sandbox Code Playgroud)

这些方法是相同的,但它们的性能不是:

%timeit m1 = (x ** np.arange(N)[:, None]).T
42.7 µs ± 271 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each)

%timeit m2 = x[:, None] ** np.arange(N)
150 µs ± 995 ns per loop (mean ± std. dev. of 7 …
Run Code Online (Sandbox Code Playgroud)

python performance numpy linear-algebra numpy-broadcasting

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

ublas与矩阵模板库(MTL4)

我正在编写一个用于c ++的双曲偏微分方程的软件.几乎所有符号都是矢量和矩阵符号.最重要的是,我需要线性代数求解器.是的,矢量和矩阵的大小可以有很大差异(从1000到大小只能通过分布式存储器计算来解决,例如集群或类似的架构).如果我曾经生活在乌托邦,那么我就已经拥有线性求解器,可以很好地适应集群,GPU和多核.

在考虑应该代表变量的数据结构时,我来了accros the boost.ublas和MTL4.两个库都是blas 3级兼容,MTL4实现稀疏求解器并且比ublas快得多.它们都没有实现对多核处理器的支持,更不用说分布式内存计算的并行化了.另一方面,MTL4的开发取决于2个开发人员的唯一努力(至少我理解),并且我确信ublas有一个原因在于升级库.此外,intel的mkl库包含了用ublas绑定其结构的示例.我想将我的数据和软件绑定到数据结构中,该数据结构将坚固,开发和维护很长一段时间.

最后,问题.您对使用ublas和/或mtl4的体验如何,您会推荐什么?

thanx,mayydodol

c++ math linear-algebra

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

仅沿一个轴卷积

我有两个具有相同第一轴尺寸的二维阵列.在python中,我想仅沿第二轴卷积两个矩阵.我想C在不计算沿第一轴的卷积的情况下进入下方.

import numpy as np
import scipy.signal as sg

M, N, P = 4, 10, 20
A = np.random.randn(M, N)
B = np.random.randn(M, P)

C = sg.convolve(A, B, 'full')[(2*M-1)/2]
Run Code Online (Sandbox Code Playgroud)

有快速的方法吗?

signal-processing numpy linear-algebra convolution scipy

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

Ruby的稀疏矩阵库

我正在寻找一个可以在Ruby中使用的稀疏矩阵库.我目前正在使用由"gsl"gem提供的GNU Scientific Library绑定,但如果我使用专用的稀疏矩阵库,我的应用程序将更好地优化.我调查了linalgNArray库.这三个库中没有一个支持稀疏矩阵优化的存储或操作.

有没有我错过的东西 - 或者现有的C库可能可以编写绑定?我更喜欢前者,后者,因为我之前没有在Ruby中编写C绑定,但我愿意尝试它.

ruby math linear-algebra scientific-computing sparse-matrix

14
推荐指数
1
解决办法
1956
查看次数