본문 바로가기
python 및 머신러닝/파이썬 라이브러리를 활용한 머신러닝

파이썬 라이브러리를 활용한 머신러닝 4장

by java개발자 2017. 8. 25.

데이터 표현과 특성 공학


4.1 범주형 변수

4.1.1 원-핫-인코딩(가변수)

 특성

 변환

 a

 b

 c

 d

 a

 ==>

 1

 0

 0

 0

 b

 

 0

 1

 0

 0

 c

 

 0

 0

 1

 0

 b

 

 0

 1

 0

 0

 d

 

 0

 0

 0

 1

data_dummies = pd.get_dummies(data)    # 문자로된 범주형 변수에만 적용 가능


4.1.2 숫자로 표현된 범주형 특성

특성

 변환

 특성1

 특성2 

 특성3

 특성4

 0

 ==>

 1

 0

 0

 0

 1

 

 0

 1

 0

 0

 2

 

 0

 0

 1

 0

 1

 

 0

 1

 0

 0

 3

 

 0

 0

 0

 1

숫자특성도 인코딩하기 위해

방법1

demo_df['숫자특성'] = demo_df['숫자특성'].astype(str)

방법2

pd.get_dummies(demo_df, columns=['숫자 특성', '숫자 특성2'])


4.2 구간 분할, 이산화 그리고 선형 모델, 트리 모델

which_bin = np.digitize(X, bins=bins)

encoder = sklearn.preprocessing.OneHotEncoder(sparse=False)    #숫자로된 범주형 변수에만 적용 가능

encoder.fit(which_bin)

X_binned = encoder.transform(which_bin)


4.3 상호작용과 다항식

특성을 풍부하게 나타내기 위해, 원본 데이터에 상호작용과 다항식을 추가하는 것이다.


poly = sklearn.preprocessing.PolynomialFeatures(degree=10, include_bias=False)

poly.fit(X)

X_poly = poly.transform(X)


svr = sklearn.svm.SVR(gamma=1).fit(X, y)

svr.predict(line)

4.4 일변량 비선형 변환

log, exp, sin 같은 수학 함수를 적용하는 방법도 특성 변환에 유용하다.

대부분의 모델은 각 특성이 (회귀에서는 타깃도) 정규분포와 비슷할 때 최고의 성능을 낸다.


4.5 특성 자동 선택

일변량 통계, 모델 기반 선택, 반복적 선택

4.5.1 일변량 통계

분산분석, p-value


select = sklearn.feature_selection.SelectPercentile(percentile=50)

select.fit(X_train, y_train)

X_train_selected = select.transform(X_train)

mask = select.get_support()

print(mask)


4.5.2 모델 기반 특성 선택
지도 학습 머신러닝 모델을 사용하여 특성의 중요도를 평가해서 가장 중요한 특성들만 선택한다.
특성 선택에 사용하는 지도 학습 모델은 최종적으로 사용할 지도 학습 모델과 같을 필요는 없다.

select = sklearn.feature_selection.SelectFromModel(RandomForestClassifier(n_estimators=100, random_state=42), threshold="median")


4.5.3 반복적 특성 선택

특성의 수가 각기 다른 일련의 모델이 만들어진다.

재귀적 특성 제거

다른 방법들보다 계산 비용이 훨씬 많이 든다.


select = RFE(RandomForestClassifier(n_estimators=100, random_state=42), n_features_to_select=40)


4.6 전문가 지식 활용