ホームページ  >  記事  >  バックエンド開発  >  Python の K-means++ アルゴリズムの詳細な説明

Python の K-means++ アルゴリズムの詳細な説明

PHPz
PHPzオリジナル
2023-06-10 20:25:441770ブラウズ

K 平均法アルゴリズムは、データをさまざまなカテゴリにクラスター化するために使用される一般的な教師なし学習アルゴリズムです。 K 平均法アルゴリズムは、K 平均法アルゴリズムの改良版であり、最初のクラスター中心選択の効率と精度を向上させることを目的としています。この記事では、Python における K 平均法アルゴリズムの原理、コード実装、および応用について詳しく紹介します。

  1. K 平均法アルゴリズムの概要

K 平均法アルゴリズムは反復アルゴリズムです。各反復のプロセスは次のとおりです: 最初に K 個の初期クラスタリング センターをランダムに選択し、次にそれぞれデータ ポイントは、それに最も近い初期クラスター中心のカテゴリに割り当てられ、その後、すべてのクラスターの中心が再計算され、クラスター中心が更新されます。収束条件が満たされるまで上記のプロセスを繰り返します。

K 平均法アルゴリズム プロセス:

  1. データから K 個のデータ ポイントを最初のクラスタリング センターとしてランダムに選択します。
  2. 最も近いクラスター中心を持つクラスターにデータ ポイントを割り当てます。
  3. 各クラスターの中心を再計算します。
  4. 収束条件が満たされるまで (クラスターの中心が変化しなくなる、最大反復回数に達するなど) 2 ~ 3 を繰り返します。
  5. K-means アルゴリズムのステップ

K-means アルゴリズムは K-means アルゴリズムの改良版であり、主に初期クラスタリング センターの選択において最適化されています。 K 平均法アルゴリズムの最初のクラスター中心選択手順は次のとおりです。

  1. データ ポイントを最初のクラスター中心としてランダムに選択します。
  2. 各データ ポイントについて、最も近いクラスター中心からの距離 D(x) を計算します。
  3. データ ポイントを次のクラスタリング センターとしてランダムに選択します。このポイントと既存のクラスタリング センターの間の距離が大きいほど、選択される確率が高くなります:
    a. 各データを計算します。点と既存のクラスター中心間の最近接距離 D(x)^2。
    b. すべての D(x)^2 の合計 Sum(D(x)^2) を計算します。
    c. 既存のクラスター中心までの最近接距離の比率に従って各データ ポイントに重みを付けます。確率は D(x)^2/Sum(D(x)^2) です。
    d. 上記の確率に従ったサンプリングから、次のクラスター中心としてデータ ポイントを選択します。
  4. K 個のクラスター中心が選択されるまでステップ 3 を繰り返します。
  5. Python による K 平均法アルゴリズムの実装

次に、Python を通じて K 平均法アルゴリズムを実装します。

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

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

次に、クラスタリング用のデータ セットを生成します:

n_samples = 1500
random_state = 170
X, y = make_blobs(n_samples=n_samples, random_state=random_state)

次に、sklearn K- の KMeans モジュールを通じてトレーニングします。平均値モデル:

kmeans = KMeans(init="k-means++", n_clusters=3, n_init=10)
kmeans.fit(X)

最後に、クラスタリング結果を視覚化します:

plt.figure(figsize=(12, 12))
h = 0.02
x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = kmeans.predict(np.c_[xx.ravel(), yy.ravel()])
Z = Z.reshape(xx.shape)
plt.imshow(Z, interpolation="nearest",
          extent=(xx.min(), xx.max(), yy.min(), yy.max()),
          cmap=plt.cm.Pastel1, aspect="auto", origin="lower")
plt.scatter(X[:, 0], X[:, 1], s=30, c=kmeans.labels_, cmap=plt.cm.Paired)
plt.scatter(kmeans.cluster_centers_[:, 0], kmeans.cluster_centers_[:, 1],
            marker="^", s=100, linewidths=3,
            color='black', zorder=10)
plt.title("K-means++ clustering")
plt.xlim(x_min, x_max)
plt.ylim(y_min, y_max)
plt.show()
  1. K 平均法アルゴリズムの適用シナリオ

K 平均法アルゴリズム データに適していますラベル情報がない場合のクラスタリングの問題。 K 平均法アルゴリズムと比較して、最初のクラスタリング センターの合理性と一意性を確保するために、K 平均法アルゴリズムは、大量のデータがある場合やデータの分布が比較的分散している状況により適しています。

K 平均法アルゴリズムは、データ マイニング、画像処理、自然言語処理などの分野で使用できます。クラスタリング アルゴリズムを使用すると、類似性の高いサンプルを見つけることができ、ビッグ データの視覚化にも非常に役立ちます。

つまり、K 平均法アルゴリズムには、データ マイニング、クラスター分析、画像認識、自然言語処理などの分野での応用が期待されています。

以上がPython の K-means++ アルゴリズムの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。