반응형
t-SNE
t-SNE 알고리즘은 데이터 시각화를 위해 주로 활용되는 차원 축소 알고리즘입니다.
데이터 간의 거리에 상관없이 함축적으로 표현되는 PCA와는 달리 t-SNE는 차원 축소 이후에도 가까운 데이터는 가깝게, 멀리 있는 데이터는 멀게 표현할 수 있습니다. 따라서 대용량 데이터의 시각화 즉, 구별 가능한 시각화를 위해 활용할 수 있습니다.
이번 실습에서는 주성분 분석(PCA)에서 사용한 와인 데이터를 활용하여 t-SNE 알고리즘을 사용하는 방법을 학습해보도록 하겠습니다.
t-SNE를 위한 사이킷런 함수/라이브러리
- from sklearn.manifold import TSNE : 사이킷런에 구현되어 있는 tsne 모델을 불러옵니다.
- TSNE(n_components): n_components 개수로 데이터의 차원을 축소하도록 모델을 정의합니다.
- [Model].fit_transform(data) : data에 대해 차원 축소를 위한 학습을 진행하고, 동시에 data를 설정한 n_components 으로 차원을 축소시킨 결과 데이터를 반환합니다.
import numpy as np
from sklearn.manifold import TSNE
from sklearn.datasets import load_wine
import matplotlib.pyplot as plt
from elice_utils import EliceUtils
elice_utils = EliceUtils()
"""
1. 데이터를 불러오고,
2개의 변수만을 가질 수 있도록 고정하여
반환하는 함수를 구현합니다.
Step01. 사이킷런에 저장된 데이터를 불러옵니다.
데이터는 (X, y) 형태로 불러와야 합니다.
Step02. column_start로 지정된 특정 column으로부터
연속되는 2개의 변수를 X에 저장합니다.
[실습4]에서 구현한 함수를 그대로 사용할 수 있습니다.
"""
def load_data():
X, y = load_wine(return_X_y = True)
column_start = 6
X = X[:, column_start : column_start + 2]
return X
"""
2. t-SNE를 활용하여
2차원 데이터를 1차원으로 축소하는 함수를 완성합니다.
Step01. t-SNE의 n_components를 1로 지정하여
tsne를 정의합니다.
Step02. tsne를 활용하여 차원 축소를 진행한 후,
차원이 축소된 데이터 X_tsne를 추출합니다.
"""
def tsne_data(X):
tsne = TSNE(n_components = 1)
X_tsne = tsne.fit_transform(X)
return tsne, X_tsne
def main():
X = load_data()
tsne, X_tsne = tsne_data(X)
print("- original shape: ", X.shape)
print("- transformed shape:", X_tsne.shape)
print("\n원본 데이터 X :\n", X[:5])
print("\n차원 축소 이후 데이터 X_tsne\n",X_tsne[:5])
if __name__ == '__main__':
main()
반응형
'AI & 머신러닝 coding skill' 카테고리의 다른 글
머신러닝 Decision tree - 앙상블(Ensemble) 기법 - Voting (0) | 2022.05.24 |
---|---|
머신러닝 의사결정 나무(DecisionTree Classifier) - 분류 (0) | 2022.05.24 |
머신러닝 의사결정 나무(DecisionTree Regressor) - 회귀 (0) | 2022.05.24 |
머신러닝 - 이진트리 분류기 만들기 (0) | 2022.05.24 |
머신러닝 - 주성분 분석(PCA) (0) | 2022.05.23 |
머신러닝 Clustering - K-Means VS GMM (0) | 2022.05.23 |
머신러닝 Clustering - Gaussian Mixture Model (GMM) (0) | 2022.05.23 |
머신러닝 Clustering - K-Means 클러스터링 (0) | 2022.05.23 |