웹사이트 검색

Python에서 데이터를 정규화하는 2가지 쉬운 방법


이 튜토리얼에서는 Python에서 데이터를 정규화하는 방법에 대해 알아봅니다. 정규화하는 동안 데이터의 규모를 변경합니다. 데이터는 가장 일반적으로 0-1 사이로 조정됩니다.

파이썬에서 데이터를 정규화해야 하는 이유는 무엇입니까?

기계 학습 알고리즘은 서로 다른 기능(변수)이 더 작은 규모일 때 더 잘 수행되거나 더 빨리 수렴되는 경향이 있습니다. 따라서 기계 학습 모델을 교육하기 전에 데이터를 정규화하는 것이 일반적입니다.

정규화는 또한 학습 프로세스가 기능의 규모에 덜 민감하도록 만듭니다. 결과적으로 훈련 후 더 나은 계수를 얻습니다.

크기를 다시 조정하여 기능을 훈련에 더 적합하게 만드는 이 프로세스를 기능 크기 조정이라고 합니다.

정규화 공식은 다음과 같습니다.

각 항목에서 최소값을 뺀 다음 결과를 범위로 나눕니다. 여기서 범위는 최대값과 최소값의 차이입니다.

Python에서 데이터를 정규화하는 단계

파이썬에서 데이터를 정규화하는 두 가지 다른 방법에 대해 논의할 것입니다.

첫 번째는 sklearn에서 'normalize()' 메서드를 사용하는 것입니다.

sklearn에서 normalize() 사용

sklearn에서 처리를 가져오는 것으로 시작하겠습니다.

from sklearn import preprocessing

이제 Numpy를 사용하여 배열을 만들어 보겠습니다.

import numpy as np
x_array = np.array([2,3,5,6,7,4,8,7,6])

이제 배열에서 normalize() 메서드를 사용할 수 있습니다. 이 메서드는 행을 따라 데이터를 정규화합니다. 작동 방식을 살펴보겠습니다.

normalized_arr = preprocessing.normalize([x_array])
print(normalized_arr)

완전한 코드

이 섹션의 전체 코드는 다음과 같습니다.

from sklearn import preprocessing
import numpy as np
x_array = np.array([2,3,5,6,7,4,8,7,6])
normalized_arr = preprocessing.normalize([x_array])
print(normalized_arr)

출력 :

[0.11785113, 0.1767767 , 0.29462783, 0.35355339, 0.41247896,
        0.23570226, 0.47140452, 0.41247896, 0.35355339]

이제 모든 값이 0에서 1 사이에 있음을 알 수 있습니다. 이것이 sklearn에서 normalize() 메서드가 작동하는 방식입니다.

이 방법을 사용하여 데이터 세트의 열을 정규화할 수도 있습니다. 다음에 어떻게 하는지 봅시다.

normalize()를 사용하여 데이터 세트의 열을 정규화합니다.

normalize()는 행을 따라 값만 정규화하므로 메서드를 적용하기 전에 열을 배열로 변환해야 합니다.

시연을 위해 California Housing 데이터 세트를 사용할 것입니다.

데이터 세트를 가져오는 것으로 시작하겠습니다.

import pandas as pd
housing = pd.read_csv("/content/sample_data/california_housing_train.csv")

다음으로 열을 선택하고 배열로 변환해야 합니다. total_bedrooms' 열을 사용하겠습니다.

from sklearn import preprocessing
x_array = np.array(housing['total_bedrooms'])
normalized_arr = preprocessing.normalize([x_array])
print(normalized_arr)

출력 :

[[0.01437454 0.02129852 0.00194947 ... 0.00594924 0.00618453 0.00336115]]

열을 배열로 변환하지 않고 데이터 세트를 정규화하는 방법은 무엇입니까?

처리를 위해 기능을 배열로 변환하지 않고 데이터 세트를 정규화하려고 하면 어떤 일이 발생하는지 살펴보겠습니다.

from sklearn import preprocessing
import pandas as pd
housing = pd.read_csv("/content/sample_data/california_housing_train.csv")
d = preprocessing.normalize(housing)
scaled_df = pd.DataFrame(d, columns=names)
scaled_df.head()

출력 :

여기서 값은 행을 따라 정규화되며 이는 매우 직관적이지 않을 수 있습니다. 행을 따라 정규화한다는 것은 기능 대신 각 개별 샘플이 정규화된다는 것을 의미합니다.

그러나 기능(컬럼)을 따라 정규화하는 메서드를 호출하면서 축을 지정할 수 있습니다.

축 매개변수의 값은 기본적으로 1로 설정됩니다. 값을 0으로 변경하면 정규화 프로세스가 열을 따라 발생합니다.

from sklearn import preprocessing
import pandas as pd
housing = pd.read_csv("/content/sample_data/california_housing_train.csv")
d = preprocessing.normalize(housing, axis=0)
scaled_df = pd.DataFrame(d, columns=names)
scaled_df.head()

출력 :

출력의 total_bedrooms 열이 위에서 배열로 변환한 다음 정규화한 후 얻은 열과 일치하는 것을 볼 수 있습니다.

MinMaxScaler()를 사용하여 Python에서 데이터 정규화

Sklearn은 데이터 정규화와 관련하여 또 다른 옵션인 MinMaxScaler를 제공합니다.

이것은 데이터 세트를 정규화하는 데 더 널리 사용되는 선택입니다.

다음은 MinMaxScaler를 사용하여 주택 데이터 세트를 정규화하는 코드입니다.

from sklearn import preprocessing
import pandas as pd
housing = pd.read_csv("/content/sample_data/california_housing_train.csv")
scaler = preprocessing.MinMaxScaler()
names = housing.columns
d = scaler.fit_transform(housing)
scaled_df = pd.DataFrame(d, columns=names)
scaled_df.head()

출력 :

출력의 값이 (0과 1) 사이에 있음을 알 수 있습니다.

MinMaxScaler는 기능 범위를 선택할 수 있는 옵션도 제공합니다. 기본적으로 범위는 (0,1)로 설정됩니다. 범위를 (0,2)로 변경하는 방법을 살펴보겠습니다.

from sklearn import preprocessing
import pandas as pd
housing = pd.read_csv("/content/sample_data/california_housing_train.csv")
scaler = preprocessing.MinMaxScaler(feature_range=(0, 2))
names = housing.columns
d = scaler.fit_transform(housing)
scaled_df = pd.DataFrame(d, columns=names)
scaled_df.head()

출력 :

출력 값은 이제 (0,2) 사이입니다.

결론

이들은 Python에서 데이터를 정규화하는 두 가지 방법입니다. 우리는 sklearn에서 데이터를 정규화하는 두 가지 방법을 다루었습니다. 저희와 함께 즐거운 학습이 되셨기를 바랍니다!