Matlab系列(005) 一 歸一化

目錄

  • 1、前言
  • 2、什么是歸一化?
  • 3、為什么要進行歸一化
  • 4、歸一化方法詳解與Matlab實現
  • 5、總結

1、前言

? ??歸一化技術是數據預處理的核心環節,本文將深度解析主流歸一化方法,提供可復現Matlab代碼,并探討其在各領域中的應用場景。

2、什么是歸一化?

??歸一化是數據預處理的核心技術之一,它將不同量綱、不同數量級的特征數據轉換到統一的數量范圍。通過消除特征的量綱差異和數量級影響,歸一化使數據具有可比性,為后續的數據分析和建模奠定基礎。

3、為什么要進行歸一化

3.1 消除量綱影響
??不同特征可能有完全不同的量綱(如年齡(歲)vs 收入(萬元)),直接計算會導致量綱大的特征主導結果。
3.2 加速模型收斂
??梯度下降類算法中,歸一化后的數據能使損失函數的等高線更接近圓形,大幅提高收斂速度。
3.3 提高模型精度
??基于距離的算法(如KNN、SVM、K-Means)對特征尺度敏感,歸一化可防止大范圍特征淹沒小范圍特征。
3.4 避免數值問題
??大數值可能導致計算溢出(如指數函數)或精度損失。
3.5 統一優化步長
??各特征方向上的步長一致,提高優化效率。

4、歸一化方法詳解與Matlab實現

4.1 最小-最大歸一化
??原理:線性映射原始數據到[0,1]區間
公式:
Xnorm=x?min(x)max(x)?min(x)Xnorm= {{\frac{x-min(x)}{max(x)-min(x)}}}Xnorm=max(x)?min(x)x?min(x)?

特點:
(1)對異常值敏感(最大值/最小值易受離群點影響)。
(2)適用于數據分布未知的情況。
代碼:

clc
clear
close all
%%
data=[10,2,20,4, 30, 6, 40, 8];min_val = min(data);
max_val = max(data);
normalized_data = (data - min_val) ./ (max_val - min_val);disp('最小-最大歸一化結果:');
disp(normalized_data);
%%
%結果
最小-最大歸一化結果:0.2105         0    0.4737    0.0526    0.7368    0.1053    1.0000    0.1579

4.2 均值歸一化
??原理:均值歸一化是數據預處理中常用的一種歸一化技術,將數據范圍限制在[-1,1]區間內。
公式:
Xnorm=x?mean(x)max(x)?min(x)Xnorm= {{\frac{x-mean(x)}{max(x)-min(x)}}}Xnorm=max(x)?min(x)x?mean(x)?
特點:
(1)相比最小-最大歸一化,均值歸一化保留了數據的分布形狀。
(2)使數據均值為0,有利于許多機器學習算法。
(3)適用于同時包含正負值的數據集。
(4)相比Z-score標準化,輸出范圍受限,減少數值問題。
代碼:

clc
clear
close all
%%data=[10,2,20,4, 30, 6, 40, 8];min_val = min(data);
max_val = max(data);normalized_data = (data - mean(data)) ./ (max_val - min_val);disp('均值歸一化結果:');
disp(normalized_data);
%%
%結果
均值歸一化結果:-0.1316   -0.3421    0.1316   -0.2895    0.3947   -0.2368    0.6579   -0.1842

4.3 Z-Score標準歸一化
??原理:將數據轉換為均值為0、標準差為1的分布。
公式:
z=x?μ?σz = {{\frac{x-μ?}{σ}}}z=σx?μ??
解釋:
x:原始數據。
μ?:數據的均值。
σ:標準差。

特點:
(1)對異常值有一定魯棒性。
(2)輸出范圍不受限。
(3)要求數據近似服從正態分布。
代碼:

clc
clear
close all
%%
data=[10,2,20,4, 30, 6, 40, 8];
% 使用示例:
mu = mean(data);
sigma = std(data,1);
z_data = (data - mu) ./ sigma;disp('Z-Score標準歸一化結果:');
disp(z_data);
%結果
Z-Score標準歸一化結果:-0.3892   -1.0120    0.3892   -0.8563    1.1677   -0.7006    1.9462   -0.5449

