티스토리 뷰

반응형

파이썬 코딩을 이용해서 머신러닝과 딥러닝을 하기 위해서 데이터는 숫자형이어야 할 때가 많다.

특히 설명변수(독립변수)가 범주형 변수일 때 숫자형 변수로 변환하기 위해서는 원 핫 인코딩을 해야한다.
대상변수(종속변수)가 0과 1의 이진변수이거나 범주형일 때 레벨 인코딩을 해야 한다.

예를 들어

사과, 수박, 참외, 복숭아 등 4개로 범주형 자료가 있을 때 label encoding 은 다음처럼 실행한다.

from sklearn.preprocessing import LabelEncoder

fruit =['사과', '수박', '참외', '복숭아', '사과','참외' ]

le = LabelEncoder()
fruit_labelencoding = le.fit_transform(fruit)

print(fruit_labelencoding)
#[0 1 2 3 0 2]

원핫인코딩은 다음 구문처럼 실행한다.

import pandas as pd

fruit_df = pd.DataFrame(fruit, columns = ['Fruit'])
pd.get_dummies(fruit_df)

또 다른 전처리방법으로 설명변수들의 단위를 통일해서 상호비교가 될 수 있도록 하는 표준화, 정규화하는 특성 스케일링(feature scaling)이 있다.

1. 붓꽃데이터를 불러온다.

from sklearn.datasets import load_iris
import pandas as pd

iris = load_iris()
iris_df = pd.DataFrame(iris.data, columns = iris.feature_names)
iris_df

2. 입력변수의 최소값과 최대값을 0과 1사이의 실수 값으로 변환하는 MinMaxScalar() 함수가 있고

from sklearn.preprocessing import MinMaxScaler

minmax = MinMaxScaler()
minmax_iris = minmax.fit_transform(iris_df)
minmax_iris = pd.DataFrame(minmax_iris, columns = iris.feature_names)
minmax_iris

3. 입력변수의 평균과 표준편차를 이용하여 정규화하는 StandardScalar() 함수가 있고 결과적으로 입력변수들은 가우스 분포형태를 갖는다.

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
standard_iris = scaler.fit_transform(iris_df)
standard_iris = pd.DataFrame(standard_iris, columns = iris.feature_names)
standard_iris

일부 머신러닝 알고리즘이나 딥러닝에서 가우스 분포를 따르도록 데이터 세트를 변환하는 것이 매우 중요하다. 예를 들어, 선형 회귀 또는 로지스틱 회귀 모델은 데이터가 가우스 분포를 따른다고 가정합니다.
이러한 데이터 인코딩 및 특성 스케이링 방법을 사용하여 데이터 세트를 훈련하면 머신러닝 모델의 성능이 개선될 수 있기 때문에 특정 모델을 사용하는 것보다 적절한 전처리 방법을 사용하는 것도 보다 중요할 수 있다.


반응형
댓글