랜덤 포레스트 회귀 준비하기

PySpark로 하는 Feature Engineering

John Hogue

Lead Data Scientist, General Mills

특징에 필요한 가정

랜덤 포레스트 회귀

  • 왜도/비정규? OK
  • 스케일 조정 없음? OK
  • 결측값? OK
  • 범주형 데이터? OK

가정

PySpark로 하는 Feature Engineering

추가된 특징

경제

  • 30년 모기지 금리

정부

  • 도시 중위 주택가격
  • 도시 주택 연식 비율
  • 도시 주택 면적 비율

사회

  • 워크 스코어
  • 바이크 스코어

계절성

  • 은행 공휴일
PySpark로 하는 Feature Engineering

특징 엔지니어링

시간 특징

  • 1년 데이터로는 가치 제한
  • 휴일 주간

비율·비중·합계

  • 비즈니스 맥락
  • 개인 맥락

확장된 특징

  • 비자유 형식 텍스트 열
  • 관측치 적은 항목 제거 필요
# 데이터 형태는?
print((df.count(), len(df.columns)))
(5000, 126)
PySpark로 하는 Feature Engineering

데이터프레임 열을 특징 벡터로

from pyspark.ml.feature import VectorAssembler
# 결측값 대체
df = df.fillna(-1)
# 벡터로 변환할 열 정의
features_cols = list(df.columns)
# 종속 변수를 목록에서 제거
features_cols.remove('SALESCLOSEPRICE')
PySpark로 하는 Feature Engineering

데이터프레임 열을 특징 벡터로

# 벡터 어셈블러 변환기 생성
vec = VectorAssembler(inputCols=features_cols, outputCol='features')

# 벡터 변환기를 데이터에 적용 df = vec.transform(df)
# 특징 벡터와 종속 변수만 선택 ml_ready_df = df.select(['SALESCLOSEPRICE', 'features'])
# 결과 확인 ml_ready_df.show(5)
+----------------+--------------------+
| SALESCLOSEPRICE|            features|
+----------------+--------------------+
|143000          |(125,[0,1,2,3,5,6...|
|190000          |(125,[0,1,2,3,5,6...|
|225000          |(125,[0,1,2,3,5,6...|
|265000          |(125,[0,1,2,3,4,5...|
|249900          |(125,[0,1,2,3,4,5...|
+----------------+--------------------+
only showing top 5 rows
PySpark로 하는 Feature Engineering

이제 머신 러닝을 시작할 준비가 되었습니다!

PySpark로 하는 Feature Engineering

Preparing Video For Download...