특징 엔지니어링 또는 특징 추출 또는 특징 발견은 원시 데이터에서 특징(특성, 속성, 속성)을 추출하기 위해 도메인 지식을 사용하는 프로세스입니다.
동기는 이러한 추가 기능을 사용하여 기계 학습 프로세스에 원시 데이터만 제공하는 것과 비교하여 기계 학습 프로세스의 결과 품질을 향상시키는 것입니다.
피쳐 엔지니어링은 기계 학습 응용의 기본이며 어렵고 비용도 많이 듭니다.
그러나 제대로 수행되면 놀라운 결과를 초래할 수 있습니다.
동일한 알고리즘이 제대로 작동하지 않는 것과 훌륭하게 작동하는 것의 차이입니다.
피처 엔지니어링 방법은 피처에 따라 여러 가지 형태로 처리해야 하겠지만,
기본적으로 수치형 데이터의 경우 결측값 처리, 이상값 처리 등 과 같은 피처 엔지니어링을 진행한다.
명목형 데이터의 경우 레이블 인코딩, 원-핫 인코딩과 같은 작업을 진행한다
df["칼럼명].isnull().sum()
결측치가 있는지 확인 있을 경우!
train["칼럼명"].fillna(train["칼럼명"].median())
결측지를 평균(mean)값, 중앙값(median), 최빈값(mode)으로 채울 수 있다.
수집한 데이터를 분석하다 보면 존재할 수 없는 값이 포함된 경우도 있으며, 있어야 할 값이 없는 경우도 존재한다.
값이 존재할 수 있는 범위를 벗어나는 경우도 있다. 이러한 값을 '이상값'이라 할 수 있다.
import matplotlib.pyplot as plt
df.boxplot(column = "칼럼명",figsize =(5,8))
그 중 정상 범위를 벗어나는 이상값을 판단하는 데 많이 사용하는 방법은
'상자그림(box plot)'으로, age 피처에 적용해 이상값을 찾는 방법이다.
출처 : AI타임스(http://www.aitimes.com)
평균 0 , 분산 1로 조정합니다
보통의 싸이킷런 함수들과 비슷하게 fit, transform, fit_transform 을 지원합니다.
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()
df[["칼럼명_ss"]] = ss.fit(df[["칼럼명"]]).transform(df[["칼럼명"]])
평균과 분산 대신 중간값(median)과 사분위값을 사용합니다
[Q2 = 중간값, Q3 = 3분위값, Q1 = 1분위값]
이상치에 강하게 만들수 있습니다.
from sklearn.preprocessing import RobusterScaler
rs = RobustScaler()
df[["칼럼명_rs"]] = rs.fit_transform(df[["칼럼명"]])
모든 값이 0~1사이에 존재
정규화 방법중 원데이터 분포를 유지하면서 정규화하는 방법
from sklearn.preprocessing import MinMaxScaler
mm = MinMaxScaler()
df[["칼럼명_ss"]] = ss.fit(df[["칼럼명"]]).transform(df[["칼럼명"]])