데이터의 크기 조절
장점
-특성들을 비교 분석하기 쉽게 만들어준다.
-Linear Model, Neural network Model 등에서 학습의 안정성과 속도를 개선시킨다.
단점
-하지만 특성에 따라 원래 범위를 유지하는게 좋을 경우는 scaling을 하지 않아도 된다.
from sklearn.datasets import load_breast_cancer
cancer = load_breast_cancer()
cancer.keys()
# malignant : 암
# benign : 암이 아니다
cancer['target_names']
cancer['feature_names']
-문제데이터
import pandas as pd
# 문제데이터
X = pd.DataFrame(cancer['data'], columns= cancer['feature_names'])
X.head()
-정답데이터
# 정답데이터
y = pd.DataFrame(cancer['target'], columns=['cancer'])
y.head()
from sklearn.preprocessing import RobustScaler, StandardScaler, MinMaxScaler
# 1. 스케일링 모델 불러오기
rbs = RobustScaler()
# 2. 가지고있는 데이터로 스케일링 모델에 학습 → 어떤값이 어떻게 변하는지 파악
rbs.fit(X)
# 3. 파악된 규칙을 통해서 값을 변형
X_rbs = rbs.transform(X)
X.head()
X_rbs
-train과 test로 데이터 분리
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X_rbs,y)
-KNN모델 불러오기
from sklearn.neighbors import KNeighborsClassifier
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)
import warnings
warnings.filterwarnings(action='ignore')
from sklearn.model_selection import cross_val_score
cross_val_score(knn, X_train, y_train, cv = 5).mean()
-Standard
sds = StandardScaler()
sds.fit(X)
X_sds = sds.transform(X)
-MinMax
mms = MinMaxScaler()
mms.fit(X)
X_mms = mms.transform(X)
# 스케일러 사용 안함 : 0.92
# Robust 스케일러 사용 : 0.967
# Standard 스케일러 사용 : 0.969
# MinMax 스케일러 사용 : 0.955
# 분류는 정확도라는 지표를 사용
# 몇 개 중에 몇 개 맞췄는가 100개 중에 92개 맞춤 = 0.92
# 암 vs 암 아닌지
# 모델 알고리즘(규칙) : 모든 사람은 암이다
# 암 환자 데이터 95개, 암 환자가 아닌 데이터 5개 = 0.95
잘 보고 갑니다!