sklearn.preprocessing import StandardScaler
sklearn에서 제공하는 전처리 함수라이브러리인 preprocessing에서 scale 과 StandardScaler 함수에 대해 알아본다.
먼저 scale 함수
preprocessing.scale(X, axis = 0, with_mean=True, with_std=True, copy=True)
매개변수 :
- X : 데이터를 중앙에 놓고 크기를 조정한다. (입력 데이터)
- axis : int(기본 값 :0) 평균과 표준편차를 계산하는데 기준이 되는 축 지정 (예 : mxn 형태의 데이터면 axis = 0이면 각 데이터 행이고 axis = 1이면 특성축이다.)
- with_mean : (boolean , 기본값 :True) 참이면 스케일링을 하기전에 데이터의 중심을 맞춘다. 즉 샘플 – 샘플평균 합이 0이됨
- with_std :(boolean, 기본값 :True) 참이면 데이터를 분산,표준편차를 1로 조정한다.
- copy : (boolean, 기본값:True) 복사본
사용 코드 :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
from sklearn import preprocessing import numpy as np X_train = np.array([[ 1., -1., 2.], [ 2., 0., 0.], [ 0., 1., -1.], [0, 1, 1]]) X_scaled = preprocessing.scale(X_train) #매개변수 : axis,with_mean,with_std,copy print("형태 :",np.shape(X_scaled)) print(X_scaled.mean(axis=0)) print(X_scaled.std(axis=0)) print(X_scaled.mean(axis=1)) print(X_scaled.std(axis=1)) |

StandardScaler 함수
StandardScaler(copy =True, with_mean=True, with_std=True)
매개변수 :
- copy : (boolean, 기본값:True) 복사본 사용
- with_mean : (boolean, 기본값:True) 참이면 스케일링을 하기전에 데이터의 중심을 맞춘다. 희소행렬을 중심으로 놓기 때문에 밀도가 높다.
- with_std : (boolean, 기본값:True) True이면 데이터를 분산,표준편차 1로만든다.
속성:
- scale_ : (ndarray or None, shape(n_features)) 기능 당 데이터의 상대적인 비율 조정 ( 표준편차 ) 매개변수 with_std=False로 주면 이 속성은 None 을 출력함.
- mean_ : 기대치(평균) 이도 마찬가지로 with_mean=False 이면 None 출력
- var_: 분산 with_std=False 이면 None 출력
- n_samples_seen : (int 또는 배열, shape(n_features,) 그냥 이 처리에 사용된 샘플 수가 몇개냐 인것을 출력하는 함수
사용코드 :
|
1 2 3 4 5 6 7 8 9 10 11 |
data = np.array([[1],[2],[3],[4],[5]]) scaler = StandardScaler() print(scaler.fit(data)) print("mean_ :",scaler.mean_) print("std_ :",scaler.scale_) # np.sqrt(Var(data)) 표준편차 print("var_ :",scaler.var_) print("이 처리에 사용된 샘플 수 :",scaler.n_samples_seen_) print("(x - E[x]) / std 로 전처리된 배열 :",scaler.transform(data)) |

scaler.fit은 그 데이터들에 의해 연산되는 함수고
scaler.transform은 위의 연산들을 가지고 변환을 시키는 것.