K 平均法クラスタリング アルゴリズムを Python で作成するにはどうすればよいですか?
K 平均法クラスタリング アルゴリズムは、属性に従ってデータ セットを分類およびクラスタリングできる、一般的に使用されるデータ マイニングおよび機械学習のアルゴリズムです。この記事では、Python で K 平均法クラスタリング アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。
コードを書き始める前に、K 平均法クラスタリング アルゴリズムの基本原理を理解する必要があります。
K 平均法クラスタリング アルゴリズムの基本手順は次のとおりです。
これで、コードの記述を開始できます。
まず、numpy や matplotlib などの必要なライブラリをインポートする必要があります。
import numpy as np import matplotlib.pyplot as plt
クラスタリング用のデータ セットを準備する必要があります。ここでは、numpy を使用して 2 次元データのセットをランダムに生成します。
data = np.random.randn(100, 2)
クラスタリング アルゴリズムのために k 個の重心を初期化する必要があります。ここでは、numpy を使用して k 個のデータポイントを初期重心としてランダムに選択します。
k = 3 centroids = data[np.random.choice(range(len(data)), k, replace=False)]
データ ポイントと重心の間の距離を計算する関数を定義する必要があります。ここではユークリッド距離を使用します。
def compute_distances(data, centroids): return np.linalg.norm(data[:, np.newaxis] - centroids, axis=2)
各データ ポイントを最も近い重心で表されるカテゴリに割り当てる関数を定義する必要があります。
def assign_clusters(data, centroids): distances = compute_distances(data, centroids) return np.argmin(distances, axis=1)
重心の位置を更新する関数を定義する必要があります。つまり、重心の位置をカテゴリ内のすべてのデータ ポイントの平均に設定します。
def update_centroids(data, clusters, k): centroids = [] for i in range(k): centroids.append(np.mean(data[clusters == i], axis=0)) return np.array(centroids)
最後に、重心の位置が変化しなくなるまでクラスタリング プロセスを反復する必要があります。
def kmeans(data, k, max_iter=100): centroids = data[np.random.choice(range(len(data)), k, replace=False)] for _ in range(max_iter): clusters = assign_clusters(data, centroids) new_centroids = update_centroids(data, clusters, k) if np.all(centroids == new_centroids): break centroids = new_centroids return clusters, centroids
これで、クラスタリング アルゴリズムを実行して、各データ ポイントが属するカテゴリと最終的な重心を取得できるようになります。
clusters, centroids = kmeans(data, k)
最後に、matplotlib を使用して結果を視覚化できます。各データ ポイントは、属するカテゴリに応じて色分けされ、重心の位置は赤い円で示されます。
plt.scatter(data[:, 0], data[:, 1], c=clusters) plt.scatter(centroids[:, 0], centroids[:, 1], s=100, c='red', marker='o') plt.show()
上記のコード例を通じて、Python を使用して K-means クラスタリング アルゴリズムを実装できます。必要に応じて、クラスターの数 k やその他のパラメーターを調整できます。この記事が、K 平均法クラスタリング アルゴリズムの理解と実装に役立つことを願っています。
以上がPython で K 平均法クラスタリング アルゴリズムを記述するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。