検索
ホームページバックエンド開発Python チュートリアルPython の K-means クラスタリング モデルの詳細な説明

Python の K-means クラスタリング モデルの詳細な説明

Jun 10, 2023 am 09:15 AM
pythonk-meansクラスタリングモデル

Python の K-means クラスタリング モデルの詳細説明

クラスター分析は、データ内の類似したオブジェクトを発見するために使用される手法です。データマイニングや機械学習などの分野では、クラスター分析が広く使用されています。 K-means クラスタリングは、より一般的なクラスタリング手法の 1 つです。データセット内のサンプルを k 個のクラスターに分割し、各クラスター内の内部差分が最小となり、クラスター間差分が最大になります。この記事では、Python の K-means クラスタリング モデルについて詳しく紹介します。

  1. k-means クラスタリングの原理

k-means クラスタリング アルゴリズムは、反復クラスタリング手法です。その中心となるステップには、重心の初期化、距離の計算、重心の更新、停止条件の決定などが含まれます。

まず、クラスター数 k を指定する必要があります。次に、k 個のデータ サンプルが初期重心としてランダムに選択され、残りの各サンプルについて、最も近い重心を持つクラスターに割り当てられます。次に、各クラスター内のすべてのデータ点のクラスターの重心からの距離の二乗の合計がクラスターの誤差として計算されます。次に、各クラスターの重心が更新され、そのクラスター内のすべてのサンプルの中心に移動します。誤差が特定のしきい値未満になるか、反復回数の上限に達するまで、上記の手順を繰り返します。

  1. Python は k-means クラスタリングを実装します

Python では、sklearn ライブラリが k-means クラスタリング関数を提供します。これは、k-means クラスタリングを使用する最も簡単な方法です。アルゴリズム、メソッド。以下では、例として虹彩データ セットを取り上げ、Python を使用して K 平均法クラスタリングを実装する方法を示します。

from sklearn.cluster import KMeans
from sklearn.datasets import load_iris

iris = load_iris()
X = iris.data[:, :2]  # 为了便于可视化,只取前两个特征
y = iris.target

kmeans = KMeans(n_clusters=3)  # 聚成3类
kmeans.fit(X)

centroids = kmeans.cluster_centers_  # 质心
labels = kmeans.labels_  # 样本分类

# 绘制图形
import matplotlib.pyplot as plt

colors = ['red', 'green', 'blue']
for i in range(len(X)):
    plt.scatter(X[i][0], X[i][1], c=colors[labels[i]])
    
for c in centroids:
    plt.scatter(c[0], c[1], marker='x', s=300, linewidths=3, color='black')
    
plt.show()

上記のコードを実行して、次のような画像を生成します。画像、赤、緑、青 色の点はさまざまなクラスターを表し、黒い「x」記号は各クラスターの重心を表します。

最適な k 値を選択する方法
  1. 最適な k 値を決定する方法は、k-means クラスタリング アルゴリズムにおける最も難しい問題の 1 つです。以下に、エルボ法と輪郭係数法という 2 つの一般的な方法を紹介します。

エルボ法: まず、k 値をより小さい整数に設定し、各クラスターの二乗誤差の合計 (SSE) を計算します。 k の値が増加すると、二乗誤差の合計は減少します。 k 値が一定レベルまで増加すると、SSE は大幅に低下しなくなります。このとき、k 値と SSE の関係は曲線グラフに描かれますが、この曲線はエルボの線分を表す必要があります。この線分は「エルボ」の位置にあり、対応する k 値が最適なクラスター数になります。 。

コード例:

sse = []
for i in range(1, 11):
    kmeans = KMeans(n_clusters=i).fit(X)
    sse.append(kmeans.inertia_)  # ineria_属性表示模型的误差平方和
 
plt.plot(range(1, 11), sse)
plt.xlabel('K')
plt.ylabel('SSE')
plt.show()

シルエット係数法: シルエット係数は、クラスター内の無関連性とクラスター間の類似性の 2 つの要素を組み合わせます。シルエット係数の値が大きいほど、クラスタリング効果が高くなります。シルエット係数法の計算プロセスは次のとおりです。

各サンプルについて、同じクラスター (a と呼ばれる) 内のすべてのサンプルからの平均距離を計算し、最も近い他のクラスター内のすべてのサンプルからの平均距離を計算します。クラスター (b に対して a) と呼ばれます)。