4.4 魯棒歸一化
??原理:使用四分位數代替極值,降低異常值影響。
公式:
Xrobust=x?Median(x)?IQR(x)Xrobust = {{\frac{x-Median(x)?}{IQR(x)}}}Xrobust=IQR(x)x?Median(x)??
解釋:
(1)x:原始數據。
(2)Median(x)?:數據的中位數。
(3)IQR(X)??:四分位距。它是??上四分位數與??下四分位數之差。
特點:
(1)異常值魯棒性??:最大優點,在數據包含異常值或存在重尾分布時表現卓越。
(2)保留信息??:不會像刪除異常值那樣造成信息損失。
(3)中位數和IQR的可解釋性??:這些統計量比均值和方差更易于理解。
(4)輸出范圍不固定??:轉換后的數據沒有固定的范圍(如[0,1]),這對于某些需要嚴格輸入范圍的算法(如神經網絡)可能是個問題。
(5) ??對數據分布敏感??:如果數據的中間50%(Q1到Q3)不能代表數據的整體分布,魯棒縮放可能效果不佳。
(6)不適用于小數據集??:四分位數的計算在小數據集上可能不穩定。
(7)忽略異常值但未處理??:它只是降低了異常值的影響,但異常值仍然存在于數據中。
代碼:

clc
clear
close all
%%
% 使用示例(含異常值):
data=[10,2,20,4, 30, 6, 40, 8];
robust_data = robust_norm(data);
disp('魯棒歸一化結果:');
disp(robust_data);function robust_data = robust_norm(data)median_val = median(data);Q1 = quantile(data, 0.25);Q3 = quantile(data, 0.75);IQR = Q3 - Q1;% 處理IQR為0的列IQR(IQR == 0) = 1;robust_data = (data - median_val) ./ IQR;
end
%結果
魯棒歸一化結果:0.0500   -0.3500    0.5500   -0.2500    1.0500   -0.1500    1.5500   -0.0500

4.5 最大絕對值縮放
? ??原理:將數據按特征最大絕對值縮放至[-1,1]區間。
公式:
Xrobust=xmax?(∣x∣)Xrobust = {{\frac{x}{max?(∣x∣)}}}Xrobust=max?(x)x?
特點:
(1)保留數據稀疏性(不會移動數據中心)
(2)適用于稀疏數據(如文本處理)
代碼:

clc
clear
close all
%%
% 使用示例:
data=[10,2,20,4, 30, 6, 40, 8];
maxabs_data = maxabs_norm(data);
disp('最大絕對值縮放結果:');
disp(maxabs_data);function maxabs_data = maxabs_norm(data)max_abs = max(abs(data));% 處理全零列max_abs(max_abs == 0) = 1;maxabs_data = data ./ max_abs;
end
%結果
最大絕對值縮放結果:0.2500    0.0500    0.5000    0.1000    0.7500    0.1500    1.0000    0.2000

4.6 非線性歸一化方法

? ??除了上述的線性歸一化,還有非線性歸一化。非線性歸一化??是指通過??非線性函數??對數據進行變換,其目的不僅是改變數據的尺度和中心,更重要的是??改變數據的分布形狀??(如偏度、峰度)。與線性歸一化只是進行縮放和平移不同,非線性變換能夠壓縮分布的一端、拉伸另一端,從而更好地滿足模型的假設或揭示數據的內在結構。
(1)對數變換
公式:
logdata=sign(data).?log(1+abs(data))log_data = sign(data) .* log(1 + abs(data))logd?ata=sign(data).?log(1+abs(data))
說明:支持負值
代碼:

clc
clear
close all
%%
% 使用示例:
data=[10,2,20,4, 30, 6, 40, 8];
log_data = sign(data) .* log(1 + abs(data)); 
disp('對數變換:');
disp(log_data);
%結果
對數變換:2.3979    1.0986    3.0445    1.6094    3.4340    1.9459    3.7136    2.1972

(2)反正切變換
公式:
atandata=atan(data)?2/piatan_data = atan(data) * 2 / piatand?ata=atan(data)?2/pi
說明:可以映射到[-1,1]
代碼:

clc
clear
close all
%%
% 使用示例:
data=[10,2,20,4, 30, 6, 40, 8];
atan_data = atan(data) * 2 / pi;
disp('反正切變換:');
disp(atan_data);
%結果:
反正切變換:0.9365    0.7048    0.9682    0.8440    0.9788    0.8949    0.9841    0.9208

