2017-04-27 2 views
0

Le paquetage scipy.stats fournit une fonction de calcul du coefficient de Pearson avec un tableau numpy. Mais existe-t-il une bibliothèque avec laquelle nous pouvons passer les tenseurs de theano comme entrée et calculer la corrélation. La fonction Eval() est une option pour convertir les tenseurs en valeurs mais cela n'est pas possible pendant l'exécution d'un code.Existe-t-il de toute façon de calculer la corrélation de Pearson ayant des entrées comme tenseurs de theano?

Répondre

0

La similarité de cosinus centré est la même que la corrélation de Pearson.
En Théano, il peut être calculé comme suit:

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) 
+0

Merci pour le code. –

+0

De rien. Veuillez accepter la réponse si c'est ce que vous voulez; Sinon, laissez-nous savoir ce dont vous avez besoin. – rafaelvalle