찾다
백엔드 개발파이썬 튜토리얼Python의 k-평균 클러스터링 모델에 대한 자세한 설명

Python의 k-평균 클러스터링 모델에 대한 자세한 설명

Jun 10, 2023 am 09:15 AM
pythonk-means클러스터링 모델

Python의 k-평균 클러스터링 모델에 대한 자세한 설명

클러스터 분석은 데이터에서 유사한 개체를 찾는 데 사용되는 방법입니다. 데이터 마이닝, 기계 학습 등의 분야에서는 클러스터 분석이 널리 사용됩니다. k-평균 클러스터링은 가장 일반적인 클러스터링 방법 중 하나입니다. 데이터 세트의 샘플을 k개의 클러스터로 나눌 수 있으며, 각 클러스터의 내부 차이는 가장 작고 클러스터 간의 차이는 가장 큽니다. 이 기사에서는 Python의 k-평균 클러스터링 모델을 자세히 소개합니다.

  1. k-평균 군집화 원리

k-평균 군집화 알고리즘은 반복적인 군집화 방법입니다. 핵심 단계에는 질량 중심 초기화, 거리 계산, 질량 중심 업데이트, 정지 조건 결정 등이 포함됩니다.

먼저 클러스터 수 k를 지정해야 합니다. 그런 다음 k개의 데이터 샘플을 초기 중심으로 무작위로 선택하고 나머지 각 샘플에 대해 가장 가까운 중심을 가진 클러스터에 할당합니다. 다음으로, 각 클러스터의 모든 데이터 포인트와 클러스터 중심으로부터의 거리 제곱의 합을 클러스터의 오차로 계산합니다. 그런 다음 각 클러스터의 중심이 업데이트되어 해당 클러스터에 있는 모든 샘플의 중심으로 이동됩니다. 오류가 특정 임계값보다 작아지거나 반복 횟수의 상한에 도달할 때까지 위 단계를 반복합니다.

  1. Python은 k-평균 클러스터링을 구현합니다

Python에서 sklearn 라이브러리는 k-평균 클러스터링 알고리즘을 사용하는 가장 간단한 방법인 k-평균 클러스터링 기능을 제공합니다. 다음은 붓꽃 데이터 세트를 예로 들어 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" 기호는 각 클러스터의 중심을 나타냅니다.

  1. 최적의 k 값을 선택하는 방법

최적의 k 값을 결정하는 방법은 k-평균 클러스터링 알고리즘에서 가장 어려운 문제 중 하나입니다. 아래에는 두 가지 일반적인 방법, 즉 팔꿈치 방법과 윤곽 계수 방법이 소개되어 있습니다.

엘보우 방법: 먼저 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()

윤곽 계수 방법: 실루엣 계수는 클러스터 내 무관성과 클러스터 간 유사성이라는 두 가지 요소를 결합합니다. 실루엣 계수의 값이 클수록 클러스터링 효과가 좋아집니다. 실루엣 계수 방법의 계산 과정은 다음과 같습니다.

각 샘플에 대해 동일한 클러스터(a라고 함)에 있는 모든 샘플로부터의 평균 거리를 계산하고 가장 가까운 다른 클러스터(b라고 함)에 있는 모든 샘플로부터의 평균 거리를 계산합니다. ).

각 샘플의 실루엣 계수 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()
  1. K는 클러스터링 주의사항을 의미합니다

k는 클러스터링에 다음과 같은 주의사항이 있음을 의미합니다.

초기값이 결과에 더 큰 영향을 미칩니다. 결과가 좋지 않습니다.

클러스터링 결과는 유클리드 거리, 맨해튼 거리 등과 같이 선택한 거리 측정법에 따라 달라집니다. 선택은 실제 상황에 따라 이루어져야 합니다.

데이터 세트의 이상값은 잘못된 클러스터에 쉽게 유인되므로 이상값 제거를 고려해야 합니다.

샘플 클래스 분포가 불균형할 때 일반적인 문제는 속성이 극도로 편향된 클러스터를 얻는 것입니다.

  1. 요약

k-평균 클러스터링은 널리 사용되는 클러스터링 알고리즘입니다. Python에서는 sklearn 라이브러리에서 제공하는 KMeans 함수를 사용하여 빠르게 구현할 수 있으며 동시에 팔꿈치 방법 또는 실루엣 계수 방법을 사용하여 최적의 클러스터 수를 결정할 수도 있습니다. 동시에 적용 중 k 값 선택과 초기 중심 설정에 주의를 기울여야 합니다.

위 내용은 Python의 k-평균 클러스터링 모델에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
파이썬 어레이에 어떤 데이터 유형을 저장할 수 있습니까?파이썬 어레이에 어떤 데이터 유형을 저장할 수 있습니까?Apr 27, 2025 am 12:11 AM

