EDITORIAL言葉:
データの標準化:
純粋な無次元値、またはインジケータを容易にするために大きさの異なるユニットへのデータユニットの制限を除去比較し重み付けすることができる。データは、一般的な目的は、請求それは、特定の狭い範囲内に収まるようにスケーリングされます。データの正規化は、典型的な場合です。
データの正規化:
- (0,1)との間に進数に変換します
- 無次元式に無次元表現があります。
正規化の利点:マルチインデックス評価システム、評価指標の性質のためには、一般的に異なる寸法と大きさを持っています。各インデックス間のレベル差が大きい場合に原稿がインデックス値によって直接分析した場合、値がの結果ことを確実にするために、従って、指標値の低レベルの役割相対的弱体化の包括的分析における高屈折率の役割を強調します信頼性は、正規化された生データを必要とします。
経験的に、正規化は大きく分類器の精度を向上させることができ、値が一定の比較の異なる寸法の間に機能することです。
1.1データの標準化
-
標準最小-最大
最小-最大正規化は、元のデータの線形変換であり、値が[0,1]の間にマッピングされ -
正規化されたZスコアは、
Zスコアの標準化手段:生データ(平均値)の平均値と標準偏差(標準偏差)に基づいて、正規化されたデータです。その主な目的は、データ間の比較可能性を確保するために、Zスコアの値を計算し、統一尺度で、同じ程度の大きさの異なる順序にデータを統合することです。 -
フラクショナルスケーリング(小数点スケーリング)標準化
-
平均正規化法(平均正規化)
uは平均値を示すグラフであり、値はデータ要素のi番目のグループの値を表します
平均値、最大値および最小値で正規化し、生データ内のデータのために。(上記2つの式も同様です)
-
ベクトルの正規化
-
変換索引
インデックス変換手段:データは、対応する指数関数変換により元のデータに正規化しました。一般的な方法指数伝達関数は次のよう:LG機能:
式:
Xは、生データであり、Xmaxの生データの最大値でありますソフトマックス関数:
式は次のとおりです。
Xは、eは、各データと指数Eが必要とされた後、分母の天然の機能は、元のデータを表す、元のデータ内のデータです。元のデータによって表される分子が電子指数です。シグモイド関数:
式は次のとおりです。
また、xは定数で生データであり、eは自然定数です。
1.2実装
# -*-coding:utf-8-*-
import numpy as np
import math
'''
around(arr,decimals=?)?表示保留多少位小数
'''
class Datanorm:
def __init__(self):
self.arr = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9])
self.x_max = self.arr.max() #数组元素中的最大值
self.x_min = self.arr.min() #数组元素中的最小值
self.x_mean = self.arr.mean() # 数组元素中平均值
self.x_std = self.arr.std() #数组元素中的标准差
def Min_MaxNorm(self):
arr = np.around(((self.arr - self.x_min) / (self.x_max - self.x_min)), decimals=4)
print("Min_Max标准化:{}".format(arr))
def Z_ScoreNorm(self):
arr = np.around((self.arr - self.x_mean) / self.x_std, decimals=4)
print("Z_Score标准化:{}".format(arr))
def Decimal_ScalingNorm(self):
power = 1
maxValue = self.x_max
while maxValue / 10 >= 1.0:
power += 1
maxValue /= 10
arr = np.around((self.arr / pow(10, power)), decimals=4)
print("小数定标标准化:{}".format(arr))
def MeanNorm(self):
first_arr = np.around((self.arr-self.x_mean) / (self.x_max - self.x_min), decimals=4)
second_arr = np.around((self.arr - self.x_mean)/self.x_max, decimals=4)
print("均值归一法:\n公式一:{}\n公式二:{}".format(first_arr, second_arr))
def Vector(self):
arr = np.around((self.arr/self.arr.sum()), decimals=4)
print("向量归一法:{}".format(arr))
def exponeential(self):
first_arr = np.around(np.log10(self.arr) / np.log10(self.x_max), decimals=4)
second_arr = np.around(np.exp(self.arr)/sum(np.exp(self.arr)), decimals=4)
three_arr = np.around(1/(1+np.exp(-1*self.arr)), decimals=4)
print("lg函数:{}\nSoftmax函数:{}\nSigmoid函数:{}\n".format(first_arr,second_arr,three_arr))
if __name__ == "__main__":
a = Datanorm()
a.Min_MaxNorm()
a.Z_ScoreNorm()
a.Decimal_ScalingNorm()
a.MeanNorm()
a.Vector()
a.exponeential()
1.3参考資料
1. データの標準化
2.「開発の戦闘推薦システム」グループ高陽/編。