[DS] Feature Engineering

rkqhwkrn·2023년 1월 2일
0

Python

목록 보기
7/13

Feature Engineering

Feature Engineering을 하는 이유

  • 모델의 정확도를 높이기 위해서 주어진 데이터를 예측 모델의 문제를 잘 표현할 수 있는 feature로 나타내야 한다.
  • 머신러닝 알고리즘을 동작하기 위해 데이터의 도메인 지식을 활용해 feature를 생성해야 한다.
  • Feature engineering을 통해 기전 데이터에서 더 많은 데이터를 추출할 수 있다.
  • Feature engineering은 모델 성능에 미치는 영향이 크기 때문에 머신러닝 모델 사용에 있어서 중요하며 시간과 비용이 많이 든다.
  • Feature engineering으로 디자인된 artificial feature를 통해 알고리즘의 성능을 향상할 수 있다.

Feature Engineering 예시

Target data log transform

Target data를 그래프로 나타내기

sns.set_styple('white')
sns.set_color_codes(palette='deep')
f, ax = plt.subplots(figsize=(8,7))
# check the new distribution
sns.distplot(data['SalePrice'], color='b')  # 그래프 데이터 및 색상
ax.xaxis.grid(False)  # 세로 격자선 없음
ax.set(ylabel='Frequency')  # y축 이름
ax.set(xlabel='SalePrice')  # x축 이름
ax.set(title='SalePrice distribution')  # 그래프 이름  
sns.despine(trim=True, left=True)  # 테두리 속성
plt.show()

실행결과

Target data를 log 변환하기

sns.set_style('white')
sns.set_color_codes(palette='deep')
f, ax = plt.subplots(figsize=(8,7))
# Check the new distribution
sns.distplot(np, log1p(data['SalePrice']), color='b')  # log(1+x) 변환  
ax.xaxis.grid(False)  # 세로 격자선 없음
ax.set(ylabel='Frequency')
ax.set(xlabel='SalePrice')
ax.set(title='SalePrice distribution')
sns.despine(trim=True, left=True)
plt.show()

실행결과

새로운 feature 생성하기

Categorical data에서 특정 value 존재 여부 확인

data['BsmtFinType1'].unique()
data['BsmtFinType1_ALQ'] = 1 * (data['BmstFinType1']=='ALQ')  # BmstFinType1 요소가 ALQ인지 확인하는 column 추가
data['BsmtFinType1_ALQ'].unique()  # BmstFinType1_ALQ는 0과 1로 구성됨

실행결과

Numerical data에서 특정 value 존재 여부 확인

data['WoodDeckSF'].unique()
data['HasWoodDeck'] = (data['WoodDeckSF'] > 0) * 1  # WoodDeck공간이 있는지 확인
data['HasWoodDeck'].unique()  # HasWoodDeck은 0과 1로 구성됨

실행결과

특정 날짜 feature 생성

  • 생산 날짜, 유통기한 날짜가 있는 경우
  • 유통기한 - 생산날짜 = 실제 유통기한
data['YrSold'].head(5)  # 팔린 날짜
data['YearRemodAdd'].head(5)  # 리모델링 한 날짜  
data['YearSinceRemodel'] = data['YrSold'].astype(int) - data['YearRemodAdd'].astype(int)  
data['YearSinceRemodel'].head(5)  

실행결과

Numerical data의 사칙연산

data['OverallQual'].unique()  # 전반적인 마감 퀄리티
data['OverallCond'].unique()  # 전반적인 상태 퀄리티
data['Total_Home_Quality'] = data['OverallQual'] + data['OverallCond']  
data['Total_Home_Quality'].unique()

실행결과

0개의 댓글