>  기사  >  백엔드 개발  >  Python에서 K-평균 클러스터링 알고리즘을 작성하는 방법은 무엇입니까?

Python에서 K-평균 클러스터링 알고리즘을 작성하는 방법은 무엇입니까?

WBOY
WBOY원래의
2023-09-21 11:06:25851검색

Python에서 K-평균 클러스터링 알고리즘을 작성하는 방법은 무엇입니까?

Python에서 K-평균 클러스터링 알고리즘을 작성하는 방법은 무엇입니까?

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-평균 클러스터링 알고리즘을 구현할 수 있습니다. 필요에 따라 클러스터 수 k 및 기타 매개변수를 조정할 수 있습니다. 이 글이 K-평균 클러스터링 알고리즘을 이해하고 구현하는 데 도움이 되기를 바랍니다!

위 내용은 Python에서 K-평균 클러스터링 알고리즘을 작성하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.