PythonlistsCanstoreAnyDatAtype, ArrayModuLearRaysStoreOneType 및 NUMPYARRAYSAREFORNUMERICALPUTATION.1) LISTSAREVERSATILEBUTLESSMEMORY-EFFICENT.2) ARRAYMODUERRAYRAYRAYSARRYSARESARESARESARESARESARESAREDOREDORY-UNFICEDONOUNEOUSDATA.3) NumpyArraysUraysOrcepperperperperperperperperperperperperperperperferperferperferferpercient

파이썬 어레이에 잘못된 데이터 유형의 값을 저장하려고하면 어떻게됩니까?파이썬 어레이에 잘못된 데이터 유형의 값을 저장하려고하면 어떻게됩니까?Apr 27, 2025 am 12:10 AM

whenyouattempttoreavalueofthewrongdatatypeinapythonaphonarray, thisiSdueTotheArrayModule의 stricttyPeenforcement, theAllElementStobeofthesAmetypecified bythetypecode.forperformancersassion, arraysaremoreficats the thraysaremoreficats thetheperfication the thraysaremorefications는

Python Standard Library의 일부는 무엇입니까? 목록 또는 배열은 무엇입니까?Python Standard Library의 일부는 무엇입니까? 목록 또는 배열은 무엇입니까?Apr 27, 2025 am 12:03 AM

Pythonlistsarepartoftsandardlardlibrary, whileraysarenot.listsarebuilt-in, 다재다능하고, 수집 할 수있는 반면, arraysarreprovidedByTearRaymoduledlesscommonlyusedDuetolimitedFunctionality.

스크립트가 잘못된 파이썬 버전으로 실행되는지 확인해야합니까?스크립트가 잘못된 파이썬 버전으로 실행되는지 확인해야합니까?Apr 27, 2025 am 12:01 AM

thescriptIsrunningwithHongpyThonversionDueCorRectDefaultTerpretersEttings.tofixThis : 1) checktheDefaultPyThonVersionUsingPyThon-VersionorPyThon3- version.2) usvirtual-ErondmentsBythePython.9-Mvenvmyenv, 활성화, 및 파괴

파이썬 어레이에서 수행 할 수있는 일반적인 작업은 무엇입니까?파이썬 어레이에서 수행 할 수있는 일반적인 작업은 무엇입니까?Apr 26, 2025 am 12:22 AM

PythonArraysSupportVariousOperations : 1) SlicingExtractsSubsets, 2) 추가/확장 어드먼트, 3) 삽입 값 삽입 ATSpecificPositions, 4) retingdeletesElements, 5) 분류/ReversingChangesOrder 및 6) ListsompectionScreateNewListSbasedOnsistin

어떤 유형의 응용 프로그램에서 Numpy Array가 일반적으로 사용됩니까?어떤 유형의 응용 프로그램에서 Numpy Array가 일반적으로 사용됩니까?Apr 26, 2025 am 12:13 AM

NumpyArraysareSentialplosplicationSefficationSefficientNumericalcomputationsanddatamanipulation. Theyarcrucialindatascience, MachineLearning, Physics, Engineering 및 Financeduetotheiribility에 대한 handlarge-scaledataefficivally. forexample, Infinancialanyaly

파이썬의 목록 위의 배열을 언제 사용 하시겠습니까?파이썬의 목록 위의 배열을 언제 사용 하시겠습니까?Apr 26, 2025 am 12:12 AM

UseanArray.ArrayOveralistInpyThonWhendealingwithhomogeneousData, Performance-CriticalCode, OrinterFacingwithCcode.1) HomogeneousData : ArraysSaveMemorywithtypepletement.2) Performance-CriticalCode : arraysofferbetterporcomanceFornumericalOperations.3) Interf

모든 목록 작업은 배열에 의해 지원됩니까? 왜 또는 왜 그렇지 않습니까?모든 목록 작업은 배열에 의해 지원됩니까? 왜 또는 왜 그렇지 않습니까?Apr 26, 2025 am 12:05 AM

아니요, NOTALLLISTOPERATIONARESUPPORTEDBYARRARES, andVICEVERSA.1) ArraySDONOTSUPPORTDYNAMICOPERATIONSLIKEPENDORINSERTWITHUTRESIGING, WHITHIMPACTSPERFORMANCE.2) ListSDONOTEECONSTANTTIMECOMPLEXITEFORDITITICCESSLIKEARRAYSDO.

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 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

Dreamweaver Mac版

Dreamweaver Mac版

시각적 웹 개발 도구

SublimeText3 영어 버전

SublimeText3 영어 버전

권장 사항: Win 버전, 코드 프롬프트 지원!