Как выбрать наиболее важные функции? Характеристика - PullRequest
0 голосов
/ 22 марта 2019

Я использовал функцию для расстояния gower от этой ссылки: https://sourceforge.net/projects/gower-distance-4python/files/. Мои данные (df) таковы, что каждая строка представляет собой сделку, а каждый из столбцов - объекты. Так как он содержит много категориальных данных, я затем преобразовал данные, используя расстояние Gower, чтобы измерить «сходство» ... Я надеюсь, что это правильно (как показано ниже ..):

D = gower_distances(df)
distArray = ssd.squareform(D)
hierarchal_cluster=scipy.cluster.hierarchy.linkage(distArray, method='ward', metric='euclidean', optimal_ordering=False)

Затем я строю иерархический кластер сверху в дендограмму:

plt.title('Hierarchical Clustering Dendrogram (truncated)')
plt.xlabel('sample index or (cluster size)')
plt.ylabel('distance')

dendrogram(
    hierarchal_cluster,
    truncate_mode='lastp',  # show only the last p merged clusters
    p=15,  # show only the last p merged clusters
    leaf_rotation=90.,
    leaf_font_size=12.,
    show_contracted=True  # to get a distribution impression in truncated branches
)

Я не могу показать это, так как у меня недостаточно привилегированных очков, но на дендограмме я вижу отдельные цвета.
Какой главный дискриминатор разделяет их?
Как я могу это выяснить?
Как я могу использовать PCA для извлечения полезных функций?
Должен ли я передать свой'ierarchal_cluster 'в функцию PCA?
Что-то вроде ниже ..?

pca = PCA().fit(hierarchal_cluster.T)
plt.plot(np.arange(1,len(pca.explained_variance_ratio_)+1,1),pca.explained_variance_ratio_.cumsum())

Ответы [ 2 ]

0 голосов
/ 22 марта 2019

Цитирование документации scipy по вопросу связи Уорда:

Методы 'centroid', 'median' и 'ward' правильно определены, только если используется евклидова парная метрика.Если y передается как предварительно вычисленные попарные расстояния, то пользователь должен убедиться, что эти расстояния на самом деле являются евклидовыми, иначе полученный результат будет неправильным.

Таким образом, вы не можете использовать связь Уордас Гауэр!

0 голосов
/ 22 марта 2019

Надеюсь, вы знаете, что PCA работает только для непрерывных данных? Поскольку вы упомянули, есть много категорических особенностей. Из того, что вы написали, получается, что вы получили смешанные данные.

Обычной практикой при работе со смешанными данными является разделение непрерывных и категориальных признаков / переменных. Затем найдите евклидово расстояние между точками данных для непрерывных (или числовых) признаков и расстояние Хэмминга для категориальных признаков [1].

Это позволит вам найти сходство между непрерывной и категориальной функцией по отдельности. Теперь, пока вы занимаетесь этим, примените PCA к непрерывным переменным, чтобы извлечь важные функции. И применить Multiple Correspondence Analysis MCA к категориальным функциям. После этого вы можете объединить полученные соответствующие функции вместе и применить любой алгоритм кластеризации.

Так что, по сути, я предлагаю выбор функции / извлечение функции перед кластеризацией.

[1] Хуанг З., 1998. Расширения алгоритма k-средних для кластеризации больших наборов данных с категориальными значениями. Интеллектуальный анализ данных и открытие знаний, 2 (3), с.283-304.

...