Technisch ist dies kein Programmierproblem, sondern ein mathematisches Problem. Aber ich denke, Sie verwenden die Varianz-Kovarianz-Matrix besser. Oder Korrelationsmatrix, wenn die Skala der Werte sehr unterschiedlich sind, sagen wir, statt mit:
>>> x
array([[5, 3, 0],
[3, 0, 5],
[5, 5, 0],
[1, 1, 7]])
Sie haben:
>>> x
array([[5, 300, 0],
[3, 0, 5],
[5, 500, 0],
[1, 100, 7]])
Um eine Varianz-cov Matrix zu erhalten:
>>> np.cov(x)
array([[ 6.33333333, -3.16666667, 6.66666667, -8. ],
[ -3.16666667, 6.33333333, -5.83333333, 7. ],
[ 6.66666667, -5.83333333, 8.33333333, -10. ],
[ -8. , 7. , -10. , 12. ]])
Oder die Korrelationsmatrix:
>>> np.corrcoef(x)
array([[ 1. , -0.5 , 0.91766294, -0.91766294],
[-0.5 , 1. , -0.80295507, 0.80295507],
[ 0.91766294, -0.80295507, 1. , -1. ],
[-0.91766294, 0.80295507, -1. , 1. ]])
Dies ist der Weg, um es zu betrachten, die diagonale Zelle, dh (0,0)
Zelle, ist die Korrelation von Ihrem ersten Vektor in X zu ihm selbst, also ist es 1. Die anderen Zellen, dh (0,1)
Zelle, ist die Korrelation zwischen der 1. und 2. Vektor in X. Sie sind negativ korreliert. Oder ähnlich sind die 1. und 3. Zelle positiv korreliert.
Kovarianzmatrix oder Korrelationsmatrix vermeiden Sie das Nullproblem, das von @Akavall aufgezeigt wird.
Ich denke, Kovarianz Ansatz ist besser als meine Lösung. – Akavall