누구든지 StandardScaler를 설명 할 수 있습니까?
나는 이해할 수 없습니까 페이지 의을 StandardScaler
의 문서에 sklearn
.
누구든지 이것을 간단한 용어로 설명 할 수 있습니까?
기본 개념 StandardScaler
은 분포가 평균 값 0과 표준 편차 1을 갖도록 데이터를 변환한다는 것입니다. 데이터 분포가 주어지면 데이터 세트의 각 값은 표본 평균 값을 뺀 다음 전체 데이터 세트의 표준 편차입니다.
주요 아이디어는 기계 학습 기술을 적용하기 전에 기능 을 정규화 / 표준화 ( mean = 0
및 standard deviation = 1
)하는 것입니다.
명심해야 할 중요한 사항 중 하나는 대부분의 scikit-learn
모델 / 클래스 / 함수 X
가 dimension / shape 의 행렬 을 입력으로 기대한다는 것 [number_of_samples, number_of_features]
입니다. 이건 매우 중요합니다. 일부 다른 라이브러리는 역을 입력으로 기대합니다.
StandardScaler()
특성 (X의 각 열, 개별적으로 !!!)을 정규화하여 각 열 / 특성 / 변수가 mean = 0
및 standard deviation = 1
.
예:
from sklearn.preprocessing import StandardScaler
import numpy as np
# 4 samples/observations and 2 variables/features
data = np.array([[0, 0], [1, 0], [0, 1], [1, 1]])
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
print(data)
[[0, 0],
[1, 0],
[0, 1],
[1, 1]])
print(scaled_data)
[[-1. -1.]
[ 1. -1.]
[-1. 1.]
[ 1. 1.]]
각 기능 (열)의 평균이 0인지 확인합니다.
scaled_data.mean(axis = 0)
array([0., 0.])
각 기능 (열)의 표준이 1인지 확인합니다.
scaled_data.std(axis = 0)
array([1., 1.])
수학 :
UPDATE 08/2019 : 입력 매개 변수 Concering with_mean
과 with_std
로는 False
/ True
, 여기에 대한 답변을 제공 한 : https://stackoverflow.com/a/57381708/5025009
계산 방법 :
여기에서 자세한 내용을 읽을 수 있습니다.
StandardScaler performs the task of Standardization. Usually a dataset contains variables that are different in scale. For e.g. an Employee dataset will contain AGE column with values on scale 20-70 and SALARY column with values on scale 10000-80000.
As these two columns are different in scale, they are Standardized to have common scale while building machine learning model.
This is useful when you want to compare data that correspond to different units. In that case, you want to remove the units. To do that in a consistent way of all the data, you transform the data in a way that the variance is unitary and that the mean of the series is 0.
The answers above are great, but I needed a simple example to alleviate some concerns that I have had in the past. I wanted to make sure it was indeed treating each column separately. I am now reassured and can't find what example had caused me concern. All columns ARE scaled separately as described by those above.
CODE
import pandas as pd
import scipy.stats as ss
from sklearn.preprocessing import StandardScaler
data= [[1, 1, 1, 1, 1],[2, 5, 10, 50, 100],[3, 10, 20, 150, 200],[4, 15, 40, 200, 300]]
df = pd.DataFrame(data, columns=['N0', 'N1', 'N2', 'N3', 'N4']).astype('float64')
sc_X = StandardScaler()
df = sc_X.fit_transform(df)
num_cols = len(df[0,:])
for i in range(num_cols):
col = df[:,i]
col_stats = ss.describe(col)
print(col_stats)
OUTPUT
DescribeResult(nobs=4, minmax=(-1.3416407864998738, 1.3416407864998738), mean=0.0, variance=1.3333333333333333, skewness=0.0, kurtosis=-1.3599999999999999)
DescribeResult(nobs=4, minmax=(-1.2828087129930659, 1.3778315806221817), mean=-5.551115123125783e-17, variance=1.3333333333333337, skewness=0.11003776770595125, kurtosis=-1.394993095506219)
DescribeResult(nobs=4, minmax=(-1.155344148338584, 1.53471088361394), mean=0.0, variance=1.3333333333333333, skewness=0.48089217736510326, kurtosis=-1.1471008824318165)
DescribeResult(nobs=4, minmax=(-1.2604572012883055, 1.2668071116222517), mean=-5.551115123125783e-17, variance=1.3333333333333333, skewness=0.0056842140599118185, kurtosis=-1.6438177182479734)
DescribeResult(nobs=4, minmax=(-1.338945389819976, 1.3434309690153527), mean=5.551115123125783e-17, variance=1.3333333333333333, skewness=0.005374558840039456, kurtosis=-1.3619131970819205)
Following is a simple working example to explain how standarization calculation works. The theory part is already well explained in other answers.
>>>import numpy as np
>>>data = [[6, 2], [4, 2], [6, 4], [8, 2]]
>>>a = np.array(data)
>>>np.std(a, axis=0)
array([1.41421356, 0.8660254 ])
>>>np.mean(a, axis=0)
array([6. , 2.5])
>>>from sklearn.preprocessing import StandardScaler
>>>scaler = StandardScaler()
>>>scaler.fit(data)
>>>print(scaler.mean_)
#Xchanged = (X−μ)/σ WHERE σ is Standard Deviation and μ is mean
>>>z=scaler.transform(data)
>>>z
Calculation
As you can see in the output, mean is [6. , 2.5] and std deviation is [1.41421356, 0.8660254 ]
Data is (0,1) position is 2 Standardization = (2 - 2.5)/0.8660254 = -0.57735027
Data in (1,0) position is 4 Standardization = (4-6)/1.41421356 = -1.414
Result After Standardization
Check Mean and Std Deviation After Standardization
참고 : -2.77555756e-17은 0에 매우 가깝습니다.
참고 문헌
를 적용 StandardScaler()
하면 X의 각 열 은 평균이 0이고 표준 편차가 1이됩니다.
이 페이지의 다른 사용자가 수식을 나열합니다.
근거 : 일부 알고리즘에는 데이터가 이와 같이 표시 되어야 합니다 ( sklearn 문서 참조 ).
참고 URL : https://stackoverflow.com/questions/40758562/can-anyone-explain-me-standardscaler
'IT Share you' 카테고리의 다른 글
트위터 부트 스트랩 다중 모달 오류 (0) | 2020.12.13 |
---|---|
Docker Hello-world : 인증 오류 (0) | 2020.12.13 |
다른 SQL Server에 연결하기위한 T-SQL 구문은 무엇입니까? (0) | 2020.12.13 |
도구 사용-장치로 누출 (0) | 2020.12.13 |
Android는 홈 화면에 바로 가기를 만듭니다. (0) | 2020.12.13 |