Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[5주차 과제 제출] 2팀 황인서 #79

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file removed week1/0팀_홍길동.md
Empty file.
53 changes: 53 additions & 0 deletions week5/2팀_황인서.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Chapter 06 비지도 학습
### 06-1 군집 알고리즘

- Keywords
- **비지도 학습**: 훈련 데이터에 타깃이 없는 머신러닝의 한 종류. ex) 군집, 차원 축소
- **군집(clustering)**: 비슷한 샘플끼리 한 그룹(cluster)으로 묶는 비지도 학습 작업
- 흑백 사진 분류
1. 과일 사진 데이터 준비하기
- 3차원(샘플 개수, 높이, 너비) 넘파이 배열을 load 함.
2. 픽셀값 분석하기
- 각 2차원 이미지 배열을 1차원 배열로 reshape 함.
- 각 클래스마다 샘플별 픽셀 평균값을 계산해 히스토그램으로 표현함.
- 각 클래스마다 픽셀별 평균값을 계산해 막대그래프로 표현함.
3. 평균값과 가까운 사진 고르기
- abs() 함수로 오차를 구한 다음 argsort() 함수로 오름차순 정렬함.
4. 문제점
- 샘플의 타깃을 미리 알고 있는 상태에서 픽셀 평균값을 구했으므로, 비지도학습의 전제에 맞지 않음.

- Packages and Functions
- numpy
- **load()**: 넘파이에서 npy 파일을 로드함.
- **abs()**: 절댓값을 계산함.
- **argsort()**: 배열을 작은 값에서 큰 값 순서대로 나열했을 때 인덱스를 반환함.
- matplotlib.pyplot
- **imshow()**: 2차원 넘파이 배열을 이미지로 표현함.
- **hist()**: 히스토그램을 그림.
- **bar()**: 막대그래프를 그림.
- **subplots()**: r*c개의 서브 그래프를 만듦.

### 06-2 k-평균

- Keywords
- **k-평균 알고리즘**
1. 무작위로 k개의 클러스터 중심을 설정함.
2. 각 샘플에서 가장 가까운 클러스터 중심을 찾아 해당 클러스터의 샘플로 지정함.
3. 클러스터에 속한 샘플의 평균값으로 클러스터 중심을 변경함.
4. 클러스터 중심에 변화가 없을 때까지 2~3을 반복함.
- **엘보우 방법**: 적절한 클러스터 개수를 찾기 위한 방법. 클러스터 개수에 따른 **이너셔**(클러스터 중심과 클러스터에 속한 샘플 사이 거리의 제곱 합)의 변화를 관찰함. 변화율이 꺾이는 지점, 즉 이너셔가 더 이상 크게 줄어들지 않는 지점을 클러스터 개수로 설정함.

- Packages and Functions
- sckit-learn
- **KMeans**: k-평균 알고리즘 클래스. n_clusters는 클러스터 개수. max_iter는 최적의 중심을 찾기 위해 반복할 수 있는 최대 횟수.

### 06-3 주성분 분석

- Keywords
- **차원 축소**: 원본 데이터의 특성을 적은 수의 새로운 특성으로 변환하는 비지도 학습. 데이터셋의 크기를 줄이고 비교적 시각화가 쉬움. 차원 축소된 데이터를 다른 학습에 사용하면 성능을 높이거나 훈련 속도를 높일 수 있음.
- **주성분 분석**:차원 축소 알고리즘. 데이터에서 가장 분산이 큰 방향을 찾음. 이 방향을 주성분이라 함.
- **설명된 분산**: 주성분이 원본 데이터의 분산을 얼마나 잘 나타내는지 기록한 값.

- Packages and Functions
- scikit-learn
- **PCA**: 주성분 분석을 수행하는 클래스. n-components는 주성분의 개수. components_는 주성분. explained_variance_는 설명된 분산. explained_variance_ratio_는 설명된 분산의 비율. inverse_transform()는 차원 축소된 데이터를 원래 차원으로 되돌림.