一、是什麼以及它的作用
Matlab的mapminmax函數是一種數據歸一化和標準化的工具。歸一化是一種將數據縮放到 [0,1] 範圍內的方法。標準化是一種將數據縮放到零均值和單位方差之間的方法。
正常情況下,我們在訓練和使用模型時需要使用歸一化或標準化的數據。這是因為歸一化和標準化可以幫助加速模型的收斂,並且可以減少不同特徵之間的尺度差異對模型的影響。
通過使用mapminmax函數,我們可以將數據歸一化到 [0,1] 範圍內並進行標準化。這個函數可以應用於單個變量或包含多個變量的矩陣。
二、怎麼實現
1、輸入格式
mapminmax函數的輸入可以是一個行向量、列向量或矩陣。如果輸入是一個行向量,則函數將默認將其重構為列向量並返回一個列向量。如果輸入是一維向量,則函數將默認將其重構為 n×1 的矩陣,並在Waterloo在線模擬器的輸出欄中返回。如果輸入是 n×m 的矩陣,則函數將將每列重構為一維向量並對每個向量應用相同的變換。
2、輸出格式
輸出的格式與輸入格式相同。輸出的結果矩陣的每一列的最小值被映射到0,最大值被映射為1,其餘值根據輸入數據點進行縮放。輸出的結果矩陣每列之間的均值和標準差等於輸入矩陣各自列之間的均值和標準差。
3、語法
mapminmax 函數的語法如下所示:
[ Y , settings ] = mapminmax( X ) [ Y , settings ] = mapminmax( X , ymin , ymax ) [ Y , settings ] = mapminmax( X , settings )
這裡X是輸入數據,Y是輸出數據。ymin和ymax是期望輸出範圍的最小和最大值,默認值為 [0,1]。設置參數包含最小值、範圍和歸一化係數。
三、實例演示
1、單變量歸一化的實現
以下代碼將一個行向量歸一化為列向量,最小值映射到0,最大值映射到1:
X = [1 2 3 4 5 6]; Y = mapminmax(X);
將得到以下結果:
Y = 0.0000 0.1667 0.3333 0.5000 0.6667 0.8333
2、多變量歸一化的實現
以下代碼將一個包含兩個變量的矩陣歸一化為行向量,並將最小值映射到0,最大值映射到1:
X = [1 2; 3 4; 5 6]; Y = mapminmax(X);
將得到以下結果:
Y = 0.0000 0.0000 0.5000 0.5000 1.0000 1.0000
3、調整範圍值和應用到測試數據的實現
以下代碼將一個向量歸一化為列向量,並將最小值映射到-1,最大值映射到1。然後將該變換應用到另一個向量(測試數據)上:
X = [1; 2; 3; 4; 5; 6]; [y,settings] = mapminmax(X,-1,1); testData = [1; 2; 3]; Y = mapminmax('apply',testData,settings);
將得到以下結果:
y = -1.0000 -0.3333 0.3333 1.0000 Y = -1.0000 -0.3333 0.3333
四、總結
在機器學習和深度學習中,數據歸一化和標準化是非常重要的步驟,可以簡化模型,減少調試時間,同時還可以增強算法的魯棒性。Matlab的mapminmax函數提供了方便且易於使用的工具,可以將變量縮放到特定的範圍內,從而加速模型的收斂並提高算法的效率。
原創文章,作者:FFXII,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/372795.html