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