如何将Torch / Lua中的两个数组配对成一个表?

我需要在我的Torch /Lua程序中使用Pearson相关系数。这是函数:

function math.pearson(a)
  --计算平均值
  local x1,y1 = 00
  for _, v in pairs(a) do
  x1,y1 = x1 + v[1],y1 + v[2]
  print('x1 '..x1);
  print('y1 '..y1);
  end
  --计算系数
  x1,y1 = x1 / #a,y1 / #a
  local x2,y2,xy = 000
  for _,v in pairs(a) do
    local tx,ty = v[1] - x1,v[2] - y1
    xy,x2,y2 = xy + tx * ty,x2 + tx * tx,y2 + ty * ty
  end

  return xy / math.sqrt(x2) / math.sqrt(y2)
end

这个函数想要一个输入成对的表格,可以在pairs()函数中使用。我试着提交正确的输入表格,但是我无法得到任何有效结果。

我尝试用以下代码:

z = {}
a = {27, 29, 45, 98, 1293, 0.1}
b = {0.0001, 0.001, 0.32132, 0.0001, 0.0009}
z = {a,b}

但不幸的是,它并不起作用。它将计算b的第一个元素之间的成对关系,而我希望它计算a和b之间的相关性。我该怎么做?

你能提供一个可能有效的对象作为输入传递给math.pearson()函数吗?

点赞
用户1442917
用户1442917

如果你正在使用这个实现,我认为它期望一个不同的参数结构。你应该传递一个包含两个值的表,如下所示:

local z = {
  {27, 0.0001}, {29, 0.001}, {45, 0.32132}, {98, 0.0001}, {1293, 0.0009}
}
print(math.pearson(z))

对我来说,这将打印出 -0.25304101592759

2015-04-15 23:37:50