데이터 표현과 특성 공학
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.3 반복적 특성 선택
특성의 수가 각기 다른 일련의 모델이 만들어진다.
재귀적 특성 제거
다른 방법들보다 계산 비용이 훨씬 많이 든다.
select = RFE(RandomForestClassifier(n_estimators=100, random_state=42), n_features_to_select=40)
4.6 전문가 지식 활용
'python 및 머신러닝 > 파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글
scikit-learn 책 정리 (0) | 2017.09.18 |
---|---|
파이썬 라이브러리를 활용한 머신러닝 2장~6장 정리 (1) | 2017.08.30 |
파이썬 라이브러리를 활용한 머신러닝 5장 (0) | 2017.08.28 |
파이썬 라이브러리를 활용한 머신러닝 3장 (0) | 2017.08.18 |
파이썬 라이브러리를 활용한 머신러닝 2장 (0) | 2017.08.09 |