ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 데이터 전처리와 최적화 - 데이터 실수화 (Data Vectorization)
    아가개발자/머신러닝 2020. 9. 15. 18:13

     

    데이터 전처리 기법 

     

    1. 데이터 실수화 (Data Vectorization)
    2. 데이터 정제 (Data Cleaning)
    3. 데이터 통합 (Data Integration)
    4. 데이터 축소 (Data Reduction)
    5. 데이터 변환 (Data Transformaion)
    6. 데이터 균형 (Data Balancing)

     

    데이터 실수화(Data Vectorization) 

    - 범주형 자료, 텍스트 자료, 이미지 자료 등을 실수로 구성된 형태로 전환

     

    • 범주형 자료의 실수화

     

    <범주형 자료>

    ID City
    1 Seoul
    2 Dubai
    3 LA

    <One-hot encoding을 이용한 데이터 실수화> 

    id City1 City2 City3
    1 1 0 0
    2 0 1 0
    3 0 0 1

     

    Scikit-learn의 DictVectorizer함수를 이용하여 범주형 자료를 실수화

     

    from sklearn.feature_extraction import DictVectorization
    vec = DictVectorizer(sparse=False)
    	#희소 행렬(Sparse matrix의 경우 sparse = True를 사용하여 메모리를 줄일 수 있음) ==> CSR 표현식
    vec.fit_transform(D) # D: data 
    
    """
    array([[ 0. ,  0. ,  1. , 10. ],
           [ 0. ,  1. ,  0. , 33.5],
           [ 1. ,  0. ,  0. , 20. ]])
    """

     

    • 텍스트 자료의 실수화
    text = ['떴다 떴다 비행기 날아라 날아라',
               '높이 높이 날아라 우리 비행기',
               '내가 만든 비행기 날아라 날아라',
               '멀리 멀리 날아라 우리 비행기']
    from sklearn.feature_extraction.text import Countvectorizer
    vec = Countvectorizer()
    vec.get_feature_names()
    
    ['날아라', '내가', '높이', '떴다', '만든', '멀리', '비행기', '우리']
    
    vec = vec.fit_transform(text)
    vec.toarray()
    
    """
    array([[2, 0, 0, 2, 0, 0, 1, 0],
           [1, 0, 2, 0, 0, 0, 1, 1],
           [2, 1, 0, 0, 1, 0, 1, 0],
           [1, 0, 0, 0, 0, 2, 1, 1]])
    """
    
    t = vec.fit_transform(text).toarray()
    import pandas as pd
    t1 = pd.DataFrame(t, columns = vec.get_feature_names())
    t1 #pandas를 사용한 형태 
    

     

    ※ 출현 횟수가 정보의 양과 비례하지 않기 때문에, 의미 없는 단어의 중요도를 낮추는 TF-IDF(Term Frequency Inverse Document Frequency) 기법을 사용 

    → 높은 빈도에 낮은 가중치, 낮은 빈도에 높은 가중치

    from sklearn.feature_extraction.text import TfidfVectorizer
    tfid = TfidfVectorizer()
    x2 = tfid.fit_transform(text).toarray()
    x3 = pd.DataFrame(x2, columns=tfid.get_feature_names())
    x3

     

    댓글

Designed by Tistory.