各サンプルのシルエット係数 s、$s = rac {b-a} {max(a, b)}$ を計算します。モデル全体のシルエット係数は、すべてのサンプルのシルエット係数の平均です。

コード例:

from sklearn.metrics import silhouette_score

sil_scores = []
for k in range(2, 11):
    kmeans = KMeans(n_clusters=k).fit(X)
    sil_score = silhouette_score(X, kmeans.labels_)  # 计算轮廓系数
    sil_scores.append(sil_score)
    
plt.plot(range(2, 11), sil_scores)
plt.xlabel('K')
plt.ylabel('Silhouette Coefficient')
plt.show()

k-means クラスタリングの考慮事項
  1. k-means クラスタリングには次の考慮事項があります。

最初の値が結果に大きく影響するため、初期値が適切でない場合、悪い結果が得られる可能性があります。

クラスタリングの結果は、ユークリッド距離、マンハッタン距離など、選択した距離メトリックによって異なります。実際の状況に応じて選択する必要があります。

データセット内の外れ値は間違ったクラスターに引き寄せられやすいため、外れ値の削除を検討する必要があります。

サンプル クラスの分布がアンバランスな場合、よくある問題は、極端に偏った属性を持つクラスターが得られることです。

概要
  1. k 平均法クラスタリングは、広く使用されているクラスタリング アルゴリズムです。 Pythonではsklearnライブラリが提供するKMeans関数を利用することで迅速に実装できるほか、エルボー法やシルエット係数法などを利用して最適なクラスタ数を決定することもできます。同時に、k 値の選択と適用時の初期重心の設定に注意を払う必要があります。

以上がPython の K-means クラスタリング モデルの詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Pythonアレイで実行できる一般的な操作は何ですか?Pythonアレイで実行できる一般的な操作は何ですか?Apr 26, 2025 am 12:22 AM

PythonArraysSupportVariousoperations:1)SlicingExtractsSubsets、2)Appending/ExtendingAdddesements、3)inSertingSelementSatspecificpositions、4)remvingingDeletesements、5)sorting/verversingsorder、and6)listenionsionsionsionsionscreatenewlistsebasedexistin

一般的に使用されているnumpy配列はどのようなアプリケーションにありますか?一般的に使用されているnumpy配列はどのようなアプリケーションにありますか?Apr 26, 2025 am 12:13 AM

numpyarraysAressertialentionsionceivationsefirication-efficientnumericalcomputations andDatamanipulation.theyarecrucialindatascience、mashineelearning、物理学、エンジニアリング、および促進可能性への適用性、scaledatiencyを効率的に、forexample、infinancialanalyyy

Pythonのリスト上の配列を使用するのはいつですか?Pythonのリスト上の配列を使用するのはいつですか?Apr 26, 2025 am 12:12 AM

UseanArray.ArrayOverAlistinPythonは、Performance-criticalCode.1)homogeneousdata:araysavememorywithpedelements.2)Performance-criticalcode:Araysofterbetterbetterfornumerumerumericaleperations.3)interf

すべてのリスト操作は配列でサポートされていますか?なぜまたはなぜですか?すべてのリスト操作は配列でサポートされていますか?なぜまたはなぜですか?Apr 26, 2025 am 12:05 AM

いいえ、notallistoperationSaresuptedbyarrays、andviceversa.1)arraysdonotsupportdynamicoperationslikeappendorintorintorinsertizizing、whosimpactsporformance.2)リスト

Pythonリストの要素にどのようにアクセスしますか?Pythonリストの要素にどのようにアクセスしますか?Apr 26, 2025 am 12:03 AM

toaccesselementsinapythonlist、useindexing、negativeindexing、slicing、oriteration.1)indexingstartsat0.2)negativeindexingAcsesess.3)slicingextractStions.4)reterationSuseSuseSuseSuseSeSeS forLoopseCheckLentlentlentlentlentlentlenttodExeror。

Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Pythonを使用した科学コンピューティングでアレイはどのように使用されていますか?Apr 25, 2025 am 12:28 AM

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

同じシステムで異なるPythonバージョンをどのように処理しますか?同じシステムで異なるPythonバージョンをどのように処理しますか?Apr 25, 2025 am 12:24 AM

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?標準のPythonアレイでnumpyアレイを使用することの利点は何ですか?Apr 25, 2025 am 12:21 AM

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター