まず、原則
データの正規化(正規化):特定のセルの間に入るように、データは、一定の割合でスケーリングされます。
データの正規化の種類:
- 最小 - 最大の標準化
- Zスコア標準(標準スコア、標準スコア)
- フラクショナルスケーリング(小数点スケーリング)標準化
- 正規化を意味
- ベクトルの正規化
- 変換指数
1、最小-Maxは標準
最小・最大標準化された、生データは、線形変換を指し、[0,1]との間のマッピング値。
公式:
式中、Xは、x、元のデータである分、元のデータの最小値であり、X maxは、元のデータの最大値です。
2、Zスコアの標準化
また、標準的なスコア(スコア標準)として知られている、元のデータ(平均値)と標準偏差(標準偏差)の平均値に基づいて正規化されたデータを指します。
公式:
式中、Xは、元のデータである、μ元のデータの平均であり、σは、元のデータの標準偏差です。
図3は、フラクショナルスケーリング(Deciamlスケーリング)標準化は、
小数点の位置を移動させることにより、データを標準化するための手段。小数点以下の桁は、元のデータの移動の最大絶対値に依存します。
公式:
xは、元のデータ10であり、jは、jはビット数の絶対値の最大値を表します。
例えば、アレイは、970の最大絶対値、すなわち、J = 3である場合、データは[-0.309、-0.01、-0.043に対して正規化され、今[-309、-10、-43、87、344、970]であります0.087、0.344、0.97]
図4は、正規化平均
最大および最小のデータに対して正規化原データから平均値を意味します。
公式:
式中、Xは、生データであり、μ元のデータの平均であり、X 分元のデータの最小値であり、X maxは、元のデータの最大値です。もちろん、可能分母X用の一部使用することを最大の代わりに。
図5は、ベクトル正規化は、
すべてのデータの合計で除算された各データ値を介して生データを正規化するための手段。
公式:
ここで、xは生データであり、分母は、すべてのデータの合計です。
図6は、インデックス変換は、
元のデータの値の指数関数により変換された対応する正規化されたデータを意味します。指数関数は、一般的な方法LG機能、ソフトマックス関数とSIGMOD機能を変換します。
公式:
(1)LG関数:
式中、Xは、生データであるオリジナルデータの最大値。
(2)ソフトマックス関数:
式中、Xは、eは自然対数であり、分母はそれぞれデータインデックスの生データを示し、Eを求め、生データです。
(3)シグモイド関数:
第二に、データの標準化のためのコード
import numpy as np
import math
class DataNum:
def __init__(self):
self.arr = [1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0]
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) # 标准差
print("原始数据:\n{}".format(self.arr))
def Min_Max(self):
arr_ = list()
distance = self.x_max-self.x_min
for x in self.arr:
arr_.append(round((x-self.x_min)/distance,4)) # 保留4位小数
print("Min_Max标准化结果:\n{}".format(arr_))
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_))
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:
arr_.append(round(x/(math.pow(10,j)),4)) # 保留4位小数
print("DecimalScaling标准化结果:\n{}".format(arr_))
def Mean(self):
arr_ = list()
distance = self.x_max - self.x_min
for x in self.arr:
arr_.append(round((x - self.x_mean) / distance, 4)) # 保留4位小数
print("Mean标准化结果:\n{}".format(arr_))
def Vector(self):
arr_ = list()
arr_sum = sum(self.arr)
for x in self.arr:
arr_.append(round(x / arr_sum, 4)) # 保留4位小数
print("Vector标准化结果:\n{}".format(arr_))
def exponential(self):
arr_1 = list() # lg
arr_2 = list() # SoftMax
arr_3 = list() # Sigmoid
sum_e = sum([math.exp(x) for x in self.arr])
for x in self.arr:
arr_1.append(round(math.log10(x) / math.log10(self.x_max), 4)) # 保留4位小数
arr_2.append(round(math.exp(x) / sum_e, 4)) # 保留4位小数
arr_3.append(round(1 / (1+math.exp(-x)), 4)) # 保留4位小数
print("lg标准化结果:\n{}".format(arr_1))
print("SoftMax标准化结果:\n{}".format(arr_2))
プリント(" SIGMOD标准化结果:\ N {} " .format(arr_3))
デフ行う(自己):
dn.Min_Max()
dn.Z_Score()
dn.DecimalScaling()
dn.Mean()
dn.Vector()
dn.exponential()
の場合 __name__ == ' __main__ ' :
DN = DataNum()
dn.do()
結果: