2013-12-11 3 views
5

У меня возникли проблемы с пониманием конкретного варианта использования класса sklearn.cluster.SpectralClustering, как указано в официальной документации here. Скажем, я хочу использовать свою собственную матрицу сродства для выполнения кластеризации. Я первый экземпляр объекта класса SpectralClustering следующим образом: Использование класса sklearn.cluster.SpectralClustering с параметром affinity = 'precomputed'

from sklearn.clustering import SpectralClustering 

cl = SpectralClustering(n_clusters=5,affinity='precomputed') 

Документация для параметра affinity выше выглядит следующим образом:

сродство: строка, массив типа или вызываемый, по умолчанию «RBF»

Если строка, это может быть одна из «ближайших_небольших», «предварительно вычисленных», «rbf» или одно из ядер, поддерживаемых sklearn.metrics.pairwise_kernels. Следует использовать только ядра, которые создают оценки сходства (неотрицательные значения, которые увеличиваются с подобием). Это свойство не проверяется алгоритмом кластеризации.

Теперь объект cl имеет метод fit, для которого в документации о его единственном параметре X выглядит следующим образом:

X: массив, как или редкие матрицы, формы (n_samples, n_features)

ИЛИ, если аффинность == precomputed, А предварительно вычисленное аффинность матрица формы (n_samples, n_samples)

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

Так при использовании метода fit на моем экземпляре SpectralClustering, мне на самом деле нужно, чтобы превратить мое сродство матрицы в матрицу подобия перед передачей его вызов fit метода в качестве параметра X? На той же странице документации делается заметка о преобразовании расстояния к хорошо подобранным сходствам, но в явной форме не указывается, где должен выполняться этот шаг, и через какой метод вызывать.

ответ

3

Прямо из Документов:

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

np.exp(- X ** 2/(2. * delta ** 2)) 

Это идет в собственном коде, и результат этого может быть передана fit. Для целей этого алгоритма сродство означает сходство, а не расстояние.

+0

Спасибо - я заметил этот сниппет, но был догоняем формулировку, т. Е.сходство означает сходство, в отличие от расстояния. –

+0

Интересно, что означает «дельта»? как установить этот параметр? – eastdog

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