機器學習中(Feature Scaling)特征縮放處理的matlab實現方式


在進行特征縮放的時候,其一般做法是(X-mu)/sigma

mu:代表均值

sigma:代表標准差

在matlab中,函數mean可以求特征的均值,函數std可以求特征的標准差。

假設訓練集為m,特征數量為n,特征矩陣為X,則X的size為 m*n。

則 mu = mean(X)返回值為一個1*n的向量,向量中每個值對應於每個特征的均值。

則 sigma = std(X) 返回值為一個1*n的向量,向量中每個值對應於每個特征的標准差。

為了進行特征縮放,我們需要使用matlab中另外一個函數repmat。

對於repmat函數,可以理解成Repeat Matrix .

官方幫助文檔為:

  Repeat copies of array。

B = repmat(A,n) returns an array containing n copies of A in the row and column dimensions. The size of B is size(A)*n when A is a matrix.

repmat(A, n)表示分別在行和列上對於矩陣A拷貝n分。

例如:

A= 

2 3;

3 4

則B = repmat(A, 2);

B =

2 3 2 3
3 4 3 4
2 3 2 3
3 4 3 4

repmat(A, m, n)表示在列方向返回m個A的拷貝,在行方向返回n個A的拷貝。

B = repmat(A, 2, 1)

B = 

2 3
3 4
2 3
3 4

對於實現特征縮放,可以使用repmat函數來實現,由以上的計算可知:

X 為 m*n 矩陣

mu 1*n 向量

sigma 1*n向量

為了對X中的每一列向量進行特征縮放,使用以下命令即可

X_norm = (X - repmat(mu,size(X,1),1)) ./ repmat(sigma,size(X,1),1);

即,首先將mu使用premat函數為m*n向量,本質為將m個mu向量,按行疊加成矩陣。

X - repmat(mu, size(X,1), 1) 

即為X-mu的特征縮放。

對於(X-mu)/sigma的處理方式一樣。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM