-
class
sklearn.preprocessing.
Normalizer
(norm=’l2’, copy=True) - 這個函式在做資料標準化
- norm有三種輸入
- l1 最大的設為0.5 其餘按比例變化
- l2 預設解法
- x / norm
- norm 又稱為範數
- 計算方式為
- max 最大的設為1 其餘按比例變化
- code:
import pandas as pd
import numpy as np
from sklearn.preprocessing import Normalizer
data = [[1,2,3,6]
,[9,5,4,18]
,[7,6,8,21]
,[12,8,9,29]]
df_data = pd.DataFrame(data)
normalizer_l1 = Normalizer(norm='l1')
normalizer_l2 = Normalizer(norm='l2')
normalizer_max = Normalizer(norm='max')
#橫的一組
# l1 最大的設為0.5 其餘按比例 0.5*(4/18) = 0.111
# l2 一般解法 x / math.sqrt(sum(x[i]**2)) = x / norm
# max 最大的設為1 其餘按比例 (4/18) = 0.222
print("Normalizer l1: \n" , normalizer_l1.fit_transform(data))
print("Normalizer l2: \n" , normalizer_l2.fit_transform(data))
print("Normalizer max: \n" , normalizer_max.fit_transform(data))
output:
Normalizer l1:
[[0.08333333 0.16666667 0.25 0.5 ]
[0.25 0.13888889 0.11111111 0.5 ]
[0.16666667 0.14285714 0.19047619 0.5 ]
[0.20689655 0.13793103 0.15517241 0.5 ]]
Normalizer l2:
[[0.14142136 0.28284271 0.42426407 0.84852814]
[0.42616235 0.23675686 0.18940549 0.8523247 ]
[0.28818544 0.24701609 0.32935479 0.86455632]
[0.35697847 0.23798565 0.26773385 0.86269797]]
Normalizer max:
[[0.16666667 0.33333333 0.5 1. ]
[0.5 0.27777778 0.22222222 1. ]
[0.33333333 0.28571429 0.38095238 1. ]
[0.4137931 0.27586207 0.31034483 1. ]]
以第一行為例
1/sqrt(1^2 + 2^2 + 3^2 + 6^2) = 0.14142136
source code
沒有留言:
張貼留言