Python에서 데이터를 정규화하는 방법


종종 통계 및 기계 학습에서는 값의 범위가 0과 1 사이가 되도록 변수를 정규화합니다 .

변수를 정규화하는 가장 일반적인 이유는 일종의 다변량 분석을 수행하고(예: 여러 예측 변수와 반응 변수 간의 관계를 이해하고 싶고) 각 변수가 분석에 동일하게 기여하기를 원할 때입니다.

변수를 다양한 규모로 측정하면 분석에 동일하게 기여하지 않는 경우가 많습니다. 예를 들어 한 변수의 값이 0~100,000이고 다른 변수의 값이 0~100인 경우 분석에서는 범위가 큰 변수에 더 큰 가중치가 할당됩니다.

변수를 표준화함으로써 각 변수가 분석에 동일하게 기여하는지 확인할 수 있습니다.

0과 1 사이의 값을 정규화하려면 다음 공식을 사용할 수 있습니다.

x 노름 = (x i – x 최소 ) / (x 최대 – x 최소 )

금:

  • x norm : 데이터세트의 i번째 정규화된 값
  • x i : 데이터세트의 i번째
  • x max : 데이터 세트의 최소값
  • x min : 데이터세트의 최대값

다음 예제에서는 Python에서 하나 이상의 변수를 정규화하는 방법을 보여줍니다.

예시 1: NumPy 배열 정규화

다음 코드는 NumPy 배열의 모든 값을 정규화하는 방법을 보여줍니다.

 import numpy as np 

#create NumPy array
data = np. array ([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]])

#normalize all values in array
data_norm = (data - data. min ())/ (data. max () - data. min ())

#view normalized values
data_norm

array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379,
        0.43103448, 0.5862069, 0.74137931, 0.77586207, 0.86206897,
        0.89655172, 0.98275862, 1. ]])

정규화된 배열의 각 값은 이제 0과 1 사이입니다.

예 2: Pandas DataFrame의 모든 변수 정규화

다음 코드는 Pandas DataFrame의 모든 변수를 정규화하는 방법을 보여줍니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#normalize values in every column
df_norm = (df-df. min ())/ (df. max () - df. min ())

#view normalized DataFrame
df_norm

        points assists rebounds
0 0.764706 0.125 0.857143
1 0.000000 0.375 0.428571
2 0.176471 0.375 0.714286
3 0.117647 0.625 0.142857
4 0.411765 1.000 0.142857
5 0.647059 0.625 0.000000
6 0.764706 0.625 0.571429
7 1.000000 0.000 1.000000

각 열의 각 값은 이제 0과 1 사이입니다.

예 3: Pandas DataFrame의 특정 변수 정규화

다음 코드는 Pandas DataFrame에서 특정 변수를 정규화하는 방법을 보여줍니다.

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

define columns to normalize
x = df. iloc [:,0:2]

#normalize values in first two columns only
df. iloc [:,0:2] = (xx. min ())/ (x. max () - x. min ())

#view normalized DataFrame
df

	points assists rebounds
0 0.764706 0.125 11
1 0.000000 0.375 8
2 0.176471 0.375 10
3 0.117647 0.625 6
4 0.411765 1.000 6
5 0.647059 0.625 5
6 0.764706 0.625 9
7 1.000000 0.000 12

처음 두 열의 값만 정규화됩니다.

추가 리소스

다음 튜토리얼에서는 데이터 정규화에 대한 추가 정보를 제공합니다.

0과 1 사이의 데이터를 정규화하는 방법
0에서 100 사이의 데이터를 정규화하는 방법
표준화 또는 정규화: 차이점은 무엇입니까?

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다