Python의 클러스터 분석 예

王林
풀어 주다: 2023-06-10 12:30:07
원래의
3052명이 탐색했습니다.

클러스터 분석은 데이터 세트를 여러 그룹이나 범주로 나눌 수 있는 일반적인 데이터 분석 방법입니다. Python은 다양한 클러스터링 알고리즘을 제공하며 다양한 요구에 따라 분석을 위해 다양한 알고리즘을 선택할 수 있습니다. 이 기사에서는 Python에서 일반적으로 사용되는 클러스터링 알고리즘을 소개하고 예제 응용 프로그램을 제공합니다.

1. K-평균 알고리즘

K-평균 알고리즘은 유클리드 거리를 기준으로 데이터를 그룹화하는 일반적으로 사용되는 클러스터링 알고리즘입니다. 이 알고리즘은 데이터 세트를 k개의 클러스터로 나눕니다. 여기서 각 클러스터의 중심점은 클러스터의 모든 구성원의 평균입니다. 알고리즘의 구체적인 단계는 다음과 같습니다.

  1. k개 점을 초기 군집 중심으로 무작위로 선택합니다.
  2. 클러스터 중심에서 모든 데이터 포인트의 거리를 계산하고 각 데이터 포인트를 가장 가까운 클러스터로 분류합니다.
  3. 새로운 분류 결과를 기반으로 각 클러스터의 중심점을 다시 계산합니다.
  4. 클러스터가 더 이상 변경되지 않거나 지정된 반복 횟수에 도달할 때까지 2단계와 3단계를 반복합니다.

다음은 K-Means 알고리즘을 사용한 클러스터 분석의 Python 예입니다.

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

# 生成随机数据
X, y = make_blobs(n_samples=300, centers=4, random_state=42)

# 运行 K-Means 算法
kmeans = KMeans(n_clusters=4, random_state=42)
y_pred = kmeans.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("K-Means Clustering")
plt.show()
로그인 후 복사

위 코드에서 make_blobs 함수는 총 4개의 클러스터를 포함하는 300개의 샘플 포인트가 포함된 데이터 세트를 생성하는 데 사용됩니다. 그런 다음 KMeans 함수를 사용하여 클러스터링을 수행하고 클러스터 수를 4로 지정하고 fit_predict 메소드를 통해 각 데이터 포인트의 분류 결과를 얻습니다. 마지막으로 Matplotlib를 사용하여 클러스터링 결과를 플로팅합니다.

2. 계층적 클러스터링 알고리즘

계층적 클러스터링 알고리즘은 데이터의 유사성을 기반으로 데이터를 점차적으로 더 큰 클러스터로 병합하는 상향식 클러스터링 알고리즘입니다. 이 알고리즘의 구체적인 단계는 다음과 같습니다.

  1. 각 데이터 포인트를 별도의 클러스터로 처리합니다.
  2. 가장 가까운 두 클러스터 사이의 거리를 계산하세요.
  3. 가장 가까운 두 클러스터를 새 클러스터로 병합합니다.
  4. 모든 클러스터가 하나의 클러스터로 병합되거나 지정된 클러스터 수에 도달할 때까지 2단계와 3단계를 반복합니다.

다음은 군집 분석을 위해 계층적 군집화 알고리즘을 사용하는 Python 예제입니다.

from sklearn.cluster import AgglomerativeClustering
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

# 生成随机数据
X, y = make_moons(n_samples=200, noise=0.05, random_state=42)

# 运行层次聚类算法
agglomerative = AgglomerativeClustering(n_clusters=2)
y_pred = agglomerative.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("Agglomerative Clustering")
plt.show()
로그인 후 복사

위 코드에서 make_moons 함수는 200개의 샘플 포인트가 포함된 데이터 세트를 생성하는 데 사용되며, AgglomerativeClustering 함수는 군집화에 사용됩니다. 지정하는 클러스터 수는 2입니다. 마지막으로 Matplotlib를 사용하여 클러스터링 결과를 플로팅합니다.

3. DBSCAN 알고리즘

DBSCAN 알고리즘은 데이터 세트의 밀도에 따라 데이터 포인트를 여러 클러스터로 나눌 수 있는 밀도 기반 클러스터링 알고리즘입니다. 알고리즘의 구체적인 단계는 다음과 같습니다.

  1. 방문하지 않은 데이터 포인트를 무작위로 핵심 포인트로 선택합니다.
  2. 핵점으로부터의 거리가 주어진 반경을 초과하지 않는 모든 점을 핵심점을 중심으로 한 밀도 도달 가능 영역으로 찾습니다.
  3. 포인트가 다른 코어 포인트의 밀도 도달 가능 영역 내에 있는 경우 해당 포인트와 코어 포인트를 하나의 클러스터로 병합합니다.
  4. 새로운 핵심 지점을 방문하지 않을 때까지 1~3단계를 반복합니다.

다음은 클러스터 분석을 위해 DBSCAN 알고리즘을 사용하는 Python 예제입니다.

from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
import matplotlib.pyplot as plt

# 生成随机数据
X, y = make_moons(n_samples=200, noise=0.05, random_state=42)

# 运行 DBSCAN 算法
dbscan = DBSCAN(eps=0.2, min_samples=5)
y_pred = dbscan.fit_predict(X)

# 绘制聚类结果
plt.scatter(X[:, 0], X[:, 1], c=y_pred)
plt.title("DBSCAN Clustering")
plt.show()
로그인 후 복사

위 코드에서 make_moons 함수는 200개의 샘플 포인트가 포함된 데이터 세트를 생성하는 데 사용되며, DBSCAN 함수는 클러스터링에 사용됩니다. 반경과 최소 샘플 수를 지정합니다. 마지막으로 Matplotlib를 사용하여 클러스터링 결과를 플로팅합니다.

요약

이 문서에서는 Python에서 일반적으로 사용되는 세 가지 클러스터링 알고리즘을 소개하고 해당 예제 응용 프로그램을 제공합니다. 클러스터링 알고리즘은 데이터에 숨겨진 패턴과 관계를 발견하는 데 도움이 되는 매우 유용한 데이터 분석 방법입니다. 실제 적용에서는 데이터의 특성과 요구 사항에 따라 다양한 분석 알고리즘을 선택할 수 있습니다.

위 내용은 Python의 클러스터 분석 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