https://www.w3schools.com/python/python_ml_scale.asp
Scale Features
앞서 배웠던 Multiple Regression (다중 회귀)에서 사용한 차종의 크기와 무게에 따른 CO2 배출량 파일을 또 이용합니다.
Scale은 서로 단위가 전혀 다른 두가지 수치 즉 크기값과 무게값을 CO2 배출량에 영향을 주는 정도의 기준에 따라 둘을 비교할 수 있도록 동일한 단위값으로 바꿔주는 것입니다.
다양한 방법이 있지만 여기서는 standardization(표준화) 방법을 사용합니다.
표준화의 공식은 다음과 같습니다.
z = ( x - u ) / s
z는 결과값이고 x는 입력값입니다. u는 평균값이고 s는 표준편차값입니다.
그래서 위 표의 무게 값에 대한 표준화 값을 찾아보면 다음과 같습니다.
(790 - 1292.23) / 238.74 = -2.1
그리고 마찬가지로 크기 열의 처음 1.0 역시 표준화 값을 찾아보면,
이제 CO2 배출량에 대해서 크기와 무게를 비교할 수 있습니다.
파이썬의 sklearn 라이브러리에는 StandardScaler() 함수는 이러한 작업을 수행해 줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
|
import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()
df = pandas.read_csv("cars2.csv")
X = df[['Weight', 'Volume']]
scaledX = scale.fit_transform(X)
print(scaledX)
|
cs |
위의 코드에 대해서 간단히 설명을 하면 csv파일을 불러온 크기와 무게 열에 대해서 X라는 변수로 pandas의 data frame화를 한 다음, 이를 StandardScaler()함수의 fit_transform(X)를 적용하여 출력하면 모든 크기 열과 무게 열에 대해서 표준화 수치를 알려줍니다.
Predict CO2 Values
앞서 Multiple Regression(다중 회귀) 챕터에서도 이를 이용하여 임의의 크기/무게 값을 입력하면 CO2 배출량을 확인할 수 있지만 이번 챕터의 Standardization을 이용해도 임의의 크기/무게 값에 따라 CO2배출량을 예측할 수 있습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
import pandas
from sklearn import linear_model
from sklearn.preprocessing import StandardScaler
scale = StandardScaler()
df = pandas.read_csv("cars2.csv")
X = df[['Weight', 'Volume']]
y = df['CO2']
scaledX = scale.fit_transform(X)
regr = linear_model.LinearRegression()
regr.fit(scaledX, y)
scaled = scale.transform([[2300, 1.3]])
predictedCO2 = regr.predict([scaled[0]])
print(predictedCO2)
|
cs |
실제 동일한 방법입니다. 실제 크기/무게값을 입력하든 표준화된 값을 입력하든 결과는 동일합니다.