回答編集履歴

1 文法修正

magichan

magichan score 13515

2017/09/15 12:34  投稿

簡単に実装するなら
```Python
colors = ['red','blue','yellow','pink','green']
```
のように色のリストを作成して
```Python
# 可視化(散布図)
for i in range(N_CLUSTERS):
   labels = features[pred == i]
   plt.scatter(labels[:, 0], labels[:, 1], c=colors[i])
```
のように散布図の描写毎に違う色を指定するとよいと思います
更に説明すると
```Python
from matplotlib.colors import ListedColormap
colors = ['red','blue','yellow','pink','green']
cmap = ListedColormap(colors)
```
```Python
# 可視化(散布図)
plt.scatter(features[:, 0], features[:, 1], c=pred, cmap=cmap)
```
のようにループを使わずに1行で ``c`` にクラスタ番号を指定するだけで書けるようになります。
これは重心の描写でも
```Python
# クラスタのセントロイド (重心) を描く
centers = cls.cluster_centers_
plt.scatter(centers[:, 0], centers[:, 1], s=80, marker='p', edgecolor='k', c=range(N_CLUSTERS), cmap=cmap)
```
のように使うことができるかと思います。
あと完全に補足ですが
```Python
cust_array = np.array([cust_df['Fresh'].tolist(),
                      cust_df['Milk'].tolist(),
                      cust_df['Grocery'].tolist(),
                      cust_df['Frozen'].tolist(),
                      cust_df['Detergents_Paper'].tolist(),
                      cust_df['Delicassen'].tolist()
                      ], np.int32)
```
の部分は
```Python
# DataFrameからNumpy配列を作成
cust_array = cust_df.as_matrix().T
```
と書けますね

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る