編程作業(yè)(二)

邏輯回歸

邏輯回歸

任務(wù)一 可視化數(shù)據(jù)(選擇)

在ex2.m文件中已經(jīng)導(dǎo)入了ex2data1.txt中的數(shù)據(jù)蛋叼,其代碼如下:

data = load('ex2data1.txt');
X = data(:, [1, 2]);
y = data(:, 3);

我們只需在plotData.m文件中,將plotData()函數(shù)代碼補(bǔ)充完整台囱,代碼如下:

positive = find(y==1);
negative = find(y==0);

plot(X(positive, 1), X(positive, 2), 'k+', 'LineWidth', 2, 'MarkerSize', 7);
plot(X(negative, 1), X(negative, 2), 'ko', 'MarkerFaceColor', 'y','MarkerSize', 7);

其中棋返,此代碼中涉及到的plot()函數(shù)的應(yīng)用可查看本人的Octave教程(四)或自行查閱相關(guān)文檔俺驶。

運(yùn)行該任務(wù)部分代碼,其結(jié)果如下圖所示:

任務(wù)二 代價(jià)函數(shù)與梯度下降算法

在ex2.m文件中已經(jīng)將相關(guān)參數(shù)初始化代碼以及函數(shù)調(diào)用代碼寫(xiě)好却嗡,其代碼如下:

[m, n] = size(X);

% Add intercept term to x and X_test
X = [ones(m, 1) X];

% Initialize fitting parameters
initial_theta = zeros(n + 1, 1);

% Compute and display initial cost and gradient
[cost, grad] = costFunction(initial_theta, X, y);

我們只需在costFunction.m將代價(jià)函數(shù)和梯度下降算法相關(guān)代碼補(bǔ)充完整即可。不過(guò)在此之前嘹承,我們需要在sigmoid.m文件中將sigmoid()函數(shù)補(bǔ)充完整窗价。

首先,我們將要用到的公式列舉一下:

  • 假設(shè)函數(shù)hθ(x):
  • 代價(jià)函數(shù)J(θ):

其向量化后為:

  • 梯度下降算法:

其向量化后為:


然后赶撰,我們?cè)趕igmoid.m文件中舌镶,根據(jù)假設(shè)函數(shù)hθ(x)公式鍵入如下代碼:

g = 1 ./ (1+exp(-z));

最后柱彻,我們?cè)赾ostFunction.m文件中,將代價(jià)函數(shù)J(θ)和梯度下降算法分別補(bǔ)充完整餐胀,其代碼分別如下:

代價(jià)函數(shù)J(θ)

J = (-y'*log(sigmoid(X*theta))-(1-y)'*log(1-sigmoid(X*theta))) / m;

梯度下降算法

grad = (X'*(sigmoid(X*theta)-y)) / m;

運(yùn)行該部分代碼哟楷,其結(jié)果為:

Cost at initial theta (zeros): 0.693147
Expected cost (approx): 0.693
Gradient at initial theta (zeros):
 -0.100000
 -12.009217
 -11.262842
Expected gradients (approx):
 -0.1000
 -12.0092
 -11.2628

Cost at test theta: 0.218330
Expected cost (approx): 0.218
Gradient at test theta:
 0.042903
 2.566234
 2.646797
Expected gradients (approx):
 0.043
 2.566
 2.647

任務(wù)三 高級(jí)優(yōu)化算法

在ex2.m文件中已經(jīng)將使用fminunc()函數(shù)的相關(guān)代碼寫(xiě)好,我們只需運(yùn)行即可否灾,其代碼如下:

%  Set options for fminunc
options = optimset('GradObj', 'on', 'MaxIter', 400);

%  Run fminunc to obtain the optimal theta
%  This function will return theta and the cost 
[theta, cost] = ...
    fminunc(@(t)(costFunction(t, X, y)), initial_theta, options);

% Print theta to screen
fprintf('Cost at theta found by fminunc: %f\n', cost);
fprintf('Expected cost (approx): 0.203\n');
fprintf('theta: \n');
fprintf(' %f \n', theta);
fprintf('Expected theta (approx):\n');
fprintf(' -25.161\n 0.206\n 0.201\n');

% Plot Boundary
plotDecisionBoundary(theta, X, y);

% Put some labels 
hold on;
% Labels and Legend
xlabel('Exam 1 score')
ylabel('Exam 2 score')

% Specified in plot order
legend('Admitted', 'Not admitted')
hold off;

該任務(wù)運(yùn)行結(jié)果為:

Cost at theta found by fminunc: 0.203498
Expected cost (approx): 0.203
theta:
 -25.161272
 0.206233
 0.201470
Expected theta (approx):
 -25.161
 0.206
 0.201

任務(wù)四 邏輯回歸的預(yù)測(cè)

根據(jù)邏輯函數(shù)g(z)可知:

  • 當(dāng)z≥0.5時(shí)卖擅,我們可以預(yù)測(cè)y=1
  • 當(dāng)z﹤0.5時(shí),我們可以預(yù)測(cè)y=0

因此墨技,根據(jù)以上結(jié)論惩阶,我們可在predict.m文件中將predict()函數(shù)代碼補(bǔ)充完整,其代碼如下:

p(sigmoid( X * theta) >= 0.5) = 1;
p(sigmoid( X * theta) < 0.5) = 0;

此處代碼可拆成如下代碼便于理解:

k = find(sigmoid( X * theta) >= 0.5 );
p(k)= 1;

d = find(sigmoid( X * theta) < 0.5 );
p(d)= 0;

該任務(wù)的運(yùn)行結(jié)果為:

For a student with scores 45 and 85, we predict an admission probability of 0.776289
Expected value: 0.775 +/- 0.002

Train Accuracy: 89.000000
Expected accuracy (approx): 89.0

正則化的邏輯回歸

任務(wù)一 可視化數(shù)據(jù)

由于ex2_reg.m文件和plotData.m文件中都已將相關(guān)代碼寫(xiě)好扣汪,我們只需運(yùn)行該任務(wù)代碼即可断楷,其運(yùn)行結(jié)果為:

任務(wù)二 代價(jià)函數(shù)與梯度下降算法

正則化的代價(jià)函數(shù)J(θ):

正則化的梯度下降算法:

根據(jù)上述公式,我們可在costFunctionReg.m文件中將代價(jià)函數(shù)和梯度下降算法補(bǔ)充完整崭别,其代碼如下:

theta_s = [0; theta(2:end)];
J= (-1 * sum( y .* log( sigmoid(X*theta) ) + (1 - y ) .* log( (1 - sigmoid(X*theta)) ) ) / m) + (lambda / (2*m) * (theta_s' * theta_s));
grad = ( X' * (sigmoid(X*theta) - y ) )/ m + ((lambda/m)*theta_s);

其運(yùn)行結(jié)果為:

Cost at initial theta (zeros): 0.693147
Expected cost (approx): 0.693
Gradient at initial theta (zeros) - first five values only:
 0.008475
 0.018788
 0.000078
 0.050345
 0.011501
Expected gradients (approx) - first five values only:
 0.0085
 0.0188
 0.0001
 0.0503
 0.0115

Program paused. Press enter to continue.

Cost at test theta (with lambda = 10): 3.164509
Expected cost (approx): 3.16
Gradient at test theta - first five values only:
 0.346045
 0.161352
 0.194796
 0.226863
 0.092186
Expected gradients (approx) - first five values only:
 0.3460
 0.1614
 0.1948
 0.2269
 0.0922

任務(wù)三 高級(jí)優(yōu)化算法

其代碼已經(jīng)寫(xiě)好冬筒,我們只需運(yùn)行即可,其結(jié)果為:

Train Accuracy: 83.050847
Expected accuracy (with lambda = 1): 83.1 (approx)

任務(wù)四 選擇正則化參數(shù)λ(選做)

我們分別令正則化參數(shù)λ=0, 10, 100茅主,其結(jié)果分別為:

λ=0

Train Accuracy: 86.440678

λ=10

Train Accuracy: 74.576271

λ=100

Train Accuracy: 61.016949

其中舞痰,關(guān)于圖像繪制請(qǐng)自行查看plotDecisionBoundary.m文件。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末诀姚,一起剝皮案震驚了整個(gè)濱河市响牛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赫段,老刑警劉巖呀打,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異糯笙,居然都是意外死亡聚磺,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)炬丸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)瘫寝,“玉大人,你說(shuō)我怎么就攤上這事稠炬』腊ⅲ” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵首启,是天一觀的道長(zhǎng)暮屡。 經(jīng)常有香客問(wèn)我,道長(zhǎng)毅桃,這世上最難降的妖魔是什么褒纲? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任准夷,我火速辦了婚禮,結(jié)果婚禮上莺掠,老公的妹妹穿的比我還像新娘衫嵌。我一直安慰自己,他們只是感情好彻秆,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布楔绞。 她就那樣靜靜地躺著,像睡著了一般唇兑。 火紅的嫁衣襯著肌膚如雪酒朵。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天扎附,我揣著相機(jī)與錄音蔫耽,去河邊找鬼。 笑死留夜,一個(gè)胖子當(dāng)著我的面吹牛针肥,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播香伴,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼具则!你這毒婦竟也來(lái)了即纲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤博肋,失蹤者是張志新(化名)和其女友劉穎低斋,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體匪凡,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膊畴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了病游。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唇跨。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖衬衬,靈堂內(nèi)的尸體忽然破棺而出买猖,到底是詐尸還是另有隱情,我是刑警寧澤滋尉,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布玉控,位于F島的核電站,受9級(jí)特大地震影響狮惜,放射性物質(zhì)發(fā)生泄漏高诺。R本人自食惡果不足惜碌识,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望虱而。 院中可真熱鬧筏餐,春花似錦、人聲如沸薛窥。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)诅迷。三九已至佩番,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間罢杉,已是汗流浹背趟畏。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留滩租,地道東北人赋秀。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像律想,于是被迫代替她去往敵國(guó)和親猎莲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • 正則化的線性回歸以及偏差VS方差 正則化的線性回歸 背景:數(shù)據(jù)集中包含水位變化的歷史記錄x和水壩的水量y技即。 任務(wù)一...
    SmallRookie閱讀 418評(píng)論 0 0
  • 之前瀏覽Coursera上機(jī)器學(xué)習(xí)方面的課程著洼,Andrew Ng的《Machine Learning》課程評(píng)分一直...
    黑洞王閱讀 1,555評(píng)論 0 2
  • 作業(yè)1:<!DOCTYPE html> 圖形 .box{width:0px;height:0px;bord...
    17057任合宇閱讀 95評(píng)論 1 1
  • 神經(jīng)網(wǎng)絡(luò)學(xué)習(xí) 任務(wù)一 數(shù)據(jù)可視化 在本次編程練習(xí)中,我們使用編程練習(xí)三種的數(shù)據(jù)集而叼。除此之外身笤,我們隨機(jī)從數(shù)據(jù)集中選取...
    SmallRookie閱讀 437評(píng)論 0 0
  • 不管做什么都需要三殊勝攝持 公案:兩個(gè)師父去見(jiàn)佛陀 一位喝了有蟲(chóng)的水見(jiàn)到了佛陀 一位沒(méi)有喝而渴死 佛陀說(shuō)面見(jiàn)佛陀的...
    塔秋旺姆閱讀 567評(píng)論 0 0