19. 정규화

  • 각 변수에 들어 있는 숫자 데이터의 상대적 크기 차이 때문에 머신러닝 분석 결과가 달라질 수 있음
  • 숫자 데이터의 상대적인 크기 차이를 제거할 필요가 있음

1) 정규화 - 해당 열의 최대값으로 나누는 방법

: 각 열에 속하는 데이터 값을 동일한 크기 기준으로 나눈 비율로 나타내는 것
: 정규화를 거친 데이터의 범위는 0~1 또는 -1~1이 됨

import pandas as pd
import numpy as np

df = pd.read_csv('./auto-mpg.csv', header = None)
df.columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year',
          'origin', 'name']
df['horsepower'].replace('?', np.nan, inplace = True)
df.dropna(subset = ['horsepower'], axis = 0, inplace = True)
df['horsepower'] = df['horsepower'].astype('float')

print(df.horsepower.describe())

df.horsepower = df.horsepower/abs(df.horsepower.max())
# horsepower열의 값을 최대값으로 나누는 과정 (정규화 과정)

print(df.horsepower.head())
print(df.horsepower.describe())

2) 정규화 - 해당 열의 (최대값-최소값)으로 나누는 방법

: 각 값에서 해당 열의 최소값을 뺀 것(값 - 최소값)을
해당 열의 (최대값 - 최소값)으로 나누는 방법

import pandas as pd
import numpy as np

df = pd.read_csv('./auto-mpg.csv', header = None)
df.columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model year',
          'origin', 'name']
df['horsepower'].replace('?', np.nan, inplace = True)
df.dropna(subset = ['horsepower'], axis = 0, inplace = True)
df['horsepower'] = df['horsepower'].astype('float')

print(df.horsepower.describe())
print('\n')

min_x = df.horsepower - df.horsepower.min()
# 열의 값에서 최소값을 뺌

min_max = df.horsepower.max() - df.horsepower.min()
# 최대값에서 최소값을 뺌

df.horsepower = min_x / min_max
# (값 - 최소값) / (최대값 - 최소값)

print(df.horsepower.head())
print('\n')
print(df.horsepower.describe())

좋은 웹페이지 즐겨찾기