机器学习之线性回归(matlab)
目錄
一、基本概念
二、概念的數學形式表達
三、確定w和b
1.讀取或輸入數據
2.歸一化、標準化
2.1 均值
2.2 歸一化
2.3 標準化
3.求解w和b
1.直接解方程
2.最小二乘法(least square method)求解:
4. 評估回歸模型
四、regress線性回歸命令
1.調函數解方程
2.對原始值和預測值進行繪圖
3. 畫殘差圖:
五、matlab顏色表
六、matlab調色板
1、常用顏色的RGB值
2、產生標準調色板的函數
一、基本概念
線性(linear):
指量與量之間按比例、成直線的關系,在空間和時間上代表規則和光滑的運動,一階導數為常數
非線性(non-linear):
指不按比例、不成直線的關系,代表不規則的運動和突變,一階導數不為常數。
一個線性的例子:
數據:工資和年齡(2個特征)
目標:預測銀行會貸款給我多少錢(標簽)
考慮:工資和年齡都會影響最終銀行貸款的結果,那么他們各自有多大的影響呢?(參數)
通俗的解釋:
x1,x2就是我們的兩個特征(年齡、工資),y是銀行最終會借給我們多少錢
找到最合適的一條線(想象一個高維)來最好的擬合我們的數據點
數學形式來了
二、概念的數學形式表達
給定數據集:
數據的矩陣形式:
?線性模型(linear model)試圖學得一個通過屬性組合的線性組合來進行預測的函數,即
用向量形式寫成:???
線性回歸(linear regression)試圖學得一個線性模型以盡可能準確地預測實值輸出標記
三、確定w和b
對離散屬性:
若屬性間存在“序”關系,可通過連續化將其轉化為連續值。
若屬性間不存在“序”關系,則轉化為k維向量。
1.讀取或輸入數據
matlab不需要導入庫,直接引用函數 csvread 讀取csv數據文件
首先我們先看看csv數據的導入
% 引用函數 csvread 讀取csv數據文件data = csvread('路徑',1,0) #從第二行,第0列讀取數據?讀取數據后得分出和為X,何為Y
# matlab從1開始算,與實際一樣 X = data[:,1:4] # 1到4列所有的數據也就是實際的1到4列 Y = data[:, 6] # 第6列所有的數據也就是實際的第6列?接下來我們看看自己建立矩陣的數據讀取方式
Y=[160260250];X=[70,35,175,40,2.465,42,3];返回:
?
??說到矩陣了,就順便說一下
創建矩陣的相關知識:
(1) ones()函數:產生全為1的矩陣,ones(n):產生n*n維的全1矩陣,ones(m,n):產生m*n維的全1矩陣;
(2) zeros()函數:產生全為0的矩陣;
(3) rand()函數:產生在(0,1)區間均勻分布的隨機陣;
(4) eye()函數:產生單位陣;
(5) randn()函數:產生均值為0,方差為1的標準正態分布隨機矩陣。
2.歸一化、標準化
2.1 均值
# MATLAB直接引用mean()函數就好 X_mean = mean(X) Y_mean = mean(Y)1. mean:計算向量均值。mean(x,1)列向量均值,mean(x,2)行向量均值。??mean2(x)矩陣均值.
2. std:計算向量均方差,std(x,0,1)列向量均方差,std(x,0,2)行向量均方差。 std2(x)矩陣均方差
3. var:計算向量方差,var(x)
4. sse:誤差平方和,sse(x)。越接近于0,說明擬合的越好,數據預測越成功。
5. mse:均方差平方和,mse(x)=sse(x)/N。意義同sse
6. R-square:確定系數。確定系數是通過數據的變化來表征一個擬合的好壞。由上面的表達式可以知道“確定系數”的正常取值范圍為[0 1],越接近1,表明方程的變量對y的解釋能力越強,這個模型對數據擬合的也較好。
要想確定w和b,首先要視情況決定是否需要對數據進行歸一化或標準化
2.2 歸一化
%歸一化X=[70,35,175,40,2.465,42,3]; for X=XMappedX = (X-min(X))/(max(X)-min(X)) end %用函數mapminmax %默認的map范圍是[-1, 1],所以如果需要[0, 1],則按這樣的格式提供參數:MappedData = mapminmax(OriginalData, 0, 1); % 只按行歸一化,如果是矩陣,則每行各自歸一化,如果需要對整個矩陣歸一化FlattenedData = OriginalData(:)'; % 展開矩陣為一列,然后轉置為一行。 MappedFlattened = mapminmax(FlattenedData, 0, 1); % 歸一化。% 還原為原始矩陣形式。此處不需轉置回去,因為reshape恰好是按列重新排序 MappedData = reshape(MappedFlattened, size(OriginalData));2.3 標準化
% z-score 標準化 % 新數據=(原數據-均值)/標準差 % 標準化以后,X中元素的取值范圍為實數。X=zscore(X)3.求解w和b
1.直接解方程
N = length(Y);A = X'*X-(N*X_mean'*X_mean); C=X'*Y - (N*X_mean'*Y_mean); B = (A^-1*C).'2.最小二乘法(least square method)求解:
把數據集D表示為一個m*(d+1)大小的矩陣X,其中每行對應于一個示例,改行前d個元素對應于示例的d個屬性值,最好一個元素恒置為1,即
A=[1 2 3;4 5 6;7 8 9]; B = ones(3,1) %生成3行1列的1矩陣 % B=[1;1;1]; %一共三行,用“;”分開 A_column=[A B]; display(A_column);%輸出結果當X^TX 為滿秩矩陣(full-rank matrix) 或正走矩陣(positive definite matrix) 時,令
得到
w = (X'*X)^-1*X'*Y %變量的系數 w0 = Y_mean - X_mean*w %常數?其中(X^TX)^-l是矩陣(X^TX)的逆矩陣.令xi = (xi ,l) ,則最終學得的多元線性回歸模型為
YY = X*w+w0 %Y的估計值4. 評估回歸模型
%離差平方和 S = var(Y); fprintf('離差平方和S=:%d\n',S) %回歸平方和 U = var(YY); fprintf('回歸平方和U=:%d\n',U) %剩余平方和 Q=S-U; fprintf('剩余平方和Q=:%d\n',Q) %復可決系數 R2 = U/S; fprintf('復可決系數R2=:%d\n',R2) %負相關系數 R = sqrt(U/S); fprintf('復相關系數R=:%d\n',R) %回歸均方 % n= X_mean 的個數 UU = U/n; fprintf('回歸均方=:%d\n',UU) %剩余均方 % N= Y的個數 QQ = Q/(N-n-1); fprintf('剩余均方=:%d\n',QQ) %剩余標準差 s = sqrt(QQ); fprintf('剩余標準差s=:%d\n',s) %方程顯著性檢驗值 F = UU/QQ; fprintf('方差顯著性檢驗值F=:%d\n',F)四、regress線性回歸命令
用于一元及多元線性回歸,本質上是最小二乘法。在Matlab 2014a中,輸入help regress?,會彈出和regress的相關信息
調用格式:
- B = regress(Y,X)
- [B,BINT] = regress(Y,X)
- [B,BINT,R] = regress(Y,X)
- [B,BINT,R,RINT] = regress(Y,X)
- B,BINT,R,RINT,STATS] = regress(Y,X)
- [...] = regress(Y,X,ALPHA)
參數解釋:
- B:回歸系數,是個向量(“the vector B of?regression coefficients?in the? linear model Y = X*B”)。
- BINT:回歸系數的區間估計(“a matrix BINT of 95% confidence intervals for B”)。
- R:殘差( “a vector R of residuals”)。
- RINT:置信區間(“a matrix RINT of intervals that can be used to diagnose outliers”)。
- STATS:用于檢驗回歸模型的統計量。有4個數值:判定系數R^2,F統計量觀測值,檢驗的p的值,誤差方差的估計。
- ALPHA:顯著性水平(缺少時為默認值0.05)。
1.調函數解方程
% 方程求解函數使用 [b,bint,r,rint,stats] = regress(Y,X);2.對原始值和預測值進行繪圖
x = 1:1:N; plot(x,Y,'-*b',x,YY,'-or'); %線性,顏色,標記% hold on; %表示在同一張圖上繼續作畫 % title('x'); %命名標題 % axis([0 1 0 10]) % 設置坐標軸在指定的區間 % xlabel('t'); %命名x軸 % ylabel('x'); %命名y軸 % grid on %顯示坐標軸網格線 % legend('Y','YY'); %*加標注,2條線分別代表是什么*3. 畫殘差圖:
figure %創建窗口 rcoolot(r,rint) %繪制殘差圖五、matlab顏色表
| 線型 | 說明 | 標記符 | 說明 | 顏色 | 說明 |
| - | 實線(默認) | + | 加號符 | r | 紅色 |
| -- | 雙劃線 | o | 空心圓 | g | 綠色 |
| : | 虛線 | * | 星號 | b | 藍色 |
| :. | 點劃線 | . | 實心圓 | c | 青綠色 |
| x | 叉號符 | m | 洋紅色 | ||
| s(square) | 正方形 | y | 黃色 | ||
| d | 菱形 | k | 黑色 | ||
| ^ | 上三角形 | w | 白色 | ||
| v | 下三角形 | ||||
| > | 右三角形 | ||||
| < | 左三角形 | ||||
| p(pentagram) | 五角星 | ||||
| h(hexagram) | 六邊形 | ||||
| square | 正方形 | ||||
| pentagram | 五角形 | ||||
| hexagram | 六角形 |
六、matlab調色板
1、常用顏色的RGB值
??--------------------------------------------
? ? 顏色 ??R ? G ? B? ? ?顏色? ?R ? G? B
??--------------------------------------------
? ? ?黑? ? 0 ? 0? 1 ? ??洋紅 ? ?1? 0 ? 1
? ? ?白? ? 1 ? 1? 1 ? ??青藍 ? ?0? 1 ? 1
? ? ?紅? ? 1 ? 0? 0 ? ??天藍 0.67 0 ? 1
? ? ?綠? ? 0 ? 1? 0 ? ??橘黃 ? ?1 0.50
? ? ?藍? ? 0 ? 0? 1 ? ??深紅 ? 0.5 0 ?0
? ? ?黃? ? 1 ? 1? 0 ? ?? 灰 ? ?0.5 0.50.5 ? ? ?
??--------------------------------------------
??注意:MATLAB中調色板色彩強度[0,1],0代表最暗,1代表最亮。
2、產生標準調色板的函數
??-------------------------------------------------
? ? 函數名 ?? ? 調色板
??-------------------------------------------------
? ? ?Hsv? ? ?色彩飽和度,以紅色開始,并以紅色結束
? ? ?Hot? ? ?黑色-紅色-黃色-白色
? ? ?Cool? ??青藍和洋紅的色度
? ? ?Pink? ? ?粉紅的色度
? ? ?Gray? ? ?線型灰度
? ? ?Bone? ??帶藍色的灰度
? ? ?Jet? ? ??Hsv的一種變形,以藍色開始,以藍色結束
? ? ?Copper? ?線型銅色度
? ? ?Prim? ? ?三棱鏡,交替為紅、橘黃、黃、綠和天藍
? ? ?Flag? ? ?交替為紅、白、藍和黑
--------------------------------------------------
缺省情況下,調用上述函數灰產生一個64×3的調色板,用戶也可指定調色板大小。
總結
以上是生活随笔為你收集整理的机器学习之线性回归(matlab)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: kafka是存储到本地磁盘么_Kafka
- 下一篇: ARMA模型的性质之ARMA模型