1 분 소요

군집 알고리즘

1. 타깃을 모르는 비지도 학습

비지도 학습은 주어진 데이터에 대해 명시적인 타깃 레이블이 없는 상태에서 유용한 정보를 추출하는 머신러닝 기법입니다. 데이터의 구조나 패턴을 자동으로 인식하여 유사한 데이터물은 하나의 그룹(클러스터)으로 묶는 것이 일반적인 접근 방식입니다. 이러한 접근은 데이터의 숨겨진 특성이나 구조를 이해하는데 도움을 줍니다.

2. 과일 사진 데이터 준비하기

과일 사진 데이터를 사용하여 군집화를 실습하는 경우, 데이터 준비 과정은 다음과 같습니다:

  1. 데이터 수집: 다양한 종류의 과일 사진을 수집합니다. 이때, 각 과일의 이미지는 다양한 각도와 배경에서 촬영되어야 합니다.
  2. 이미지 전처리: 이미지 크기 조정, 색상 정규화, 필요한 경우 배경 제거 등의 전처리 작업을 수행합니다. 이는 알고리즘의 성능에 크게 영향을 미칠 수 있습니다.
  3. 데이터 세트 구성: 전처리된 이미지를 데이터 세트로 구성하여 알고리즘에 입력할 준비를 합니다.
# 과일 데이터셋 다운로드
!wget https://bit.ly/fruits_300_data -O fruits_300.npy

# 데이터셋 로드
fruits = np.load('fruits_300.npy')

import matplotlib.pyplot as plt

# 첫 번째 과일 이미지를 흑백으로 시각화
plt.imshow(fruits[0], cmap='gray')
plt.show()

3. 픽셀값 분석하기

과일 사진의 픽셀 값을 분석하는 과정은 다음과 같습니다:

  1. 픽셀 데이터 추출: 각 이미지에서 RGB 픽셀 값을 추출합니다.
  2. 픽셀 데이터의 특성 파악: 과일의 색상, 질감 등 이미지의 특성을 파악하기 위해 픽셀 값의 분포를 분석합니다.
  3. 차원 축소: 고차원의 픽셀 데이터를 처리 가능한 형태로 차원을 축소합니다. PCA(주성분 분석) 같은 기법을 사용할 수 있습니다.
# 사과 이미지만 선택하여 픽셀값의 평균 계산
apple = fruits[0:100].reshape(-1, 100*100)
# 픽셀 평균값의 히스토그램 표시
plt.hist(np.mean(apple, axis=1), alpha=0.8)
plt.legend(['apple'])
plt.show()

4. 평균값과 가까운 사진 고르기

군집화를 통해 비슷한 특성을 가진 과일 사진을 그룹화 한 후, 각 클러스터의 중심(평균 픽셀값)에 가장 가까운 사진을 선택하는 방법은 다음과 같습니다:

  1. 클러스터 평균 계산: 각 클러스터의 평균 픽셀 값을 계산합니다.
  2. 대표 이미지 선택: 평균값과 가장 유사한 픽셀 값을 가진 이미지를 각 클러스터의 대표 이미지로 선택합니다.
# 사과 이미지의 평균값 계산
apple_mean = np.mean(apple, axis=0).reshape(100, 100)
# 각 이미지와 평균 이미지의 차이 계산
abs_diff = np.abs(fruits - apple_mean)
# 차이의 평균값 계산
abs_mean = np.mean(abs_diff, axis=(1,2))
# 평균값과 가장 가까운 이미지의 인덱스 정렬
apple_index = np.argsort(abs_mean)[:100]
# 가장 유사한 이미지 시각화
plt.imshow(fruits[apple_index[0]], cmap='gray_r')
plt.show()

댓글남기기