数据标准化(Normalization)常用的6种方法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) #标准差
#1. Min-Max标准化
def Min_Max(self):
arr_ = list()
for x in self.arr:
arr_.append(round((x - self.x_min) / (self.x_max - self.x_min), 4))
print("经过Min_Max标准化后的数据为:\n{}".format(arr_))
#2. Z-Score标准化,Standard Score,基于原始数据的均值和标准差。
def Z_Score(self):
arr_ = list()
for x in self.arr:
arr_.append(round(((x - self.x_mean) / self.x_std), 4))
print("经过Z_Score标准化后的数据为:\n{}".format(arr_))
#3. 小数定标标准化,通过移动小数点的位置来进行数据的标准化。小数点移动的位数取决于原始数据中的最大绝对值。
def DecimalScaling(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 = x_max / 10
for x in self.arr:
arr_.append(round(x / math.pow(10, j), 4))
print("经过DecimalScaling标准化后的数据为:\n{}".format(arr_))
#4. 均值归一化,通过原始数据中的均值、最大、最小值进行。
def Mean(self):
arr_ = list()
for x in self.arr:
arr_.append(round((x - self.x_mean) / (self.x_max - self.x_min), 4))
print("经过Mean标准化后的数据为:\n{}".format(arr_))
#5. 向量归一化,通过原始数据中的每一个值除以所有数据之和进行。
def Vector(self):
arr_ = list()
for x in self.arr:
arr_.append(round(x / sum(self.arr), 4))
print("经过Vector标准化后的数据为:\n{}".format(arr_))
#6. 指数转换
def exponential(self):
arr_1 = list()
for x in self.arr:
arr_1.append(round(math.log10(x) / math.log10(self.x_max), 4))
print("经过指数转换法(log10)标准化后的数据为:\n{}".format(arr_1))
arr_2 = list()
sum_e = sum([math.exp(i) for i in self.arr])
for x in self.arr:
arr_2.append(round(math.exp(x) / sum_e , 4))
print("经过指数转换法(softmax)标准化后的数据为:\n{}".format(arr_2))
arr_3 = list()
for x in self.arr:
arr_3.append(round(1 / (1 + math.exp(-x)) , 4))
print("经过指数转换法(sigmoid)标准化后的数据为:\n{}".format(arr_3))
执行结果如下:
更多推荐
已为社区贡献1条内容
所有评论(0)