クラスタリング scikit-learn

クラスタリング

クラスタリング問題の一例として、顧客セグメンテーションを考えてみましょう。

この問題では、顧客の購買行動や属性に基づいて、顧客を異なるグループに分けることを目指します。

ここでは、年齢年間購入額の2つの特徴を持つ顧客データを考えてみます。


まず、必要なライブラリをインポートします。

1
2
3
import matplotlib.pyplot as pltfrom
sklearn.cluster import KMeans
import numpy as np

次に、仮想的な顧客データを作成します。

1
2
3
4
5
# 仮想的な顧客データを作成
np.random.seed(0)
age = np.random.normal(loc=40, scale=10, size=100)
annual_amount = np.random.normal(loc=50000, scale=15000, size=100)
X = np.column_stack((age, annual_amount))

このデータをKMeansクラスタリングを用いて分析します。

1
2
# KMeansクラスタリング
kmeans = KMeans(n_clusters=3, random_state=0).fit(X)

最後に、結果をプロットします。

1
2
3
4
5
6
# クラスタリング結果をプロット
plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red')
plt.xlabel('Age')
plt.ylabel('Annual Amount')
plt.show()

このコードは、年齢と年間購入額に基づいて顧客を3つのクラスタに分けます。

そして、各クラスタの中心点を赤で表示します。これにより、顧客の購買行動のパターンを視覚的に理解することができます。

[実行結果]

このコードは仮想的なデータを使用していますので、実際の問題に適用する際には、適切なデータの前処理やパラメータの調整が必要になることに注意してください。

解説

ソースコードの内容を解説します。

1. 必要なライブラリのインポート:
  • matplotlib.pyplot: データの可視化のためのライブラリ
  • sklearn.cluster.KMeans: K-meansクラスタリングアルゴリズムの実装
2. 仮想的な顧客データの作成:
  • age: 年齢データを平均40、標準偏差10の正規分布からランダムに生成
  • annual_amount: 年間支出データを平均50000、標準偏差15000の正規分布からランダムに生成
  • X: 年齢と年間支出を結合して特徴行列を作成
3. K-meansクラスタリングの実行:
  • KMeans(n_clusters=3, random_state=0): クラスタ数を3に設定し、ランダムシードを0に設定してKMeansオブジェクトを作成
  • fit(X): 特徴行列Xに対してクラスタリングを実行し、各サンプルのクラスタラベルを割り当てる
4. クラスタリング結果のプロット:
  • plt.scatter(X[:, 0], X[:, 1], c=kmeans.labels_): 年齢をx軸、年間支出をy軸にし、各データポイントをクラスタラベルに基づいて散布図としてプロット
  • plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1], s=300, c='red'): クラスタの中心点を赤い色でプロット
  • plt.xlabel('Age')plt.ylabel('Annual Amount'): x軸とy軸のラベルを設定
  • plt.show(): グラフの表示

このコードは、仮想的な顧客データをK-meansクラスタリングアルゴリズムを使ってクラスタリングし、その結果を散布図として可視化します。

クラスタ数は3と設定されており、年齢と年間支出の2つの特徴量をもとに顧客をクラスタリングします。

クラスタリングの結果、各データポイントが所属するクラスタと、クラスタの中心点がプロットされます。