K-Meansによるショッピングモール顧客セグメンテーション

AI/ML

概要

本リポジトリ「SCT_ML_02」は、ショッピングモールの顧客データを対象に、K-Meansクラスタリングを用いて顧客のセグメンテーションを行うPythonプロジェクトです。データセットは「Mall_Customers.csv」で、顧客の「年収(k$)」と「消費スコア(1~100)」の2つの特徴量を入力として利用します。クラスタ数の最適化にはElbow法とSilhouette分析を用い、クラスタリング結果はクラスタラベルの付与、各クラスタの平均値や件数のプロファイル出力、さらに可視化プロット(エルボー図、シルエットプロット、散布図+重心)として提供されます。これにより、マーケティング戦略や顧客理解のための基盤を提供します。

GitHub

リポジトリの統計情報

  • スター数: 11
  • フォーク数: 0
  • ウォッチャー数: 11
  • コミット数: 3
  • ファイル数: 4
  • メインの言語: Python

主な特徴

  • 年収と消費スコアの2特徴量に基づく顧客クラスタリング
  • Elbow法とSilhouette法による最適クラスタ数の評価機能
  • クラスタごとの平均値やデータ数をまとめたプロファイル出力
  • クラスタリング結果の可視化(散布図、エルボー図、シルエットプロット)

技術的なポイント

このプロジェクトは、Pythonの機械学習ライブラリ(主にscikit-learn)を用いて、K-Meansクラスタリングを実装しています。特徴量として「年収(Annual Income)」と「消費スコア(Spending Score)」の2つを選択し、これらのスケーリング(標準化や正規化)を行うことで、スケールの異なるデータの影響を抑制しています。

クラスタ数kの選定には、Elbow法とSilhouette分析の2つの評価指標を用いています。Elbow法は、kを増やすことでクラスタ内誤差平方和(Within-Cluster Sum of Squares: WCSS)が減少する様子をプロットし、減少の度合いが鈍化する「肘」の位置を探索します。一方、Silhouette分析はクラスタの凝集度と分離度を定量化し、1に近いほど適切なクラスタリングであることを示します。これらの指標を組み合わせることで、安定的かつ意味のあるクラスタ数を決定可能です。

クラスタリング後は、各クラスタに属する顧客の平均年収や平均消費スコアを集計し、クラスタプロファイルとして出力します。これにより、各セグメントの特徴を理解しやすくし、例えば「高収入かつ高消費スコアの顧客群」や「低収入かつ低消費スコアの顧客群」など具体的なマーケティング戦略の立案に役立ちます。

さらに、結果の可視化にも力を入れており、Elbow法のグラフ、Silhouetteプロット、そして2次元散布図上にクラスタの重心を示す図を生成します。これらの図は、クラスタリングの妥当性や各クラスタの分布イメージを直感的に把握可能にします。

コードはシンプルで実行しやすく、機械学習の基礎的な流れ(前処理→モデル学習→評価→可視化)を踏襲しているため、初心者の学習用途にも適しています。加えてREADMEにはプロジェクトの目的や使い方が明記されており、インターンシッププログラムのタスクの一環として開発されたことも記されています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • LICENSE: ライセンス情報
  • Mall_Customers.csv: 顧客データセット(年収・消費スコアなどの情報を含む)
  • README.md: プロジェクトの概要や使い方の説明
  • task2.py: メインのPythonスクリプト。データの読み込み、前処理、K-Meansクラスタリング、評価、可視化を実装

まとめ

シンプルながら実践的なK-Meansクラスタリングで顧客セグメンテーションを学べる優良リポジトリ。

リポジトリ情報: