1. 程式人生 > >機器學習基石(Machine Learning Foundations) 機器學習基石 作業四 Q13-20 MATLAB實現

機器學習基石(Machine Learning Foundations) 機器學習基石 作業四 Q13-20 MATLAB實現

        大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作業四 Q13-20的MATLAB實現。以前的程式碼都是通過C++實現的,但是發現C++實現這些程式碼太麻煩,這次作業還要頻繁更改引數值,所以選擇用MATLAB實現了。與C++相比,MATLAB實現顯然輕鬆很多,在資料匯入方面也更加方便。我的程式碼雖然能夠得到正確答案,但是其中可能有某些思想或者細節是錯誤的,如果各位博友發現,請及時留言糾正,謝謝!再次宣告,博主提供實現程式碼的原因不是為了讓各位通過測試,而是為學習有困難的同學提供一條解決思路,希望我的文章對您的學習有一些幫助!

1.sign函式

function S = sign(x)  %計算sign
[m,n] = size(x);
for i = 1:m,
    for j = 1:n;

        if x(i,j) <= 0,
            S = 1;
        else
            S = -1;
        end
    end
end
end

2.計算正則化線性迴歸函式LGwithRegularization

function Wreg = LGwithRegularization(X,y,lambda)
[m,n] = size(X);
Wreg = inv(X' * X + lambda * eye(n)) * X' * y;%正則化的線性迴歸求解
end

3.錯誤計算函式Error01 (注意,這裡用的是0/1錯誤)

function E = Error01(X,y,Wreg)
[m,n] = size(X);
E = 1 - sum(sign(X * Wreg) == y) / m;%計算錯誤率
end

4.主程序

clc
trainingData = load('trainingData.txt');
Xtrain = trainingData(:, [1, 2]); ytrain = trainingData(:, 3);
testData = load('testData.txt');
Xtest = testData(:,[1,2]);ytest = testData(:,3);
[m,n] = size(Xtrain);
Xtrain = [ones(m,1), Xtrain];
[a,b] = size(Xtest);
Xtest = [ones(a,1), Xtest];

%13-15
%lambda = 10^-3;
%Wreg = LGwithRegularization(Xtrain,ytrain,lambda);
%Ein = Error01(Xtrain,ytrain,Wreg)
%Eout = Error01(Xtest,ytest,Wreg)

%16-17
%lambda = 10^-3;
%Wreg = LGwithRegularization(Xtrain(1:120,:),ytrain(1:120,:),lambda);
%Etrain = Error01(Xtrain(1:120,:),ytrain(1:120,:),Wreg)
%Eval = Error01(Xtrain(121:200,:),ytrain(121:200,:),Wreg)
%Eout = Error01(Xtest,ytest,Wreg)

%18
%lambda = 10^0;
%Wreg = LGwithRegularization(Xtrain,ytrain,lambda);
%Ein = Error01(Xtrain,ytrain,Wreg)
%Eout = Error01(Xtest,ytest,Wreg)

%19
%lambda = 10^-6
%Ecv = 0;
%v = 5;
%per = m / v;
%for i = 1:v,
%    Xtemp = Xtrain;
%    ytemp = ytrain;
%    Xtemp(1+(i-1)*per:i*per,:) = [];%出去用於求交叉驗證的樣本
%    ytemp(1+(i-1)*per:i*per,:) = [];
%    Wreg = LGwithRegularization(Xtemp,ytemp,lambda);
%    Error01(Xtrain(1+(i-1)*per:i*per,:),ytrain(1+(i-1)*per:i*per,:),Wreg)%利用交叉驗證的樣本求Ecv
%    Ecv = Ecv + Error01(Xtrain(1+(i-1)*per:i*per,:),ytrain(1+(i-1)*per:i*per,:),Wreg);
%end
%Ecv = Ecv / v

%20
%lambda = 10^-8;
%Wreg = LGwithRegularization(Xtrain,ytrain,lambda);
%Ein = Error01(Xtrain,ytrain,Wreg)
%Eout = Error01(Xtest,ytest,Wreg)


13.第十三題


(1)題意:從兩個網站下載訓練樣本和測試樣本,利用正則化的線性迴歸,引數lambda取10,得到Ein 和Eout

(2)答案:Ein = 0.050 Eout = 0.045

14-15:第14-15題


(1)題意: 14.分別取lamda值為.....計算Ein和Eout。選取最小的Ein對應的正確答案,如果兩個lambda對應的答案一樣,選擇大的lambda

                     15.選取最小Eout對應的正確答案

(2)答案:14.log = -8, Ein = 0.015,Eout = 0.02

                    15.log = -7,Ein = 0.03,Eout = 0.015

16.第十六題

(1)題意:利用前120個樣本作為訓練樣本,後80個樣本作為測試樣本,分別計算不同lambda對應的Etrain,Eval,Eout,選擇最小的Etrain對應的答案

(2)答案:log = -8,Etrain = 0, Eval = 0.05, Eout = 0.025

17.第十七題

(1)題意:和16題的做法一樣,選擇最小Eval對應的正確答案

(2)答案:log = 0, Etrain = 0.0333,Eval = 0.0375,Eout = 0.0280

18.第十八題

(1)題意:利用17題得到的最優lambda,利用所有樣本作為訓練樣本,計算Ein,Eout

(2)答案:Ein = 0.035 Eout=0.02

19-20:第19-20題

(1)題意:19.把樣本分為5份,利用交叉驗證的方法計算Ecv,計算得到最小的Ecv

                  20.利用19得到的最小Ecv對應的lambda值,計算Ein,Eout

(2)答案:19. log=-8, Eval = 0.03

                    20.Ein = 0.015,Eout = 0.02


相關推薦

機器學習基石(Machine Learning Foundations) 機器學習基石 作業 Q13-20 MATLAB實現

        大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作業四 Q13-20的MATLAB實現。以前的程式碼都是通過C++實現的,但是發現C++實現這些程式碼太麻煩,這

機器學習基石(Machine Learning Foundations) 機器學習基石 作業 課後習題解答

   大家好,我是Mac Jiang,今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作業四的習題解答。筆者在做這些題目時遇到很多困難,當我在網上尋找答案時卻找不到,而林老師又不提供答案,所以我就想把自己做題

機器學習基石(Machine Learning Foundations) 機器學習基石 課後習題連結彙總

        大家好,我是Mac Jiang,很高興您能在百忙之中閱讀我的部落格!這個專題我主要講的是Coursera-臺灣大學-機器學習基石(Machine Learning Foundations)的課後習題解答。筆者是在學習了Ng的Machine Learning之

機器學習基石(Machine Learning Foundations) 機器學習基石 作業Q13-15 C++實現

        大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作業三 Q6-10的C++實現。雖然有很多大神已經在很多部落格中給出了Phython的實現,但是給出C++實現的

機器學習基石(Machine Learning Foundations) 機器學習基石 手寫版筆記大全

      大家好,我是Mac Jiang。看到大家對我的部落格的支援,非常感動。今天和大家分享的是我在學習機器學習基石時的手寫筆記。當時在學習的時候,我把一些我認為重要的東西寫了下來,一來是為了加深印象,二來是為了供以後複習之用。         網上的機器學習基石筆記也

機器學習基石(Machine Learning Foundations) 機器學習基石 作業三 Q18-20 C++實現

        大家好,我是Mac Jiang,今天和大家分享Coursera-NTU-機器學習基石(Machine Learning Foundations)-作業三 Q18-20的C++實現。雖然有很多大神已經在很多部落格中給出了Phython的實現,但是給出C++實現

機器學習基石 (Machine Learning Foundations) 作業1 Q15-17的C++實現

大家好,我是Mac Jiang。今天和大家分享Coursera-臺灣大學-機器學習基石 (Machine Learning Foundations) -作業1的Q15-17題的C++實現。這部分作業的任務主要是寫一個PLA分類器,用於解決一個4維資料的分類問題。

機器學習基石 機器學習基石Machine Learning Foundations作業1 習題解答

        大家好,我是Mac Jiang,今天和大家分享coursera-NTU-機器學習基石(Machine Learning Foundations)-作業1的習題解答。筆者是在學習了Ng的Machine Learning之後開始學習這門課程的,但還是感覺收穫頗豐

斯坦福大學公開課機器學習machine learning system design | trading off precision and recall(F score公式的提出:學習算法中如何平衡(取舍)查準率和召回率的數值)

ron 需要 color 不可 關系 machine 同時 機器學習 pos 一般來說,召回率和查準率的關系如下:1、如果需要很高的置信度的話,查準率會很高,相應的召回率很低;2、如果需要避免假陰性的話,召回率會很高,查準率會很低。下圖右邊顯示的是召回率和查準率在一個學習算

斯坦福大學公開課機器學習machine learning system design | data for machine learning(數據量很大時,學習算法表現比較好的原理)

ali 很多 好的 info 可能 斯坦福大學公開課 數據 div http 下圖為四種不同算法應用在不同大小數據量時的表現,可以看出,隨著數據量的增大,算法的表現趨於接近。即不管多麽糟糕的算法,數據量非常大的時候,算法表現也可以很好。 數據量很大時,學習算法表現比

機器學習Machine Learning)大家與資源

內容挺多的,轉過來吧 =======================國外==================== Machine Learning 大家(1):M. I. Jordan (http://www.cs.berkeley.edu/~jordan/)  &nbs

Machine Learning機器學習)之三

Machine Learning(機器學習)之二:juejin.im/post/5bd1d1… 分類問題 要嘗試分類,一種方法是使用線性迴歸並將大於0.5的所有預測對映為1,將所有小於0.5的預測對映為0.但是,此方法不能很好地工作,因為分類實際上不是線性函式。 分類問題就像迴歸問題一

第十週(大規模機器學習)-【機器學習-Coursera Machine Learning-吳恩達】

目錄 處理大資料集:     隨機的梯度下降     對映化簡 1 隨機的梯度下降  - 隨機梯度下降演算法 對於每一次迭代,只需要對一個樣本擬合好就可以了。 它只需要一次關注一個樣本

第九周(異常發現+推薦系統)-【機器學習-Coursera Machine Learning-吳恩達】

目錄     異常檢測     多元高斯分佈的異常檢測     推薦系統 1 異常檢測 1)正態分佈或高斯分佈: 2)異常檢測演算法: 3)異常檢

第八週(無監督學習)-【機器學習-Coursera Machine Learning-吳恩達】

目錄     K-means演算法     PCA(主成分分析) 1 K-means 1)演算法原理:     a 選擇聚類中心

第七週(SVM)-【機器學習-Coursera Machine Learning-吳恩達】

前言:說實話SVM,看了視訊我確實還是不太理解,所以這裡就之記一些重要的概念吧。 看到一個好的文章:[機器學習] Coursera筆記 - Support Vector Machines 支援向量機又叫做 大間距分類器。複雜SVM,處理非線性分類。 代價函式: 核函式——&g

第六週(機器學習應用建議)-【機器學習-Coursera Machine Learning-吳恩達】

目錄     評估學習演算法:     方差和偏差     學習曲線     機器學習系統設計 1 評估假設,選擇多項

第五週(反向神經網路)-【機器學習-Coursera Machine Learning-吳恩達】

目錄     代價函式     反向傳播     神經網路總結 1 代價函式 2 反向傳播演算法——讓代價函式最小化的演算法讓代價函式最小化,利用ma

機器學習Machine Learning and Data Mining)CS 5751——Lab1作業記錄

Activity3 繪製散點圖矩陣,顯示屬性之間的相關性: mpg,hp,disp,drat,wt,qsec。 使用散點圖,評論哪些屬性對具有最高的相關性。 plot(mtcars$wt, mtcars$mpg, main="WT vs. MPG", xla

spark機器學習 原始碼 Machine Learning With Spark source code

@rover這個是C++模板 --胡滿超 stack<Postion> path__;這個裡面 ”<> “符號是什麼意思?我在C++語言裡面沒見過呢? 初學者,大神勿噴。