Il classico coefficiente di correlazione di Pearson è forse la misura più popolare della similarità della curva. SciPy 's pearsonr
ti dà questo.
Il coefficiente di correlazione misura la somiglianza forma ed è (in qualche modo, non completamente) insensibile alla polarizzazione e al ridimensionamento.
Un altro modo per misurare la similarità è misurare direttamente la differenza media delle curve. Puoi utilizzare la differenza RMS . Non sono necessarie librerie, semplicemente qualcosa di simile:
# rms difference of vectors a and b:
rmsdiff = 0
for (x, y) in zip(a, b):
rmsdiff += (x - y) ** 2 # NOTE: overflow danger if the vectors are long!
rmsdiff = math.sqrt(rmsdiff / min(len(a), len(b))
La differenza RMS accentua le deviazioni di grandi dimensioni, anche se sono locali, e maschera le piccole deviazioni, anche se sono globali. Ad esempio, i vettori
[1 2 3 4 5] and [2 1 4 3 6]
sono più simili in senso RMS di
[1 2 3 4 5] and [1 2 3 4 2]
Non esiste una sola misura "giusta" di somiglianza. Diversi metodi accentuano diverse (dis) somiglianze.