(3) Sigmoid變換
公式:
sigmoiddata=1./(1+exp(?data))sigmoid_data = 1 ./ (1 + exp(-data))sigmoidd?ata=1./(1+exp(?data))
代碼:

clc
clear
close all
%%
% 使用示例:
data=[10,2,20,4, 30, 6, 40, 8];
sigmoid_data = 1 ./ (1 + exp(-data));disp('反正切變換:');
disp(sigmoid_data);
%結果:
Sigmoid變換:1.0000    0.8808    1.0000    0.9820    1.0000    0.9975    1.0000    0.9997

5、總結

? ??歸一化作為數據預處理的基石,通過消除特征間的量綱差異和數量級影響,顯著提升模型的性能和穩定性。沒有"最好"的歸一化方法,需根據數據特性和模型需求選擇,不同應用場景下的方法選擇策略。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/94446.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/94446.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/94446.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【K8s】整體認識K8s之namespace

命名空間將資源劃分為相互隔離的組。kubectl get namespace/ns系統默認創建四個namespace,分別是default、kube-node-lease、kube-public、kube-system。default 沒有指明使用其它命名空間的對象所使用的默認命名空間、kube-system 系統創建對象所使用的命名空間。…

rust語言 (1.88) egui (0.32.1) 學習筆記(逐行注釋)(十八) 使用表格

使用表格egui_extras::TableBuilder // Cargo.toml [dependencies] eframe "0.32.1" egui "0.32.1" egui_extras "0.32.1"egui_extras::Column::auto() 列寬根據內容自動計算.resizable(true) 允許用戶手動拖動調整列寬 fn main() -> efra…

【C#】構造函數實用場景總結

文章目錄前言一、構造函數是什么?二、構造函數的用法1.初始化對象,避免無效狀態2 初始化靜態成員3 構造函數重載4.構造函數鏈5. 單例模式,多次實例化保持一個對象6. 依賴注入7. 初始化只讀對象前言 構造函數是我們平常編程里經常能碰到的老伙…

LLM預訓練架構全解析:從零構建一個語言世界的“操作系統”

導讀:作為開發者,我們每天都在import或#include各種庫,我們信任這些由無數代碼構成的底層依賴。那么,當我們調用一個LLM時,它所依賴的那個更底層的、無形的**“語言操作系統”**,又是如何被“編譯”出來的&…

Linux服務測試題(DNS,NFS,DHCP,HTTP)

一,實驗拓撲:二,需求APPSRV:主機名:appsrv.example.comip地址:192.168.100.10網關:192.168.100.254網卡為NAT模式STORAGESRV:主機名:storagesrv.example.comip地址&#…

DevOps 簡介及就業前景

DevOps 簡介及就業前景 目錄 DevOps簡介核心概念重難點解析具體場景使用就業前景學習路徑最佳實踐 DevOps簡介 什么是DevOps DevOps是Development(開發)和Operations(運維)的組合詞,是一種軟件開發和IT運維的文化…

《CF1120D Power Tree》

題目描述 給定一棵有 n 個頂點的有根樹,樹的根為頂點 1。每個頂點都有一個非負的價格。樹的葉子是指度為 1 且不是根的頂點。 Arkady 和 Vasily 在樹上玩一個奇怪的游戲。游戲分為三個階段。第一階段,Arkady 購買樹上的一些非空頂點集合。第二階段&…

CPTS-Agile (Werkzeug / Flask Debug)

枚舉 nmap -sC -sV -T4 -Pn -n -p- 10.10.11.203進行常規的網頁枚舉和測試發現報錯信息,‘Werkzeug / Flask Debug’ 測試Export導出功能發現存在路徑遍歷查看這篇文章 https://book.hacktricks.wiki/zh/network-services-pentesting/pentesting-web/werkzeug.html#…

【網絡運維】Shell 腳本編程:while 循環與 until 循環

Shell 腳本編程:while 循環與 until 循環 循環結構簡介 循環語句是 Shell 腳本中用于重復執行一條或一組指令的重要工具,直到滿足特定條件時停止執行。Shell 腳本中常見的循環語句包括 while、until、for 和 select。本文將重點介紹 while 和 until 兩種…

LLM 中評價指標與訓練概要介紹

