728x90
데이터를 노멀라이징 하는 이유는 , 각각의 레인지를 통일하여, 해석하기 쉽게 하기 위함이다.
- m_scaler or s_scaler.fit_transform( 변수에서 가져온 노멀라이징 할 데이터 )
- 노멀라이징 하는 방법에는 2가지가 있다.
1. 표준화 방법
from sklearn import preprocessing
# 변수에 함수 저장
s_scaler = StandardScaler()
# 예시
crime_anal.head()
강남구 449 21 13 3850 4284 77.728285 85.714286 76.923077 42.857143 86.484594
강동구 156 6 4 2366 2712 78.846154 100.000000 75.000000 33.347422 82.890855
강북구 153 14 7 1434 2649 82.352941 92.857143 100.000000 43.096234 88.637222
관악구 320 12 9 2706 3298 69.062500 100.000000 88.888889 30.561715 80.109157
광진구 240 14 4 3026 2625 91.666667 100.000000 100.000000 42.200925 83.047619
crime_anal.loc[ : , '강간' : '폭력'].head()
강간 강도 살인 절도 폭력
구별
강남구 1.000000 0.941176 0.916667 0.953472 0.661386
강동구 0.155620 0.058824 0.166667 0.445775 0.289667
강북구 0.146974 0.529412 0.416667 0.126924 0.274769
관악구 0.628242 0.411765 0.583333 0.562094 0.428234
광진구 0.397695 0.529412 0.166667 0.671570 0.269094
이 값을 표준화 방법으로 노멀라이징 한다.
s_scaler.fit_transform(crime_anal.loc[ : , '강간' : '폭력'])
array([[ 2.4800655 , 2.07719547, 1.77393523, 2.15464706, 1.78208641],
[-0.79378856, -1.20258685, -0.79767557, 0.08579553, -0.00559123],
[-0.82730925, 0.54663039, 0.05952803, -1.21351014, -0.0772348 ],
[ 1.03867583, 0.10932608, 0.6309971 , 0.55979117, 0.66080769],
[ 0.14479076, 0.54663039, -0.79767557, 1.0059047 , -0.10452759],
[ 0.60290686, 0.76528254, 0.34526256, 0.04257828, 0.32988263],
[-0.84965638, -1.20258685, -1.08341011, -1.0280942 , -0.75386852],
[-0.33567247, -0.9839347 , 0.91673163, -0.1553846 , 0.00691796],
[-1.39716099, -0.54663039, -1.08341011, -1.73072303, -1.39866064],
[-0.60383799, 0.32797823, -0.51194104, -0.45093482, -0.19209195],
[ 0.64760111, -0.54663039, -0.51194104, -0.61265097, -0.91762525],
[ 0.74816318, 0.54663039, 0.34526256, 0.34928134, 0.30258984],
[-0.81613569, -1.42123901, -1.36914464, -0.68653853, -0.75159412],
[ 1.85434595, -0.54663039, 0.34526256, 0.46080973, -0.36153468],
[-1.12899546, -0.54663039, -0.79767557, -0.97233001, -1.2565107 ],
[-0.86082994, -1.42123901, -0.51194104, -0.72417936, -0.57760259],
[-0.07868051, 0.32797823, 1.20246616, 1.30284903, 0.65739609],
[ 1.73143676, 1.63989116, 0.91673163, 2.34424531, 3.41055613],
[ 0.75933674, 2.29584763, 2.05966977, 0.91947021, 0.97240036],
[-0.36919316, 0.54663039, -0.51194104, -1.04203525, -0.75841731],
[-0.68205293, -0.54663039, -1.08341011, -0.54433984, -0.072686 ],
[-0.17924258, -0.10932608, -0.22620651, -0.16793154, -0.48207783],
[-0.63735868, -0.54663039, -1.08341011, 0.33952261, -0.5605446 ],
[-0.4474081 , -0.10932608, 1.77393523, -0.23624268, 0.1479307 ]])
위의 노멀라이징한 데이터를 X_scaled1에 저장했다.
그 후 데이터를 적용 시켜준다.
crime_anal.loc[: ,'강간' : '폭력'] = X_scaled1
2. 정규화 방법
from sklearn import preprocessing
# 변수에 함수 저장
m_scaler = MinMaxScaler()
# 예시
crime_anal.head()
강남구 449 21 13 3850 4284 77.728285 85.714286 76.923077 42.857143 86.484594
강동구 156 6 4 2366 2712 78.846154 100.000000 75.000000 33.347422 82.890855
강북구 153 14 7 1434 2649 82.352941 92.857143 100.000000 43.096234 88.637222
관악구 320 12 9 2706 3298 69.062500 100.000000 88.888889 30.561715 80.109157
광진구 240 14 4 3026 2625 91.666667 100.000000 100.000000 42.200925 83.047619
crime_anal.loc[ : , '강간' : '폭력'].head()
강간 강도 살인 절도 폭력
구별
강남구 1.000000 0.941176 0.916667 0.953472 0.661386
강동구 0.155620 0.058824 0.166667 0.445775 0.289667
강북구 0.146974 0.529412 0.416667 0.126924 0.274769
관악구 0.628242 0.411765 0.583333 0.562094 0.428234
광진구 0.397695 0.529412 0.166667 0.671570 0.269094
이 값을 정규화 방법으로 노멀라이징 한다.
m_scaler.fit_transform(crime_anal.loc[ : , '강간' : '폭력'])
array([[1. , 0.94117647, 0.91666667, 0.95347246, 0.66138567],
[0.1556196 , 0.05882353, 0.16666667, 0.44577489, 0.28966659],
[0.14697406, 0.52941176, 0.41666667, 0.12692439, 0.27476945],
[0.62824207, 0.41176471, 0.58333333, 0.56209374, 0.42823362],
[0.39769452, 0.52941176, 0.16666667, 0.6715703 , 0.26909435],
[0.51585014, 0.58823529, 0.5 , 0.43516935, 0.35942303],
[0.14121037, 0.05882353, 0.08333333, 0.17242559, 0.13407425],
[0.27377522, 0.11764706, 0.66666667, 0.38658912, 0.29226768],
[0. , 0.23529412, 0.08333333, 0. , 0. ],
[0.20461095, 0.47058824, 0.25 , 0.3140609 , 0.25088673],
[0.52737752, 0.23529412, 0.25 , 0.27437564, 0.10002365],
[0.55331412, 0.52941176, 0.5 , 0.51043449, 0.35374793],
[0.14985591, 0. , 0. , 0.25624359, 0.13454717],
[0.83861671, 0.23529412, 0.5 , 0.53780363, 0.21565382],
[0.06916427, 0.23529412, 0.16666667, 0.18611016, 0.02955782],
[0.13832853, 0. , 0.25 , 0.2470065 , 0.17072594],
[0.34005764, 0.47058824, 0.75 , 0.74444064, 0.42752424],
[0.80691643, 0.82352941, 0.66666667, 1. , 1. ],
[0.55619597, 1. , 1. , 0.65035922, 0.49302436],
[0.26512968, 0.52941176, 0.25 , 0.16900445, 0.1331284 ],
[0.18443804, 0.23529412, 0.08333333, 0.29113924, 0.2757153 ],
[0.31412104, 0.35294118, 0.33333333, 0.38351009, 0.19058879],
[0.19596542, 0.23529412, 0.08333333, 0.50803969, 0.17427288],
[0.24495677, 0.35294118, 0.91666667, 0.36674649, 0.32158903]])
위의 노멀라이징한 데이터를 X_scaled2에 저장했다.
그 후 데이터를 적용 시켜준다.
crime_anal.loc[: ,'강간' : '폭력'] = X_scaled2
* 추가
- 데이터의 값이 0과 1사이의 값만 있다면 feature 스케일링을 할 필요가 없다.
728x90
'python > pandas' 카테고리의 다른 글
pandas - sb.heatmap을 이용해서 데이터 한눈에 비교하기 (0) | 2022.11.30 |
---|---|
pandas - sb의 pairplot의 x축과 y축 설정( x_vars= , y_vars=) (0) | 2022.11.30 |
pandas - 데이터의 전처리 (피봇팅 pivot.tabel) (0) | 2022.11.30 |
pandas - Series를 리스트로 변환 , Series를 Dataframe으로 변환 ( to_list ) , (to_frame) (0) | 2022.11.30 |
pandas - Series에서 문자열 컬럼 슬라이싱하기 (.str) (0) | 2022.11.30 |