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())
Author And Source
이 문제에 관하여(19. 정규화), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ddaddo_data/19.-정규화저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)