Skip to content

Instantly share code, notes, and snippets.

@hdknr
Last active November 17, 2024 05:27
Show Gist options
  • Save hdknr/1da1dbd01b483ba621403aeead42c112 to your computer and use it in GitHub Desktop.
Save hdknr/1da1dbd01b483ba621403aeead42c112 to your computer and use it in GitHub Desktop.
クラスタリング

クラスタリング

手法

ユーザーを属性に基づいてクラスタリングするためには、いくつかの手法があります。以下に代表的なものを紹介します:

  1. K-meansクラスタリング:

    • ユーザーを事前に決めた数のクラスタに分ける手法です。各クラスタの中心(セントロイド)を計算し、ユーザーを最も近いクラスタに割り当てます。
  2. 階層的クラスタリング:

    • ユーザーを階層的にクラスタリングする手法です。デンドログラムと呼ばれる木構造を作成し、ユーザーを段階的にクラスタに分けます。
  3. DBSCAN(Density-Based Spatial Clustering of Applications with Noise):

    • 密度に基づくクラスタリング手法で、データの密度が高い部分をクラスタとして識別します。ノイズや外れ値を扱うのに適しています。
  4. Gaussian Mixture Models(GMM):

    • データが複数のガウス分布から生成されていると仮定し、各クラスタをガウス分布としてモデル化します。クラスタの形状が楕円形の場合に有効です。
  5. 主成分分析(PCA):

    • 次元削減の手法ですが、クラスタリングの前処理として使用されることが多いです。データの重要な特徴を抽出し、クラスタリングの精度を向上させます。

これらの手法を使うことで、ユーザーを効果的にクラスタリングし、属性に基づいた分析やマーケティング戦略の立案が可能になります。どの手法が最適かは、データの特性や目的によって異なるため、いくつかの手法を試してみると良いでしょう。

どの手法について詳しく知りたいですか?または、具体的なデータの例があれば教えてください。

DBSCAN

以下に、Pythonを使ってDBSCANでデータをクラスタリングするサンプルコードを示します。この例では、scikit-learnライブラリを使用しています。

import numpy as np
from sklearn.cluster import DBSCAN
from sklearn.datasets import make_blobs
import matplotlib.pyplot as plt

# サンプルデータの生成
X, _ = make_blobs(n_samples=300, centers=4, cluster_std=0.60, random_state=0)

# DBSCANの実行
dbscan = DBSCAN(eps=0.3, min_samples=5)
clusters = dbscan.fit_predict(X)

# クラスタリング結果のプロット
plt.scatter(X[:, 0], X[:, 1], c=clusters, cmap='viridis')
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')
plt.title('DBSCAN Clustering')
plt.show()

このコードでは、以下の手順を踏んでいます:

  1. データの生成: make_blobs関数を使って、クラスタリング用のサンプルデータを生成します。
  2. DBSCANの実行: DBSCANクラスを使って、データをクラスタリングします。epsは近傍の半径、min_samplesはクラスタを形成するための最小サンプル数です。
  3. 結果のプロット: matplotlibを使って、クラスタリング結果を2次元プロットします。

資料

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment