定義:將資料按照一定的比例進行縮放,使其落入乙個特定的區間。
好處:加快模型的收斂速度,提高模型**精度
常見的六種標準化方法:
class
datanorm
:
def __init__
(self)
: self.arr =[1
,2,3
,4,5
,6,7
,8,9
] self.x_max =
max(self.arr)
self.x_min =
min(self.arr)
self.x_mean =
sum(self.arr)
/len
(self.arr)
self.x_std = np.
std(self.arr) #標準差
def min_max
(self)
: arr_ =
list()
for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_.
(round
((x - self.x_min)
/(self.x_max - self.x_min),4
))print
("經過min_max標準化後的資料為:\n{}"
.format
(arr_)
)
def z_score
(self)
: arr_ =
list()
for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_.
(round
((x - self.x_mean)
/self.x_std,4)
)print
("經過z_score標準化後的資料為:\n{}"
.format
(arr_)
)
# 小數定標標準化
def decimascaling
(self)
: arr_ =
list()
j =1 x_max =
max(
[abs
(i)for i in self.arr]
) #求絕對值最大的數
# 判斷該數的位數
while x_max/
10>=
1.0:
j +=
1 x_max /=
10for x in self.arr:
arr_.
(round
(x / math.
pow(
10, j),4
))print
("經過decimascaling標準化後的資料為:\n{}"
.format
(arr_)
)
#均值歸一化法
def mean
(self)
: arr_ =
list()
for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_.
(round
((x - self.x_mean)
/(self.x_max - self.x_min),4
))print
("經過mean標準化後的資料為:\n{}"
.format
(arr_)
)
# 向量歸一化法
def vector
(self)
: arr_ =
list()
for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_.
(round
( x/
sum(self.arr),4
))print
("經過vector標準化後的資料為:\n{}"
.format
(arr_)
)
# 指數轉換法
def exponential
(self)
: arr_1 =
list()
for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_1.
(round
(math.
log10
(x)/math.
log10
(self.x_max),4
))print
("經過指數轉換法(log10)標準化後的資料為:\n{}"
.format
(arr_1)
)
arr_2 =
list()
sum_e =
sum(
[math.
exp(one)
for one in self.arr]
)for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_2.
(round
(math.
exp(x)
/sum_e,4)
)print
("經過指數轉換法(softmax)標準化後的資料為:\n{}"
.format
(arr_2)
)
arr_3 =
list()
for x in self.arr:
# round
(x,4
) 對x保留4位小數
arr_3.
(round(1
/(1+math.
exp(
-x)),4
))print
("經過指數轉換法(sigmoid)標準化後的資料為:\n{}"
.format
(arr_3)
)ob =
datanorm()
ob.min_max()
ob.z_score()
ob.decimascaling()
ob.mean()
ob.vector()
ob.exponential
()
經過min_max標準化後的資料為:
[0.0
,0.125
,0.25
,0.375
,0.5
,0.625
,0.75
,0.875
,1.0
]經過z_score標準化後的資料為:[-
1.5492,-
1.1619,-
0.7746,-
0.3873
,0.0
,0.3873
,0.7746
,1.1619
,1.5492
]經過decimascaling標準化後的資料為:
[0.1
,0.2
,0.3
,0.4
,0.5
,0.6
,0.7
,0.8
,0.9
]經過mean標準化後的資料為:[-
0.5,
-0.375,-
0.25,-
0.125
,0.0
,0.125
,0.25
,0.375
,0.5
]經過vector標準化後的資料為:
[0.0222
,0.0444
,0.0667
,0.0889
,0.1111
,0.1333
,0.1556
,0.1778
,0.2
]經過指數轉換法(log10)標準化後的資料為:
[0.0
,0.3155
,0.5
,0.6309
,0.7325
,0.8155
,0.8856
,0.9464
,1.0
]經過指數轉換法(softmax)標準化後的資料為:
[0.0002
,0.0006
,0.0016
,0.0043
,0.0116
,0.0315
,0.0856
,0.2326
,0.6322
]經過指數轉換法(sigmoid)標準化後的資料為:
[0.7311
,0.8808
,0.9526
,0.982
,0.9933
,0.9975
,0.9991
,0.9997
,0.9999
]
python 資料標準化
def datastandard from sklearn import preprocessing import numpy as np x np.array 1.1.2.2.0.0.0.1.1.print 原始資料為 n x print method1 指定均值方差資料標準化 預設均值0 方差 ...
Python資料標準化
z score標準化 1.產生隨機數 import numpy as np 產生隨機數 data 1 np.random.randn 3,4 從標準正態分佈中返回乙個或多個樣本值.data 2 np.random.rand 3,4 產生 0,1 的數 print randn產生的隨機數 n data...
python中資料標準化
公式為 x mean std 計算時對每個屬性 每列分別進行。將資料按期屬性 按列進行 減去其均值,並處以其方差。得到的結果是 對於每個屬行 每列來說所有資料都聚集在0附近,方差為1。實現時,有兩種不同的方式 1 sklearn.preprocessing.scale 函式,可以直接將給定資料進行標...