Pandas
데이터 전처리 - 정규화
김천종
2022. 11. 8. 21:00
반응형
데이터셋에 변수들의 숫자 데이터 크기의 상대적 차이 떄문에 머신러닝 분석 결과가 달라질 수 있다.
ex) A변수는 0 ~ 10000 의 범위를 가지로 B변수는 0~10의 범위를 가질 때 상대적으로 큰 값인 A변수가 머신러닝 분석 결과에 더 큰 영향을 미친다.
따라서 이러한 데이터의 상대적인 크기 차이를 제거해야한다.
데이터를 각 열에 속하는 동일한 크기 기준으로 나눈 비율로 표현하는 것을 정규화(normalization)이라고 한다.
정규화를 거치면 데이터의 범위는 0~1 or -1~1 이 된다.
### 정규화 방법 1 ###
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
### 정규화 ###
# 방법 1 #
# 각 열의 데이터 값을 각 열의 최대값으로 나누는 방법 #
df.horsepower_normal1 = df.horsepower / abs(df.horsepower.max())
# horesepower 열의 원소를 그 열의 최대값의 절대값으로 나눈다.
print(df.horsepower)
'''
0 130.0
1 165.0
2 150.0
3 150.0
4 140.0
...
393 86.0
394 52.0
395 84.0
396 79.0
'''
print(df.horsepower_normal1)
'''
[392 rows x 3 columns]
0 0.565217
1 0.717391
2 0.652174
3 0.652174
4 0.608696
...
393 0.373913
394 0.226087
395 0.365217
396 0.343478
397 0.356522
'''
|
cs |
### 정규화 방법 2 ###
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# 방법 2 #
# 각 열의 최대값에서 최소값을 뺀 것을 분모로 두고
# 각 열의 데이터(원소)에서 각 열의 최소값을 뺀 것을 분자로 둬서
# 0~1 사이의 값을 얻는다. (정규화)
min_x = df.horsepower - df.horsepower.min()
# 열의 최소값으로 열의 원소를 뺌 -> 분자
min_max = df.horsepower.max() - df.horsepower.min()
# 열의 최대값에서 열의 최소값을 뺌 -> 분모
df.horsepower_normal2 = min_x / min_max
print(df.horsepower_normal2)
'''
df.horsepower_normal2 = min_x / min_max
0 0.456522
1 0.646739
2 0.565217
3 0.565217
4 0.510870
...
393 0.217391
394 0.032609
395 0.206522
396 0.179348
397 0.195652
'''
|
cs |
반응형