본문으로 건너뛰기

SciPy를 사용하여 클러스터링 및 분류하는 방법

SciPy를 사용하여 클러스터링 및 분류를 수행하는 단계별 자습서입니다.

클러스터링 및 분류 소개

클러스터링과 분류는 머신러닝에서 사용되는 두 가지 일반적인 기술로, 유사한 데이터 포인트를 그룹화하고 예측하는 데 사용됩니다. 클러스터링은 데이터 포인트의 유사성을 기반으로 데이터 세트를 그룹이나 클러스터로 분할하는 것을 의미하며, 분류는 특징에 따라 데이터 포인트에 레이블이나 범주를 할당하는 것을 의미합니다.

단계 1: 필요한 라이브러리 가져오기

SciPy를 사용하여 클러스터링 및 분류를 수행하기 위해 필요한 라이브러리를 가져와야 합니다. 주로 사용할 라이브러리는 numpy, scipy, sklearn입니다.

import numpy as np
from scipy.cluster import hierarchy
from scipy.spatial import distance
from sklearn.cluster import KMeans
from sklearn.datasets import make_blobs
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier

단계 2: 데이터 생성

클러스터링 및 분류를 설명하기 위해 sklearn.datasetsmake_blobs 함수를 사용하여 샘플 데이터 세트를 생성해 보겠습니다. 이 함수는 지정된 수의 클러스터를 생성하고 각 클러스터마다 지정된 수의 데이터 포인트를 생성합니다.

# 샘플 데이터 생성
X, y = make_blobs(n_samples=100, centers=3, random_state=0)

단계 3: 병합 계층적 클러스터링으로 클러스터링 수행

병합 계층적 클러스터링은 유사한 클러스터를 재귀적으로 병합하여 정지 기준이 충족될 때까지 클러스터링하는 인기있는 클러스터링 방법입니다. scipy.cluster.hierarchylinkagedendrogram 함수를 사용하여 병합 계층적 클러스터링을 수행할 수 있습니다.

# 페어와이즈 거리 행렬 계산
dist_matrix = distance.pdist(X)

# 병합 계층적 클러스터링 수행
linkage_matrix = hierarchy.linkage(dist_matrix, method='complete')

# 덴드로그램 그리기
dendrogram = hierarchy.dendrogram(linkage_matrix)

단계 4: K-Means 클러스터링

K-Means 클러스터링은 데이터를 지정된 수의 클러스터로 분할하는 또 다른 인기있는 클러스터링 알고리즘입니다. sklearn.clusterKMeans 클래스를 사용하여 K-Means 클러스터링을 수행할 수 있습니다.

# K-Means 클러스터링 수행
kmeans = KMeans(n_clusters=3, random_state=0)
labels = kmeans.fit_predict(X)

# 클러스터 플롯
plt.scatter(X[:, 0], X[:, 1], c=labels)

단계 5: K-최근접 이웃을 사용한 데이터 분류

K-최근접 이웃(KNN)은 가장 가까운 이웃들의 과반수 투표에 기반하여 데이터 포인트에 레이블을 할당하는 간단한 분류 알고리즘입니다. sklearn.neighborsKNeighborsClassifier 클래스를 사용하여 KNN 분류를 수행할 수 있습니다.

# 데이터를 훈련 및 테스트 세트로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0)

# KNN 분류 수행
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 테스트 세트에서 예측하기
y_pred = knn.predict(X_test)

결론

이 자습서에서는 SciPy를 사용하여 클러스터링 및 분류를 수행하는 방법을 배웠습니다. 병합 계층적 클러스터링, K-Means 클러스터링 및 K-최근접 이웃 분류에 대해 다루었습니다. 이러한 기술은 다양한 머신러닝 응용 프로그램에서 널리 사용되며 다양한 데이터 세트에 적용할 수 있습니다.