본문 바로가기
AI & 머신러닝 coding skill

머신러닝 - t-SNE

by 호빵님 2022. 5. 23.
반응형

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()

 

 

 

*본 포스팅은 DX기업교육 플랫폼인 Elice academy의 머신러닝 심화 과정에서 실습한 코드를 이용해서 작성되었습니다.

https://elice.io/

 
 
 

올인원 디지털 교육 플랫폼 - 엘리스

우리 모두를 위한 교실, 엘리스와 함께 더 나은 기회를 만들어보세요

elice.io

 

 

반응형