728x90
머신러닝 전 데이터 전처리
- 데이터를 학습하기 위해서는,
- 방정식에 대입되어야 하는데,
- 방정식은 수학식이므로, 데이터는 모두 숫자로 되어있어야 한다.
- 따라서, 문자열 데이터를 숫자로 바꿔줘야 한다
- 방법은 2가지가 있다.
전제 ) sklearn 라이브러리를 불러온다
- from sklearn.preprocessing import LabelEncoder, OneHotEncoder
- from sklearn.compose import ColumnTransformer
1. Label Encoding 하는 방법
encoder = LabelEncoder() ====> encoder라는 변수에 함수를 저장한다.
X['Country'] = encoder.fit_transform( X['Country'])
X
Country Age Salary
0 0 44.0 72000.0
1 2 27.0 48000.0
2 1 30.0 54000.0
3 2 38.0 61000.0
5 0 35.0 58000.0
7 0 48.0 79000.0
8 1 50.0 83000.0
9 0 37.0 67000.0
country 컬럼의 데이터가 숫자 데이터로 변환된 모습
2. On Hot Encoding 하는 방법
ct = ColumnTransformer( [ ('encoder', OneHotEncoder(), [바꾸고싶은 컬럼의 인덱스])], remainder = 'passthrough')
ct. fit_transform( 변수 )
ex ))
ct = ColumnTransformer( [ ('encoder', OneHotEncoder(), [0])], remainder = 'passthrough')
ct.fit_transform( 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]])
country 컬럼이 숫자 데이터로 변환된 모습
- One Hot Encoding으로 바꾸고 싶은 컬럼의 인덱스를 써준다.
- [0] 이라고 써준다.
- 만약에, One Hot Encoding으로 바꾸고 싶은 컬럼이 여러개이면 ,
- 리스트 안에 인덱스만 써준다.
- remainder 의 passthrough는 One Hot Encoding 아닌 컬럼들은 그냥 지나치라는 뜻이다.
728x90