2017-01-24 9 views
2

Я выполняю кластерный анализ категориальных данных, следовательно, используя подход k-modes.Показать функции кластера k-modes

Мои данные имеют форму предпочтения: Как вам нравятся волосы и глаза?

enter image description here

Ответчик может забрать ответы из фиксированного (множественного выбора) набор из 4 возможности.

Поэтому я получаю манекены, применяю k-моды, присоединяю кластеры к исходному df, а затем рисую их в 2D с помощью pca.

Мой код выглядит следующим образом:

import numpy as np 
import pandas as pd 
from kmodes import kmodes 

df_dummy = pd.get_dummies(df) 

#transform into numpy array 
x = df_dummy.reset_index().values 

km = kmodes.KModes(n_clusters=3, init='Huang', n_init=5, verbose=0) 
clusters = km.fit_predict(x) 
df_dummy['clusters'] = clusters 


import matplotlib.pyplot as plt 
from sklearn.decomposition import PCA 
pca = PCA(2) 

# Turn the dummified df into two columns with PCA 
plot_columns = pca.fit_transform(df_dummy.ix[:,0:12]) 

# Plot based on the two dimensions, and shade by cluster label 
plt.scatter(x=plot_columns[:,1], y=plot_columns[:,0], c=df_dummy["clusters"], s=30) 
plt.show() 

и я могу представить себе:

enter image description here

Теперь моя проблема: Может как-то раскрыть отличительную особенность каждого кластера? т. Е. Каковы основные характеристики (возможно, светлые волосы и голубые глаза) группы зеленых точек в диаграмме рассеяния?

Я получаю, что кластеризация произошла, но я не могу найти способ перевести то, что на самом деле означает кластеризация.

Должен ли я играть с объектом .labels_?

ответ

0

Посмотрите на km.cluster_centroids_. Это даст режим каждой переменной для каждого кластера.