Я пытаюсь использовать функцию gower по этой ссылке https://sourceforge.net/projects/gower-distance-4python/files/. Я пытаюсь применить ее к моему фрейму данных категориальных переменных.Однако я вижу, что когда я использую функцию gower_distances, у меня в диагоналях есть ненулевые значения (мне нужно, чтобы все они были равны 0).
Я пытался отладить код.Я думаю, что я знаю, где это происходит, и это происходит в функции _gower_distance_row.Есть эта строка кода, которую я не понимаю; sij_cat = np.where (xi_cat == xj_cat, np.zeros_like (xi_cat), np.ones_like (xi_cat)).Но я представлю это в более простом для понимания формате.
Скажем, у меня есть:
xi=np.array(['cat','dog','monkey'])
xj=np.array([['cat','dog','monkey'],['horse','dog','hairy']])
sij_cat = np.where(xi == xj,np.zeros_like(xi),np.ones_like(xi))
Я получаю это в качестве результата:
array([['', '', ''],
['1', '', '1']], dtype='<U6')
, так как я сравниваю кошку с кошкой, я хочу присвоить ноль, и гдеэто отличается, например, кошка против лошади и обезьяна против волосатой, должно быть 1. Я не понимаю, почему в приведенном выше результате я получаю ''?я хочу нули здесь.Как мне это исправить?