logo

Sklearn의 StandardScaler

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() 메서드는 평균과 표준 편차를 저장합니다.

매개변수:

    복사(부울, 기본값 = True):-이 매개변수가 True로 설정된 경우 복사본을 피하고 대신 샘플의 크기를 조정해 보십시오. 이것이 반드시 제자리에서 작동한다고 보장되는 것은 아닙니다. 예를 들어 입력이 NumPy 배열 또는 scipy.sparse CSR 매트릭스 형식이 아닌 경우 함수는 여전히 복사본을 반환할 수 있습니다.with_mean(부울, 기본값 = True):-매개변수가 True로 설정된 경우 데이터를 중앙에 배치한 후 크기를 조정합니다. 희소 행렬에 적용하면 실패합니다(예외가 발생함). 대부분의 사용 환경에서 램에 맞지 않을 것으로 예상되는 조밀한 행렬을 중앙에 배치해야 하기 때문입니다.with_std(부울, 기본값 = True):-이 매개변수는 true로 설정된 경우 입력 데이터를 단위 분산으로 조정합니다(또는 단위 표준편차를 만든다고 말할 수 있음).

속성:

    scale_ ((n_features,) 또는 None 형태의 ndarray):-데이터는 평균과 단위 분산이 0인 각 기능에 대해 상대적으로 확장됩니다.평균_((n_features,) 또는 None 형태의 ndarray):-모든 기능에 대한 훈련 데이터 세트의 평균 값입니다. with_mean 인수가 False로 설정된 경우 이 값은 None과 같습니다.var_ ((n_features,) 또는 None 형태의 ndarray):-훈련 데이터세트의 각 기능의 분산 값입니다. 특징의 규모를 결정하는 데 사용됩니다. with_std 인수가 False로 설정된 경우 이 값은 None과 같습니다.n_features_in_(_int 유형):-이 속성은 피팅 시 발견된 특징의 수를 제공합니다.feature_names_in_ ((n_features_in_,) 형태의 ndarray):-이 속성은 피팅 중에 이름으로 식별되는 기능입니다. X는 모든 기능 이름이 문자열 데이터 유형인 경우에만 정의됩니다.n_samples_seen_ ( int 유형 또는 (n_features,) 형태의 ndarray):-이는 추정기가 각 기능에 대해 검사한 샘플 수를 제공합니다.

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]