Say masz
corrs = df.corr()
to problem jest z elementów diagonalnych, IIUC. Można łatwo ustawić je w pewnym ujemnej wartości, powiedzmy -2 (który koniecznie będzie niższa niż wartość wszystkich korelacji) z
np.fill_diagonal(corrs.values, -2)
przykładu
(wiele dzięki @Fabian Rost dla osób poprawa & @jezrael dla DataFrame)
import numpy as np
df=pd.DataFrame({
'one':[0.1, .32, .2, 0.4, 0.8],
'two':[.23, .18, .56, .61, .12],
'three':[.9, .3, .6, .5, .3],
'four':[.34, .75, .91, .19, .21],
'zive': [0.1, .32, .2, 0.4, 0.8],
'six':[.9, .3, .6, .5, .3],
'drive':[.9, .3, .6, .5, .3]})
corrs = df.corr()
np.fill_diagonal(corrs.values, -2)
>>> corrs
drive four one six three two zive
drive -2.000000 -0.039607 -0.747365 1.000000 1.000000 0.238102 -0.747365
four -0.039607 -2.000000 -0.489177 -0.039607 -0.039607 0.159583 -0.489177
one -0.747365 -0.489177 -2.000000 -0.747365 -0.747365 -0.351531 1.000000
six 1.000000 -0.039607 -0.747365 -2.000000 1.000000 0.238102 -0.747365
three 1.000000 -0.039607 -0.747365 1.000000 -2.000000 0.238102 -0.747365
two 0.238102 0.159583 -0.351531 0.238102 0.238102 -2.000000 -0.351531
zive -0.747365 -0.489177 1.000000 -0.747365 -0.747365 -0.351531 -2.000000
Można również uzyskać ujemne wartości korelacji. Więc lepiej byłoby ustawić je na wartość mniejszą niż -1. –
@FabianRost To jest doskonały punkt. Zaktualizuję. Dzięki! –
Być może możesz dodać próbkę 'df = pd.DataFrame ({'jeden': [0,1, .32, .2, 0.4, 0.8]," dwa ": [. 23, .18, .56, .61,. 12], "trzy": [. 9, .3, .6, .5, .3], "cztery": [. 34, .75, .91, .19, .21], "zive": [ 0,1, 0,32, .2, 0,4, 0,8], "sześć": [. 9, .3, .6, .5, .3], "napęd": [. 9, .3, .6, .5 , .3]}) ' – jezrael