scipy.stats包提供了一个用numpy数组计算皮尔森系数的函数。但是有没有一个库可以通过theano张量作为输入并计算相关性。 Eval()函数是将张量转换为值的选项,但在代码运行期间无法做到这一点。
答案 0 :(得分:0)
中心余弦相似度与Pearson相关性相同 在theano中,它可以如下计算:
a = T.vector(dtype=theano.config.floatX)
b = T.vector(dtype=theano.config.floatX)
a_centered, b_centered = a - a.mean(), b - b.mean()
r_num = T.dot(a_centered, b_centered)
r_den = T.sqrt(T.dot(a_centered, a_centered) * T.dot(b_centered, b_centered))
# written without the dot products for pedagogical reasons
# r_num = T.sum(a_centered * b_centered)
# r_den = T.sqrt(T.sum(a_centered ** 2) * T.sum(b_centered ** 2))
pearson_corr = r_num / r_den
pearson_corr_fn = theano.function([a, b], pearson_corr)
v1 = np.asarray([3, 4, 5, 7], dtype=np.float32)
v2 = np.asarray([2, 5, 3, 1], dtype=np.float32)
print pearson_corr_fn(v1, v2)