2015-03-12 11 views
2

Я вычислил матрицу подобия jaccard с Python. Я хочу сгруппировать наивысшее сходство с наименьшим, однако, независимо от того, какую функцию связи я использую, он создает ту же самую дендрограмму! У меня такое чувство, что функция предполагает, что моя матрица имеет исходные данные, но я уже вычислил первую матрицу подобия. Есть ли способ передать эту матрицу подобия до дендрограммы, чтобы она правильно отображалась? Или мне придется выводить матрицу и просто делать это с R. Передача исходных исходных данных невозможна, поскольку я вычисляю сходство слов. Спасибо за помощь!Dendrogram через scipy с учетом матрицы подобия

Вот код:

SimMatrix = [[ 0.,0.09259259, 0.125  , 0.  , 0.08571429], 
    [ 0.09259259, 0.  , 0.05555556, 0.  , 0.05128205], 
    [ 0.125  , 0.05555556, 0.  , 0.03571429, 0.05882353], 
    [ 0.  , 0.  , 0.03571429, 0.  , 0.  ], 
    [ 0.08571429, 0.05128205, 0.05882353, 0.  , 0.  ]] 

linkage = hcluster.complete(SimMatrix) #doesnt matter what linkage... 
dendro = hcluster.dendrogram(linkage) #same plot for all types? 
show() 

Если запустить этот код, вы увидите дендрограммы, который полностью назад. Независимо от того, какой тип связи я использую, он создает ту же самую дендрограмму. Это интуитивно не может быть правильным!

+0

Разве вы не хватает некоторых запятых, 'в списке списков? –

+0

Да, ха-ха, жаль, что я напечатал матрицу, затем скопировал и вставил! Это не проблема. –

+0

Возможно, также укажите, что вы, по-видимому, использовали 'import scipy.cluster.hierarchy как hcluster' и, конечно, на самом деле для построения чего-либо требуется' matplotlib'. – tripleee

ответ

2

Вот решение. Оказывается, SimMatrix нужно сначала преобразовать в сконденсированную матрицу (диагональ, верхний правый или нижний левый) этой матрицы). Вы можете увидеть это в коде ниже:

import scipy.spatial.distance as ssd 
distVec = ssd.squareform(SimMatrix) 
linkage = hcluster.linkage(1 - distVec) 
dendro = hcluster.dendrogram(linkage) 
show() 

 Смежные вопросы

  • Нет связанных вопросов^_^