ホームページ > バックエンド開発 > Python チュートリアル > Python で K 平均法クラスタリング アルゴリズムを記述するにはどうすればよいですか?

Python で K 平均法クラスタリング アルゴリズムを記述するにはどうすればよいですか?

WBOY
リリース: 2023-09-21 11:06:25
オリジナル
926 人が閲覧しました

Python で K 平均法クラスタリング アルゴリズムを記述するにはどうすればよいですか?

K 平均法クラスタリング アルゴリズムを Python で作成するにはどうすればよいですか?

K 平均法クラスタリング アルゴリズムは、属性に従ってデータ セットを分類およびクラスタリングできる、一般的に使用されるデータ マイニングおよび機械学習のアルゴリズムです。この記事では、Python で K 平均法クラスタリング アルゴリズムを作成する方法を紹介し、具体的なコード例を示します。

コードを書き始める前に、K 平均法クラスタリング アルゴリズムの基本原理を理解する必要があります。

K 平均法クラスタリング アルゴリズムの基本手順は次のとおりです。

  1. k 重心を初期化します。重心はクラスターの中心点を指し、各データ ポイントは最も近い重心によって表されるカテゴリに割り当てられます。
  2. 各データ ポイントを、重心からの距離に基づいて、最も近い重心によって表されるカテゴリに割り当てます。
  3. 重心の位置を更新し、そのカテゴリ内のすべてのデータ ポイントの平均に設定します。
  4. 重心の位置が変化しなくなるまで、手順 2 と 3 を繰り返します。

これで、コードの記述を開始できます。

必要なライブラリをインポートする

まず、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート