데이터를 확인하여, 숫자가 아닌 데이터 중에서 카테고리로 판단되는 데이터는 숫자로 바꿔줄 수 있다.
문자열 컬럼의 유니크 갯수를 확인한다
문자열의 갯수가 2개 이면 , 0과 1로만 바꿔도 되니까, 이때는 '레이블 인코딩'만 사용하면 된다
하지만, 문자열의 갯수가 3개 이상이면, '원 핫 인코딩'을 사용하여, 0과 1로 표현가능하도록 변경한다
* 컴퓨터에서는 0과 1이 가장 이상적인 숫자이다
기초데이터 : 원본 데이터를 X , y 값으로 분리한 상태
X
>>>
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
y
>>>
0 No
1 Yes
2 No
3 No
5 Yes
7 Yes
8 No
9 Yes
Name: Purchased, dtype: object
문자열 컬럼의 유니크 갯수 확인
- nunique() 와 unique() 를 사용해서 확인한다
- 유니크한 데이터를 sorted() 를 사용해 알파벳 순으로 확인한다
X['Country'].nunique()
# 3
sorted(X['Country'].unique()) # sorted() 를 사용해 알파벳 순으로 확인한다
# ['France', 'Germany', 'Spain']
레이블 인코딩, 원핫인코딩 사용하기 위한 임폴트
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
from sklearn.compose import ColumnTransformer
레이블 인코딩 label enxoding
- 숫자가 커지면 컴퓨터 학습이 어려워짐으로 유니크한 데이터 값이 2가지 경우일때만 사용한다
encoder = LabelEncoder()
y = encoder.fit_transform( y )
y
# array([0, 1, 0, 0, 1, 1, 0, 1])
원핫인코딩 one hot encoding
- ColumnTransformer( [ ( 'encoder', OneHotEncoder() , [*] ) ] , remainder= 'passthrough' ) 사용
- * 부분은 X에 들어있는 원핫인코딩 하고 싶은 컬럼의 인덱스를 작성
- 예를 들어서, 원핫인코딩 하고 싶은 컬럼이, 첫번쨰랑 세번째 컬럼이다 하면, [0,2] 작성하면 된다
ct = ColumnTransformer( [ ('encoder', OneHotEncoder() , [0] ) ] , remainder= 'passthrough' )
X = ct.fit_transform( X )
X
>>> # 바꾸고 싶던 컬럼의 유니크한 종류의 갯수로 새로운 컬럼이 만들어져 제일 왼쪽에 위치하였다
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]])
'MACHINE | DEEP LEARNING > Machine Learning Project' 카테고리의 다른 글
[AI] 머신 러닝 Multiple Linear Regression 순서 및 과정 (0) | 2024.04.14 |
---|---|
[AI] 머신 러닝 Simple Linear Regression 순서 및 과정 (0) | 2024.04.14 |
[AI] 머신러닝 Feature Scaling(StandardScaler(), MinMaxScaler()) / Dataset을 Training과 Test로 나누는 방법 (2) | 2024.04.12 |
[AI] 머신러닝 import dataset, NaN 처리(dropna(), fillna()), X, y 데이터 분리 (1) | 2024.04.12 |
[AI] 머신러닝_Supervised Learning, Training 과 Test 이론 (2) | 2024.04.12 |