在【LLM】LLM 中增量解碼與模型推理解讀一文中對 LLM 常見名詞進行了介紹,本文會對 LLM 中評價指標與訓練概要進行介紹,本文并未介紹訓練實操細節,未來有機會再了解~ 一、LLM 如何停止輸出 在看 LLM 評價指標前,先看…

Java 20 新特性及具體應用

目錄 1. 模式匹配 for switch(預覽特性) 2. 記錄模式(預覽特性) 3. 外部函數與內存 API(預覽特性) 4. 矢量 API(孵化器特性) 5. 作用域值(預覽特性) 6. …

【STM32】CubeMX(十一):FreeRTOS任務掛起與解掛

這篇文章是 STM32 HAL FreeRTOS 下的任務掛起與恢復機制, 結合 CubeMX 圖示與代碼,構建了一個 FreeRTOS 控制示例。 本篇目標:創建兩個任務: 一個控制藍燈閃爍(myTask01) 另一個監控按鍵(Start…

圖片預加載:提升Web性能的關鍵

🤍 前端開發工程師、技術日更博主、已過CET6 🍨 阿珊和她的貓_CSDN博客專家、23年度博客之星前端領域TOP1 🕠 牛客高級專題作者、打造專欄《前端面試必備》 、《2024面試高頻手撕題》、《前端求職突破計劃》 🍚 藍橋云課簽約作者、…

大模型壓縮三劍客:量化、剪枝與知識蒸餾全解析

在人工智能飛速發展的今天,大語言模型(LLM)如通義千問、GPT 等已成為推動智能應用的核心引擎。然而,這些模型動輒數十億甚至上千億參數,帶來了高昂的計算成本和部署門檻。如何在不顯著犧牲性能的前提下,讓大…

Seaborn數據可視化實戰:Seaborn基礎圖表繪制入門

基礎圖表繪制:Seaborn入門教程 學習目標 通過本課程的學習,你將掌握如何使用Seaborn庫繪制基礎圖表,包括條形圖、折線圖和散點圖。你將了解Seaborn的基本函數和參數設置,以及如何通過調整這些參數來優化圖表的視覺效果。 相關知識…

阿里開源通義萬相Wan2.2:視頻生成技術的革命性突破

在人工智能視頻生成領域,阿里云通義實驗室于2025年7月重磅開源了新一代視頻生成大模型 Wan2.2,其核心亮點包括人體動作生成的極致精度、電影級美學表達以及高效的資源利用效率,標志著視頻生成技術邁入了一個全新的階段。 一、核心功能:三大模型,覆蓋全場景視頻生成 Wan2.…

說說你對Integer緩存的理解?

大家好,我是鋒哥。今天分享關于【說說你對Integer緩存的理解?】面試題。希望對大家有幫助; 說說你對Integer緩存的理解? 超硬核AI學習資料,現在永久免費了! Integer 緩存是 Java 中一個優化機制,它主要通過緩存一部…

高速CANFD收發器ASM1042在割草機器人輪轂電機通信系統中的適配性研究

摘要割草機器人輪轂電機的通信系統對其實現自主控制和高效作業至關重要。本文旨在研究國科安芯推出的高速CANFD收發器芯片ASM1042是否能夠滿足割草機器人輪轂電機通信系統的復雜需求。通過詳細分析輪轂電機通信系統的性能要求,以及ASM1042的電氣、功能和環境特性&am…

MTK Linux DRM分析(十二)- KMS Panel框架層(drm_panel.c、drm_mipi_dbi.c、drm_mipi_dsi.c)

一、簡介 三個代碼文件(drm_mipi_dbi.c、drm_panel.c、drm_mipi_dsi.c)的分析。這些文件都是Linux內核DRM(Direct Rendering Manager)子系統的組成部分,主要用于支持顯示面板,特別是通過MIPI(Mobile Industry Processor Interface)接口的顯示設備。它們提供了顯示驅動…

合合信息acge模型獲C-MTEB第一,文本向量化迎來新突破

前言: 在當今時代,大型語言模型以其驚人的發展速度和廣泛的應用前景,正成為全球科技界的矚目焦點。這些模型的強大能力,源自于背后默默支撐它們的Embedding技術——一種將語言轉化為機器可理解的數值向量的關鍵技術。隨著大型語言…