数据挖掘之3种数据归一化方法及代码实现
生活随笔
收集整理的這篇文章主要介紹了
数据挖掘之3种数据归一化方法及代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
學習數據挖掘、機器學習的同學們應該經常碰到數據歸一化(也稱標準化),數據的不同特征種類(評價指標)的取值范圍差別可能很大,如果不做處理會影響數據分析的結果。因此需要把數據進行標準化處理,將數據進行比例縮放,以消除不同特征間量綱和取值范圍差異帶來的影響。
數據歸一化處理對基于距離的數據挖掘算法尤為重要。下面就簡要介紹3種常用的數據歸一化方法。
1、最大最小歸一化
該方法也稱離差標準化,其核心思想是把原始數據的數值線性變換到[0,1]之間,公式如下:
其中,max、min分別為樣本數據的最大值、最小值。
優點:保留源數據存在的關系,消除取值范圍最簡單的方法;
缺點:極易受個別離群值影響,如果數據集中某個數值很大,其他各值歸一化后會接近0;此外,如果遇到超出[min,max]的值,會出現錯誤。
2、零-均值歸一化
也稱標準差歸一化,顧名思義,經處理的數據的均值為0,標準差為1,公式如下:
其中,、σ分別為源數據的均值、標準差。
該方法被廣泛使用,但均值和標準差也一樣易受離群值影響,因此需要進行修正,比如:可用中位數取代均值進行上述計算。
3、小數定標規范化
該方法是通過移動特征數據的小數位數,將其轉換到[-1,1]之間,移動的小數位由特征值絕對值的最大值決定,公式如下:
下面來看看3種方法的代碼實現:
%讀入數據 data='../input/normalizationData.xls'; [data, ~]=xlsread(data);%方法一:最大最小歸一化 data_scatter = mapminmax(data',0,1); %把數據進行轉置 data_scatter = data_scatter';%方法二:零-均值歸一化 data_zscore = zscore(data);%方法三:小數定標歸一化 max_ = max(abs(data)); max_ = power(10, ceil(log10(max_))); cols = size(max_, 2); data_dot = data; for i = 1:colsdata_dot(:,i) = data(:,i)/max_(1,i); end%打印輸出結果 disp('源數據如下:'); disp(data);disp('最大最小歸一化結果如下:'); disp(data_scatter);disp('零-均值歸一化結果如下:'); disp(data_zscore);disp('小數定標歸一化結果如下:'); disp(data_dot);?
總結
以上是生活随笔為你收集整理的数据挖掘之3种数据归一化方法及代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【C/C++】等分或指定行数把txt文档
- 下一篇: 【C/C++】头文件包含之#includ