En matlab, j'utilise
a=[1,4,6]
b=[1,2,3]
corr(a,b)
qui renvoie .9934. J'ai essayé numpy.correlate
mais cela renvoie quelque chose de complètement différent. Quelle est la manière la plus simple d'obtenir la corrélation de deux vecteurs ?
En matlab, j'utilise
a=[1,4,6]
b=[1,2,3]
corr(a,b)
qui renvoie .9934. J'ai essayé numpy.correlate
mais cela renvoie quelque chose de complètement différent. Quelle est la manière la plus simple d'obtenir la corrélation de deux vecteurs ?
Les documents indiquent que numpy.correlate
n'est pas ce que vous recherchez:
numpy.correlate(a, v, mode='valid', old_behavior=False)[source]
Corrélation croisée de deux séquences 1-dimensionnelles.
Cette fonction calcule la corrélation telle que généralement définie dans les textes de traitement du signal :
z[k] = sum_n a[n] * conj(v[n+k])
avec des séquences a et v étant remplis de zéros si nécessaire et conj étant le conjugué.
À la place, comme l'ont suggéré les autres commentaires, vous recherchez un coefficient de corrélation de Pearson. Pour ce faire avec scipy, essayez :
from scipy.stats.stats import pearsonr
a = [1,4,6]
b = [1,2,3]
print(pearsonr(a,b))
Cela donne
(0.99339926779878274, 0.073186395040328034)
Vous pouvez également utiliser numpy.corrcoef
:
import numpy
print(numpy.corrcoef(a,b))
Cela donne :
[[ 1. 0.99339927]
[ 0.99339927 1. ]]
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.