Book Title : Introduction to Machine Learning with Python
- 파이썬 라이브러리를 활용한 머신러닝 -
지은이 : 안드레아스 뮐러, 세라 가이도
옮긴이 : 박해선
출판사 : 한빛미디어
코드 출처
https://github.com/rickiepark/introduction_to_ml_with_python
4. 비지도 학습과 데이터 전처리 - (1)
특성 공학(feature engineering)
- 특정 애플리케이션에 가장 적합한 데이터 표현을 찾는 것
4.1 범주형 변수
- 연속적인 데이터가 아니라 카테고리컬한 변수
4.1.1 원- 핫 인코딩(one-hot-encoding)
- 원 아웃 오브 엔 인코딩(one-out-of-N encoding)
- 가변수 (dummy variable)
- 가변수는 범주형 변수를 0또는 1 값을 가진 하나 이상의 새로운 특성으로 바꾼 것
- pandas.get_dummies()로 쉽게 인코딩이 가능함
4.1.2 숫자로 표현된 범주형 특성
- 특성 값이 숫자라고 해서 연속형 특성으로 다뤄야 하는 건 아님
4.2 OneHotEncoder 와 ColumnTransformer
scikit-learn으로 범주형 변수 다루기
- 원-핫 인코딩은 사이킷런에도 OneHotEncoder 클래스로 구현되어 있습니다.
- 모든 특성을 범주형이라고 가정하기 때문에 바로 적용할 수 없음, 따라서 ColumnTransformer 클래스가 필요함
- ColumnTransformer 설명은 생략
4.4 구간 분할, 이산화 그리고 선형 모델, 트리 모델
- 데이터를 가장 잘 표현하는 방법은 데이터가 가진 의미뿐 아니라 어떤 모델을 사용하는지에 따라 다름
from sklearn.linear_model import LinearRegression
from sklearn.tree import DecisionTreeRegressor
X, y = mglearn.datasets.make_wave(n_samples = 120)
line = np.linspace(-3, 3, 1000, endpoint = False).reshape(-1 ,1)
reg = DecisionTreeRegressor(min_samples_leaf=3).fit(X, y)
plt.plot(line, reg.predict(line), label = 'decisionTree')
reg = LinearRegression().fit(X, y)
plt.plot(line, reg.predict(line), '--', label = 'linear regression')
plt.plot(X[:, 0], y, 'o', c = 'k')
plt.ylabel('reg output')
plt.xlabel('input feature')
plt.legend(loc = 'best')
- 이 특성의 입력값 범위(-3 ~ 3)가 나뉘어 여러 구간으로, 예시로 10개로 되어 있다고 생각해보면 데이터 포인트가 어떤 구간에 속하는지 나타낼 수 있음
- 구간의 경계를 정의하는 데는 여러 방법이 있음
- KBinsDiscretizer 클래스에 이런 방법들이 구현되어 있음
from sklearn.preprocessing import KBinsDiscretizer
kb = KBinsDiscretizer(n_bins = 10, strategy = 'uniform')
kb.fit(X)
print("bin edges :\n", kb.bin_edges_)
- 사진의 설명으로는 첫 번쨰 구간은 특성의 값이 -2.966부터 -2.378까지 모든 데이터 포인트를 담은
- bin_edges_ 는 특성별로 경곘값이 저장
X_binned = kb.transform(X)
print(X[:10])
X_binned.toarray()[:10]
- 사진의 설명으로는 첫번째 -0.75는 네 번째 구간에 들어 있음
- 결론적으로 일부 특성과 출력이 비선형 관계지만, 용량이 매우 크고 고차원 데이터셋이라 선형 모델을 사용해야 한다면 구간 분할이 모델 성능을 높이는 좋은 방법이 될 수 있음
'Study > Introduction to ML with python - 한빛' 카테고리의 다른 글
[Book] 5. 모델 평가와 성능 향상 - (1) (0) | 2022.03.01 |
---|---|
[Book] 4. 비지도학습과 데이터 전처리 - (2) (0) | 2022.02.27 |
[Book] 3. 비지도학습과 데이터 전처리 - (3) (0) | 2022.02.20 |
[Book] 3. 비지도학습과 데이터 전처리 - (2) (0) | 2022.02.17 |
[Book] 3. 비지도학습과 데이터 전처리 - (1) (0) | 2022.02.15 |