5분 동안의 데이터 과학: 인기 인코딩은 무엇입니까?

만약 네가 데이터 과학 분야에 있다면, 너는 아마도 '핫코딩' 이라는 단어를 들어 본 적이 있을 것이다.심지어 Sklearn 문서도 "인기 있는 방안으로 분류 정수 특성을 인코딩합니다."라고 알려 줍니다.그러나 열 인코딩은 무엇입니까? 우리는 왜 그것을 사용해야 합니까?
대부분의 기계 학습 강좌와 도구는 데이터가 특정한 ML 모델에 적합하기 전에 데이터를 준비해야 한다.일종의 열 인코딩은 분류 데이터 변수를 변환하는 과정으로 이를 기계 학습 알고리즘에 제공하여 예측을 개선할 수 있다.열 코딩은 기계 학습 특징 공정의 관건적인 부분이다.
이 설명서에서는 열 인코딩을 소개하고 ML 모델에서 사용할 시기를 보여 줍니다.Sklearn 및 Pandas에 대한 몇 가지 실제 예를 제공합니다.
이 자습서는 다음과 같습니다.
  • What is one hot encoding?
  • How to convert categorical data to numerical data
  • One hot encoding with Pandas
  • One hot encoding with Sklearn
  • Next steps for your learning
  • 핫 코딩이란 무엇입니까?


    분류 데이터는 레이블 값으로 구성된 변수입니다. 예를 들어, 색상 변수의 값은 빨간색, 파란색 및 녹색일 수 있습니다.서로 다른 유형의 가치관을 생각해 보면, 그것들은 때때로 자연스러운 순서가 있을 수 있다.
    일부 변수machine learning algorithms는 분류 데이터를 직접 처리할 수 있는데 구체적으로는 구체적인 실현에 달려 있다. 예를 들어decision tree 대부분의 변수는 입력이나 출력 변수가 모두 숫자나 수치임을 요구한다.이것은 모든 분류 데이터가 정수에 비쳐야 한다는 것을 의미한다.
    열 인코딩은 데이터를 알고리즘으로 바꾸어 더 좋은 예측을 얻는 방법이다.하나의hot을 사용하면, 우리는 모든 분류 값을 새로운 분류 열로 바꾸고, 이 열에 1이나 0의 이진 값을 지정합니다.모든 정수치는 이진 벡터로 표시된다.모든 값이 0이고 색인은 1로 표시됩니다.
    보다 잘 이해하려면 다음 차트를 참조하십시오.

    이것을 하나의 예에 응용합시다.만약 우리가 빨간색과 파란색의 값을 가지고 있다면.하나의 hot에 대해 우리는 빨간색의 수치를 0이고 파란색의 수치를 1로 지정할 것이다.

    It’s crucial to be consistent when we use these values. This makes it possible to invert our encoding at a later point to get our original categorical back.


    일단 우리가 수치를 분배하면, 우리는 수치를 대표하는 이진 벡터를 만들 것이다.이런 상황에서 벡터의 길이는 2이다. 왜냐하면 우리는 두 개의 값이 있기 때문이다.따라서 red값은 이진방향량[1,0]으로 표시할 수 있고blue값은 [0,1]로 표시될 수 있다.

    왜 열 인코딩을 사용합니까?


    열 인코딩은 서로 관계가 없는 데이터에 매우 유용하다.기계 학습 알고리즘은 숫자의 순서를 중요한 속성으로 간주한다.다시 말하면, 그들은 더 높은 숫자를 더 낮은 숫자보다 더 좋거나 더 중요하다고 이해할 것이다.
    이것은 일부 질서정연한 상황에 도움이 되지만, 일부 입력 데이터는 분류 값의 어떤 순위도 없기 때문에 예측 문제와 성능이 좋지 않을 수 있다.이것이 바로 열 인코딩이 시간을 절약할 수 있는 때다.
    하나의 열 인코딩은 우리의 훈련 데이터를 더욱 유용하고 표현력이 있으며, 쉽게 다시 축소할 수 있게 한다.수치를 사용함으로써 우리는 수치의 확률을 더욱 쉽게 확정할 수 있다.특히, 우리의 출력 값은 하나의 탭보다 더 미세한 예측을 제공하기 때문에 열 인코딩을 사용했다.

    분류 데이터를 디지털 데이터로 변환하는 방법


    수동으로 데이터를 수치로 변환하려면 다음 두 가지 기본 단계가 포함됩니다.
  • 정수 인코딩
  • 핫 코딩
  • 1개
    첫 번째 단계에서, 우리는 모든 종류의 값에 정수나 숫자 값을 분배해야 한다.만약 우리가 빨간색, 노란색, 파란색의 값을 가지고 있다면, 우리는 각각 그것들을 1, 2, 3으로 분배할 수 있다.
    순서나 관계가 없는 분류 변수를 처리할 때, 우리는 더욱 진일보해야 한다.두 번째 단계는 우리가 방금 분배한 정수에 대해 열 인코딩을 응용하는 것과 관련이 있다.이를 위해, 우리는 정수 인코딩 변수를 삭제하고, 모든 유일한 변수에 이진 변수를 추가합니다.
    위에서, 우리는 세 가지 종류나 색깔이 있기 때문에, 우리는 세 개의 이진 변수를 사용한다.우리는 값 1을 각 색깔의 이진 변수로 하고, 값 0을 다른 두 가지 색깔의 이진 변수로 한다.
    red,    yellow,  blue
    1,      0,      0
    0,      1,      0
    0,      0,      1
    

    Note: In many other fields, binary variables are referred to as dummy variables.


    판다에 대한 열 인코딩


    우리는 수동으로 열 인코딩을 진행할 필요가 없다.많은 데이터 과학 도구들이 데이터를 인코딩하는 간단한 방법을 제공했다.파이썬 라이브러리 Pandas 는 열 인코딩을 사용하기 위해 get_dummies 라는 함수를 제공합니다.
    df_new = pd.get_dummies(df, columns=["col1"], prefix="Planet")
    
    그것의 실제 효과를 봅시다.
    import pandas as pd 
    
    df = pd.DataFrame({"col1": ["Sun", "Sun", "Moon", "Earth", "Moon", "Venus"]})
    print("The original data")
    print(df)
    print("*" * 30)
    df_new = pd.get_dummies(df, columns=["col1"], prefix="Planet")
    print("The transform data using get_dummies")
    print(df_new)
    
  • 7행은 get_dummies를 사용하여 pandas DataFrame 대상을 열 인코딩하는 것을 보여 줍니다.매개변수prefix는 새 열 이름의 접두사를 나타냅니다.
  • 9행에 출력이 표시됩니다.
  • 우리는 이것을 실제 예에 응용합시다.만약 우리가 아래의 데이터 집합을 가지고 있다면.
    import pandas as pd
    
    ids = [11, 22, 33, 44, 55, 66, 77]
    countries = ['Seattle', 'London', 'Lahore', 'Berlin', 'Abuja']
    
    df = pd.DataFrame(list(zip(ids, countries)),
                      columns=['Ids', 'Cities'])
    
    여기에 우리는 df라는 판다 데이터 프레임이 있는데 두 개의 목록이 있다. idsCities이다.전화head()로 문의하여 다음 결과를 확인합니다.
    신분증
    도시.
    0
    11
    시애틀
    1
    22
    런던
    2
    33
    라합

    44
    베를린
    4
    55
    아부자
    우리는 여기에서 Cities열에 우리의 분류값인 우리의 도시 이름을 포함하는 것을 보았다.우리는 위에서 논의한 Cities 함수를 사용하여 새 열 get_dummies() 에서 그것들을 변환해야 한다.
    y = pd.get_dummies(df.Countries, prefix='City')
    print(y.head())
    
    여기, 우리는 방법Cityprefix 속성 전달치get_dummies()를 위한 것이다.코드가 실행 중인 경우 인코딩 값을 인쇄합니다.
    import pandas as pd 
    
    df = pd.DataFrame({"col1": ["Seattle", "London", "Lahore", "Berlin", "Abuja"]})
    print("The original data")
    print(df)
    print("*" * 30)
    df_new = pd.get_dummies(df, columns=["col1"], prefix="Cities")
    print("The transform data using get_dummies")
    print(df_new)
    

    Sklearn을 사용한 열 인코딩


    우리는 Sklearn로 유사한 기능을 실현할 수 있으며 preprocessing 모듈의 열 인코딩에 대상/함수를 제공한다.
    import sklearn.preprocessing as preprocessing
    import numpy as np
    import pandas as pd
    
    targets = np.array(["red", "green", "blue", "yellow", "pink",
                        "white"])
    labelEnc = preprocessing.LabelEncoder()
    new_target = labelEnc.fit_transform(targets)
    onehotEnc = preprocessing.OneHotEncoder()
    onehotEnc.fit(new_target.reshape(-1, 1))
    targets_trans = onehotEnc.transform(new_target.reshape(-1, 1))
    print("The original data")
    print(targets)
    print("The transform data using OneHotEncoder")
    print(targets_trans.toarray())
    
  • 우리는 LabelEncoder를 사용하여 7행과 8행의 문자열을 int로 변환합니다.
  • 제9행 창설OneHotEncoder 대상.
  • 제10줄은 fit()를 사용하여 원시 특징을 맞춘다.
  • 11행은 원본 피쳐를 새 피쳐로 변환하는 열 인코딩을 사용합니다.
  • 15번째 줄의 출력에서 새로운 데이터를 볼 수 있습니다.
  • Note: In the newer version of sklearn, you don’t need to convert the string to int, as OneHotEncoder does this automatically.


    다른 예로 OneHotEncoder류의 실제 응용을 살펴보자.우선, 다음은 어떻게 이 종류를 가져오는지.
    from sklearn.preprocessing import OneHotEncoder 
    
    이전과 마찬가지로, 우리는 먼저 인코더의 유일한 값 목록을 채웠다.
    x = [[11, "Seattle"], [22, "London"], [33, "Lahore"], [44, "Berlin"], [55, "Abuja"]]
    y = OneHotEncoder().fit_transform(x).toarray()
    print(y)
    
    우리가 이 그림을 인쇄할 때, 우리는 현재 인코딩된 값을 얻었다.
    [[1. 0. 0. 0. 0. 0. 0. 1.]
     [0. 1. 0. 0. 0. 1. 0. 0.]
     [0. 0. 1. 0. 0. 0. 0. 1.]
     [0. 0. 0. 1. 0. 0. 1. 0.]
     [0. 0. 0. 0. 1. 1. 0. 0.]]
    

    학습의 다음 단계


    결승점에 도착한 것을 축하합니다!이제 열 인코딩의 작용과 파이톤에서 그것을 어떻게 실현하는지 잘 알고 있을 것입니다.기계 학습 특징 공정을 파악하려면 아직도 배워야 할 점이 많다.다음 단계는 다음과 같습니다.
  • 따뜻한 가누피 한 잔
  • 계수 인코딩
  • 평균 인코딩
  • 레이블 인코딩
  • 증거 인코딩 가중치
  • 이것들을 이해하려면 Educational의 미니 강좌Feature Engineering for Machine Learning.를 보십시오. 기존 기능에서 새로운 ML 기능을 만드는 기술을 배울 것입니다.우선, 당신은 라벨 인코딩을 깊이 연구할 것입니다. 이것은 분류 특징을 디지털 특징으로 전환하는 데 매우 중요합니다.나머지 장에서, 당신은 기능의 상호작용과 날짜, 시간 기능을 이해할 것입니다.
    즐겁게 공부하세요!

    인공지능 계속 읽기

  • Scikit-learn cheat sheet: methods for classification & regression
  • Pandas Cheat Sheet: top 35 commands and operations
  • Anatomy of a machine learning system design interview question
  • 좋은 웹페이지 즐겨찾기