DataScience/MachineLearning
Machine 원핫 인코딩 (One Hot Encoding)
leopard4
2022. 12. 1. 10:57
In [51]:
# 2. 원 핫 인코딩 하는 방법
In [37]:
X
Out[37]:
Country | Age | Salary | |
---|---|---|---|
0 | France | 44.0 | 72000.0 |
1 | Spain | 27.0 | 48000.0 |
2 | Germany | 30.0 | 54000.0 |
3 | Spain | 38.0 | 61000.0 |
5 | France | 35.0 | 58000.0 |
7 | France | 48.0 | 79000.0 |
8 | Germany | 50.0 | 83000.0 |
9 | France | 37.0 | 67000.0 |
In [53]:
# 원핫 인코딩으로 바꾸고 싶은 컬럼의 인덱스를 써준다.
# [0] 이라고 써준다.
# 만약에, 원핫 인코딩으로 바꾸고 싶은 컬럼이 여러개이면
# 리스트안에 인덱스만 써주면 된다. 예) [1, 4, 5]
ct = ColumnTransformer( [ ("encoder", OneHotEncoder(), [0]) ], remainder = 'passthrough')
# remainder 의 passthrough 는 ? 원핫인코딩 아닌 컬럼들은 그냥 냅둬라.
In [54]:
ct.fit_transform( X )
Out[54]:
array([[1.0e+00, 0.0e+00, 0.0e+00, 4.4e+01, 7.2e+04], [0.0e+00, 0.0e+00, 1.0e+00, 2.7e+01, 4.8e+04], [0.0e+00, 1.0e+00, 0.0e+00, 3.0e+01, 5.4e+04], [0.0e+00, 0.0e+00, 1.0e+00, 3.8e+01, 6.1e+04], [1.0e+00, 0.0e+00, 0.0e+00, 3.5e+01, 5.8e+04], [1.0e+00, 0.0e+00, 0.0e+00, 4.8e+01, 7.9e+04], [0.0e+00, 1.0e+00, 0.0e+00, 5.0e+01, 8.3e+04], [1.0e+00, 0.0e+00, 0.0e+00, 3.7e+01, 6.7e+04]])
In [ ]:
# France Germany Spain Age Salary
# 1 0 0 44 72000
# 0 0 1 27 48000
# 0 1 0
# 0 0 1
In [ ]:
# 아래와같이 세팅하고
# ColumnTransformer( [ ("encoder", OneHotEncoder(), [2])로 [0]을 [2]로 변경한뒤
# ct.fit_transform( X ) 해보면
# 변경한 컬럼이 맨 앞으로 온것을 볼 수 있다.
In [56]:
X= df[['Age', 'Salary', 'Country' ]]
In [57]:
X
Out[57]:
Age | Salary | Country | |
---|---|---|---|
0 | 44.0 | 72000.0 | France |
1 | 27.0 | 48000.0 | Spain |
2 | 30.0 | 54000.0 | Germany |
3 | 38.0 | 61000.0 | Spain |
5 | 35.0 | 58000.0 | France |
7 | 48.0 | 79000.0 | France |
8 | 50.0 | 83000.0 | Germany |
9 | 37.0 | 67000.0 | France |
In [58]:
ct = ColumnTransformer( [ ("encoder", OneHotEncoder(), [2]) ], remainder = 'passthrough')
In [59]:
ct.fit_transform( X )
Out[59]:
array([[1.0e+00, 0.0e+00, 0.0e+00, 4.4e+01, 7.2e+04], [0.0e+00, 0.0e+00, 1.0e+00, 2.7e+01, 4.8e+04], [0.0e+00, 1.0e+00, 0.0e+00, 3.0e+01, 5.4e+04], [0.0e+00, 0.0e+00, 1.0e+00, 3.8e+01, 6.1e+04], [1.0e+00, 0.0e+00, 0.0e+00, 3.5e+01, 5.8e+04], [1.0e+00, 0.0e+00, 0.0e+00, 4.8e+01, 7.9e+04], [0.0e+00, 1.0e+00, 0.0e+00, 5.0e+01, 8.3e+04], [1.0e+00, 0.0e+00, 0.0e+00, 3.7e+01, 6.7e+04]])