显示k-modes集群功能

xxx*_*xxx 5 k-means scikit-learn categorical-data

我正在对分类数据执行聚类分析,因此使用k模式方法。

我的数据是根据偏好调查而设计的:您如何看待头发和眼睛?

在此处输入图片说明

受访者可以从4种可能性的固定(多项选择)集中选择答案。

因此,我得到了虚拟对象,应用了k模式,将群集附加到初始df,然后使用pca在2D中绘制它们。

我的代码如下:

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()
Run Code Online (Sandbox Code Playgroud)

我可以看到:

在此处输入图片说明

现在我的问题是: 能否以某种方式揭示每个集群的独特特征? 即,散点图中的绿点组的主要特征(也许是金发和蓝眼睛)是什么?

我发现集群已经发生,但是我找不到一种方法来翻译集群的实际含义。

我应该玩.labels_对象吗?

elz*_*elz 5

看一眼km.cluster_centroids_。这将给出每个簇的每个变量的众数。