# -*-coding:utf-8-*-
""" author: thinkgamer
desc:
**4-1 python實現標準化方法
"""import numpy as np
import math
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)
# 標準差
defmin_max
(self)
: arr_ =
list()
for x in self.arr:
# round(x,4) 對x保留4位小數
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 - self.x_mean)
/ self.x_std,4)
)print
("經過z_score標準化後的資料為:\n{}"
.format
(arr_)
)# 有點問題,改為如下這樣
# def decimalscaling(self):
# arr_ = list()
# j = self.x_max // 10 if self.x_max % 10 == 0 else self.x_max // 10 + 1
# for x in self.arr:
# print("經過decimal scaling標準化後的資料為:\n{}".format(arr_))
defdecimalscaling
(self)
: arr_ =
list()
j =1 x_max =
max(
[abs
(one)
for one in self.arr]
)while x_max /
10>=
1.0:
j +=
1 x_max = x_max /
10for x in self.arr:
round
(x / math.
pow(
10, j),4
))print
("經過decimal scaling標準化後的資料為:\n{}"
.format
(arr_)
)def
mean
(self)
: arr_ =
list()
for x in self.arr:
round
((x - self.x_mean)
/(self.x_max - self.x_min),4
))print
("經過均值標準化後的資料為:\n{}"
.format
(arr_)
)def
vector
(self)
: arr_ =
list()
for x in self.arr:
round
(x /
sum(self.arr),4
))print
("經過向量標準化後的資料為:\n{}"
.format
(arr_)
)def
exponential
(self)
: arr_1 =
list()
for x in self.arr:
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
(math.exp(x)
/ sum_e,4)
)print
("經過指數轉換法(softmax)標準化後的資料為;\n{}"
.format
(arr_2)
) arr_3 =
list()
for x in self.arr:
round(1
/(1+ math.exp(
-x)),4
))print
("經過指數轉換法(sigmoid)標準化後的資料為;\n{}"
.format
(arr_3)
)if __name__ ==
"__main__"
: dn = datanorm(
) dn.min_max(
) dn.z_score(
) dn.decimalscaling(
) dn.mean(
) dn.vector(
) dn.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
]經過decimal scaling標準化後的資料為:
[0.1
,0.2
,0.3
,0.4
,0.5
,0.6
,0.7
,0.8
,0.9
]經過均值標準化後的資料為:[-
0.5,
-0.375,-
0.25,-
0.125
,0.0
,0.125
,0.25
,0.375
,0.5
]經過向量標準化後的資料為:
[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 資料標準化
定義 將資料按照一定的比例進行縮放,使其落入乙個特定的區間。好處 加快模型的收斂速度,提高模型 精度 常見的六種標準化方法 class datanorm def init self self.arr 1 2,3 4,5 6,7 8,9 self.x max max self.arr self.x m...
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...