Book Title : Introduction to Machine Learning with Python
- 파이썬 라이브러리를 활용한 머신러닝 -
지은이 : 안드레아스 뮐러, 세라 가이도
옮긴이 : 박해선
출판사 : 한빛미디어
코드 출처
https://github.com/rickiepark/introduction_to_ml_with_python
개요
책을 읽고 줄거리를 요약
이미 알고 있는 부분은 빨리 넘어가고 모르는 부분 위주로 요약
3.1 비지도 학습의 종류
비지도 변환
- 데이터를 새롭게 표현하여 사람이나 다른 머신러닝 알고리즘이 원래 데이터보다 쉽게 해석할 수 있도록 만드는 알고리즘
- 비지도 변환이 널리 사용되는 분야는 차원 축소(dimenstionality reduction)
군집 알고리즘
- 데이터를 비슷한 것끼리 그룹으로 묶는 것
3.3.1 여러 가지 전처리 방법
- RobustScaler : 특성들이 같은 스케일을 갖게 되지만 평균 대신 중앙값을 사용 ==> 극단값에 영향을 받지 않음
- StandardScalar는 각 특성의 평균을 0, 분산을 1로 변경하여 모든 특성이 같은 크기를 가지게 함, 이 방법은 특성의 최솟값과 최댓값 크기를 제한하지 않음
- MinMaxSclaer : 매우 다른 스케일의 범위를 0과 1사이로 변환
- Nomalizer : 특성 벡터의 유클리디안 길이가 1이 되도록 데이터 포인트 조정, 길이 상관없고 데이터의 방향만이 중요할 때 많이 사용
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
cancer = load_breast_cancer()
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state = 0)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
print("스케일 조정 전 특성별 최소값 :\n", X_train.min(axis = 0)[:3])
print("스케일 조정 전 특성별 최소값 :\n", X_train.max(axis = 0)[:3])
print("스케일 조정 전 특성별 최소값 :\n", X_train_scaled.min(axis = 0)[:3])
print("스케일 조정 전 특성별 최소값 :\n", X_train_scaled.max(axis = 0)[:3])
'''
스케일 조정 전 특성별 최소값 :
[ 6.981 9.71 43.79 ]
스케일 조정 전 특성별 최소값 :
[ 28.11 33.81 188.5 ]
스케일 조정 전 특성별 최소값 :
[0. 0. 0.]
스케일 조정 전 특성별 최소값 :
[1. 1. 1.]
'''
3.3.3 QuantileTransformer 와 PowerTransformer
- QuantileTransformer : 기본적으로 1000개의 분위를 사용하여 데이터를 균등하게 분포시킴
3.3.4 훈련 데이터와 테스트 데이터의 스케일을 같은 방법으로 조정
- 지도 학습 모델에서 테스트 세트와 훈련 세트에는 같은 변환을 해줘야 함
- 분포도가 동일해야 함
from sklearn.svm import SVC
from sklearn.preprocessing import MinMaxScaler
X_train, X_test, y_train, y_test = train_test_split(cancer.data, cancer.target, random_state = 0)
# 전처리 전
svm = SVC(gamma='auto')
svm.fit(X_train, y_train)
print("정확도", svm.score(X_test, y_test))
# 정확도 0.6293706293706294
# 전처리 후
scaler = MinMaxScaler()
scaler.fit(X_train)
X_train_scaled = scaler.transform(X_train)
X_test_scaled = scaler.transform(X_test)
svm.fit(X_train_scaled, y_train)
print("정확도", svm.score(X_test_scaled, y_test))
# 정확도 0.951048951048951
'Study > Introduction to ML with python - 한빛' 카테고리의 다른 글
[Book] 4. 비지도학습과 데이터 전처리 - (1) (0) | 2022.02.25 |
---|---|
[Book] 3. 비지도학습과 데이터 전처리 - (3) (0) | 2022.02.20 |
[Book] 3. 비지도학습과 데이터 전처리 - (2) (0) | 2022.02.17 |
[Book] 2. 지도학습 - (2) (0) | 2022.02.13 |
[Book] 1. 소개 (0) | 2022.02.06 |