StandardScaler를 언제, 어떻게 사용하나요?
주어진 데이터 세트의 특징이 해당 범위 내에서 크게 변동하거나 다양한 측정 단위로 기록되면 StandardScaler가 그림을 입력합니다.
StandardScaler를 통해 평균이 0으로 감소한 후 데이터의 분산이 1로 조정됩니다. 그러나 데이터의 경험적 평균과 표준편차를 결정할 때 데이터에 존재하는 이상치는 특성 값의 스펙트럼을 감소시키는 중요한 영향을 미칩니다.
시작 기능의 이러한 변형으로 인해 많은 기계 학습 알고리즘에 문제가 발생할 수 있습니다. 예를 들어 거리를 계산하는 알고리즘의 경우 데이터 세트의 기능 중 하나라도 범위가 크거나 완전히 다른 값을 갖는 경우 데이터 세트의 특정 기능이 거리 계산을 제어합니다.
sklearn의 StandardScaler 기능은 값이 서로 다른 범위에 있는 데이터 세트의 변수가 모델의 맞춤 매개변수 및 훈련 기능에 동일한 기여를 하지 않으며 해당 모델을 사용한 예측에 편향을 초래할 수도 있다는 이론을 기반으로 합니다.
따라서 기계 학습 모델에 기능을 포함하기 전에 데이터를 정규화해야 합니다(μ = 0, σ = 1). 이러한 잠재적인 문제를 해결하기 위해 일반적으로 기능 엔지니어링의 표준화가 사용됩니다.
Sklearn을 사용한 표준화
sklearn.preprocessing.StandardScaler(*, copy = True, with_mean = True, with_std = True)
특성에서 평균을 제거하고 단위 분산으로 크기를 조정하면 이 함수를 사용하여 특성이 표준화됩니다.
특성의 표준 점수를 계산하는 공식은 z = (x - u) / s입니다. 여기서 u는 훈련 특성의 평균(또는 with_mean = False인 경우 0)이고 s는 샘플의 표준 편차(또는 with_std = False인 경우 1)입니다. ).
훈련 세트의 특징에 대한 관련 통계를 계산함으로써 각 특징에 센터링 및 스케일링이 독립적으로 적용됩니다. 그런 다음, 변환()을 사용하는 이후 샘플에 사용하기 위해 fit() 메서드는 평균과 표준 편차를 저장합니다.
매개변수:
속성:
StandardScaler 클래스의 메서드
fit(X[, y, 샘플_중량]) | 이 방법은 나중에 데이터 크기 조정에 사용할 평균과 표준 편차를 계산합니다. |
fit_transform(X[, y]) | 이 방법은 데이터의 매개변수를 맞춘 다음 변환합니다. |
get_feature_names_out([input_features]) | 이 방법은 변환에 대한 기능 이름을 얻습니다. |
get_params([깊은]) | 이 방법은 특정 추정기의 매개변수를 제공합니다. |
inverse_transform(X[, 복사]) | 데이터의 크기를 원래 형식과 일치하도록 줄입니다. |
부분적합(X[, y, 표본_중량]) | X의 평균과 표준편차는 나중에 스케일링하기 위해 온라인으로 계산됩니다. |
set_params(**매개변수) | 이 방법은 추정기의 매개변수 값을 설정하는 데 사용됩니다. |
변환(X[, 복사]) | 이 메서드는 클래스에 이미 저장된 매개변수를 사용하여 데이터를 변환합니다. |
StandardScaler의 예
먼저 필요한 라이브러리를 가져옵니다. StandardScaler 기능을 사용하려면 Sklearn 라이브러리를 가져와야 합니다.
그런 다음 붓꽃 데이터 세트를 로드합니다. sklearn.datasets 라이브러리에서 IRIS 데이터세트를 가져올 수 있습니다.
StandardScaler 클래스의 객체를 생성하겠습니다.
독립 기능과 대상 기능을 분리합니다.
데이터 세트에 대한 변환을 구현하기 위해 fit 변환() 메소드를 사용할 것입니다.
통사론:
object_ = StandardScaler() object_.fit_transform(features)
처음에 위에서 언급한 구문에 따라 StandardScaler() 메서드의 인스턴스를 구축했습니다. 추가적으로 제공된 객체와 함께 fit_transform()을 사용하여 데이터를 표준화합니다.
암호
# Python program to standardize the data # Importing the required library from sklearn.preprocessing import StandardScaler from sklearn.datasets import load_iris # Loading the dataset X, Y = load_iris(return_X_y = True) # Printing 3 rows of original data print(X[:3, :]) # Creating an object of the StandardScaler class std_scaler = StandardScaler() # Printing 3 rows of the transformed data print(std_scaler.fit_transform(X)[:3, :]) print(std_scaler.mean_)
산출
[[5.1 3.5 1.4 0.2] [4.9 3. 1.4 0.2] [4.7 3.2 1.3 0.2]] [[-0.90068117 1.01900435 -1.34022653 -1.3154443 ] [-1.14301691 -0.13197948 -1.34022653 -1.3154443 ] [-1.38535265 0.32841405 -1.39706395 -1.3154443 ]] [5.84333333 3.05733333 3.758 1.19933333]