원-핫 인코딩
Coddy Machine Learning 여정의 머신러닝을 위한 통계 섹션에 포함된 레슨. 64개 중 53번째.
악기에는 순서가 없습니다. 피아노를 1, 2, 3으로 번호를 매기면 드럼보다 큰 값으로 취급됩니다. 원-핫 인코딩은 대신 각 범주에 고유한 0/1 열을 부여합니다.
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개 추가됩니다.
챌린지
중급휴양지 사이트에는 cabins.csv에 오두막 정보가 나열되어 있습니다. 프로그램은 area 또는 heat라는 열 이름을 읽습니다. 시작 코드는 가격과의 상관관계를 계산하기 위해 이 열을 숫자로 변환하지만, 어느 열에도 순서가 없습니다. 따라서 그 r은 임의로 만들어진 것입니다.
- 해당 줄을 대체하세요. 열을 원-핫 인코딩하세요(0과 1).
- 열이 몇 개로 바뀌었는지 출력한 다음, 새 열마다 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)}")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
머신러닝을 위한 통계의 모든 레슨
직접 연습해 보세요: 온라인 Python 컴파일러