5분 동안의 데이터 과학: 인기 인코딩은 무엇입니까?
대부분의 기계 학습 강좌와 도구는 데이터가 특정한 ML 모델에 적합하기 전에 데이터를 준비해야 한다.일종의 열 인코딩은 분류 데이터 변수를 변환하는 과정으로 이를 기계 학습 알고리즘에 제공하여 예측을 개선할 수 있다.열 코딩은 기계 학습 특징 공정의 관건적인 부분이다.
이 설명서에서는 열 인코딩을 소개하고 ML 모델에서 사용할 시기를 보여 줍니다.Sklearn 및 Pandas에 대한 몇 가지 실제 예를 제공합니다.
이 자습서는 다음과 같습니다.
핫 코딩이란 무엇입니까?
분류 데이터는 레이블 값으로 구성된 변수입니다. 예를 들어, 색상 변수의 값은 빨간색, 파란색 및 녹색일 수 있습니다.서로 다른 유형의 가치관을 생각해 보면, 그것들은 때때로 자연스러운 순서가 있을 수 있다.
일부 변수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, 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)
get_dummies
를 사용하여 pandas DataFrame
대상을 열 인코딩하는 것을 보여 줍니다.매개변수prefix
는 새 열 이름의 접두사를 나타냅니다.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
라는 판다 데이터 프레임이 있는데 두 개의 목록이 있다. ids
와 Cities
이다.전화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())
여기, 우리는 방법City
의 prefix
속성 전달치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로 변환합니다.OneHotEncoder
대상.fit()
를 사용하여 원시 특징을 맞춘다.Note: In the newer version of
sklearn
, you don’t need to convert the string to int, asOneHotEncoder
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.]]
학습의 다음 단계
결승점에 도착한 것을 축하합니다!이제 열 인코딩의 작용과 파이톤에서 그것을 어떻게 실현하는지 잘 알고 있을 것입니다.기계 학습 특징 공정을 파악하려면 아직도 배워야 할 점이 많다.다음 단계는 다음과 같습니다.
즐겁게 공부하세요!
인공지능 계속 읽기
Reference
이 문제에 관하여(5분 동안의 데이터 과학: 인기 인코딩은 무엇입니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/educative/data-science-in-5-minutes-what-is-one-hot-encoding-4m9a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)