PHP中的奇异值分解(SVD)

前端之家收集整理的这篇文章主要介绍了PHP中的奇异值分解(SVD)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在 PHP中实现奇异值分解(SVD).我知道有几个外部图书馆可以为我做这个.但是我有两个关于PHP的问题: @H_403_1@1)你认为用PHP编写SVD是可能和/或合理的? @H_403_1@2)如果(1)是是的:你能帮我编码PHP吗?

我已经自己编写了SVD的一些部分. Here’s the code我对这个行动进行了评论.这段代码的一些部分并不完全正确.

如果你能帮助我,这将是巨大的.提前非常感谢!

SVD-Python @H_403_1@是一个非常清晰,简约的SVD实现. @H_403_1@它几乎是psuedocode,应该是相当容易理解 @H_403_1@并比较/绘制您的PHP实现,即使你不知道很多python.

SVD-python

也就是说,正如其他人所说,我不会期望能够使用PHP实现来做非常重的LSA,这听起来像一个非常有限的网络主机.

干杯

编辑:@H_403_1@上面的模块本身不做任何事情,但是包含了一个例子@H_403_1@打开评论.假设你下载了python模块,并且它是可访问的(例如在同一个文件夹中),你@H_403_1@可以实现一个微不足道的例子,

#!/usr/bin/python
import svd
import math

a = [[22.,10.,2.,3.,7.],[14.,7.,0.,8.],[-1.,13.,-1.,-11.,3.],[-3.,-2.,4.],[ 9.,8.,1.,-7.,5.,-1.],[ 2.,-6.,6.,1.],[ 4.,2.]]

u,w,vt = svd.svd(a)
print w

这里’w’包含您的奇异值列表.@H_403_1@当然,这只会让你成为潜在语义分析及其亲属的一部分.@H_403_1@你通常要减少奇异值的数量,然后使用一些适当的距离@H_403_1@衡量您的文档或单词,文档和单词等之间的相似性的度量@H_403_1@你的合成矢量之间的角度的余弦相当受欢迎.

Latent Semantic Mapping (pdf)

是我读过的最清晰,最简洁和翔实的文章@H_403_1@需要按照SVD进行工作.

Edit2:还要注意,如果你正在使用非常大的术语文档矩阵(我假设这个@H_403_1@是你在做什么)几乎肯定会更有效地进行分解@H_403_1@在离线模式下,然后仅响应请求,以实时方式执行比较.@H_403_1@而svd-python是伟大的学习,svdlibc是更多的你想要这样沉重@H_403_1@计算.

最后在上面的bellegarda论文中提到,记住你不必重新计算@H_403_1@svd每一次你得到一个新的文件或请求.取决于你正在努力做什么@H_403_1@可能每个星期左右执行svd一次,在离线模式,本地机器,@H_403_1@然后上传结果(尽管有大小/带宽问题).

反正祝你好运!

猜你在找的PHP相关文章