Menu
CoddyTech

원-핫 인코딩

Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 53번째.

악기에는 순서가 없습니다. 피아노를 1, 2, 3으로 번호를 매기면 드럼보다 큰 값으로 취급됩니다. 원-핫 인코딩은 대신 각 범주에 고유한 0/1 열을 부여합니다.

네 학생의 악기인 피아노, 드럼, 피아노, 첼로가 첼로, 드럼, 피아노라는 이름의 세 열로 변환됩니다. 각 행에는 악기에 해당하는 열에 1이 하나 있고, 나머지 열에는 0이 있으며, 주 열은 그대로 통과합니다.

pd.get_dummies가 이를 수행하고, dtype=int는 True와 False 대신 1과 0을 사용하도록 합니다:

pupils = pd.DataFrame({"instrument": ["piano", "drums", "piano", "cello"],
                       "weeks": [4, 3, 6, 10]})
encoded = pd.get_dummies(pupils, columns=["instrument"], dtype=int)
print(encoded)

다음과 같이 출력됩니다:

   weeks  instrument_cello  instrument_drums  instrument_piano
0      4                 0                 0                 1
1      3                 0                 1                 0
2      6                 0                 0                 1
3     10                 1                 0                 0

새 열은 알파벳순으로 값마다 하나씩 맨 뒤에 추가됩니다. 단점은 너비입니다. 값이 500개라면 열이 500개 추가됩니다.

challenge icon

챌린지

중급

휴양지 사이트에는 cabins.csv에 오두막 정보가 나열되어 있습니다. 프로그램은 area 또는 heat라는 열 이름을 읽습니다. 시작 코드는 가격과의 상관관계를 계산하기 위해 이 열을 숫자로 변환하지만, 어느 열에도 순서가 없습니다. 따라서 그 r은 임의로 만들어진 것입니다.

  1. 해당 줄을 대체하세요. 열을 원-핫 인코딩하세요(0과 1).
  2. 열이 몇 개로 바뀌었는지 출력한 다음, 새 열마다 1의 개수를 출력하세요.

오두막이 5개이고 입력값이 heat인 경우:

heat became 2 columns:
heat_gas: 3 cabins
heat_wood: 2 cabins

직접 해보기

import pandas as pd

cabins = pd.read_csv("cabins.csv")
column = input()

# 아래에 코드를 작성하세요
# 이 줄들은 지역과 난방 유형에 존재하지 않는 순서를 부여합니다. 이 줄들을 교체하세요
numbers = {"coast": 1, "hills": 2, "lake": 3, "woods": 4, "gas": 1, "solar": 2, "wood": 3}
cabins[column] = cabins[column].map(numbers)
print(f"{column} against price: r = {round(cabins[column].corr(cabins['price']), 2)}")
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

머신러닝을 위한 통계의 모든 레슨

직접 연습해 보세요: 온라인 Python 컴파일러