吳恩達機器學習訓練2 Logistic回歸

2021-09-20 12:52:46 字數 4003 閱讀 7392

function plotdata(x, y)

figure; hold on;

pos = find(y==1);%返回向量y中數值為1的位置,pos也為向量

neg = find(y==0);%返回向量y中數值為0的位置,neg也為向量

%繪製y==1的點,使用紅+表示

plot(x(pos,1),x(pos,2),'r+','linewidth',2,'markersize',7);

%繪製y==0的點,使用藍o表示

(2)計算代價值和梯度

補充完整sigmoid函式。

function g = sigmoid(z)

g = zeros(size(z));

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

end

補充完整costfunction函式

function [j, grad] = costfunction(theta, x, y)

m = length(y); % number of training examples

j = 0;

grad = zeros(size(theta));

j = ((log(sigmoid(x*theta)))'*y + (log(1-sigmoid(x*theta)))'*(1-y))/(-m);

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

end

計算出theta為零向量的代價值和梯度分別為:

cost at initial theta (zeros): 0.693147

gradient at initial theta (zeros):

-0.100000

-12.009217

-11.262842

-0.1000

-12.0092

-11.2628

(3)使用fminunc函式進行優化

options = optimset('gradobj', 'on', 'maxiter', 400);

[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('theta: \n');

fprintf(' %f \n', theta);

fprintf(' -25.161\n 0.206\n 0.201\n');

cost at theta found by fminunc: 0.203506

theta:

-24.933057

0.204408

0.199619

-25.161

0.206

0.201

(4)繪製決策邊界

function plotdecisionboundary(theta, x, y)

plotdata(x(:,2:3), y);

hold on;

if size(x, 2) <= 3

% only need 2 points to define a line, so choose two endpoints

plot_x = [min(x(:,2))-2, max(x(:,2))+2];

% calculate the decision boundary line

plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));

% plot, and adjust axes for better viewing

plot(plot_x, plot_y);

% legend, specific for the exercise

legend('admitted', 'not admitted', 'decision boundary');

axis([30, 100, 30, 100]);

else

% here is the grid range

u = linspace(-1, 1.5, 50);

v = linspace(-1, 1.5, 50);

z = zeros(length(u), length(v));

% evaluate z = theta*x over the grid

for i = 1:length(u)

for j = 1:length(v)

z(i,j) = mapfeature(u(i), v(j))*theta;

endend

z = z'; % important to transpose z before calling contour

% plot z = 0

% notice you need to specify the range [0, 0]

contour(u, v, z, [0, 0], 'linewidth', 2)

endhold off

end

決策邊界在本二元分類中實際為z = theta(1) *x0+ theta(2) *x1 + theta(3) x2 = 0(x0 =1)

解該方程得到 x2 = -1/theta(3)(theta(1) + theta(2) *x1)

獲得的圖形為:

(5)**函式和**準確率

完成predict函式:

function p = predict(theta, x)

m = size(x, 1); % number of training examples

p = zeros(m, 1);

p = sigmoid(x*theta) >=0.5;

end

計算資料[1 45 85]分類y = 1的概率:

prob = sigmoid([1 45 85] * theta);

fprintf(['for a student with scores 45 and 85, we predict an admission ' ...

'probability of %f\n'], prob);

fprintf('expected value: 0.775 +/- 0.002\n\n');

其輸出為:

for a student with scores 45 and 85, we predict an admission probability of 0.774324

expected value: 0.775 +/- 0.002

統計原始資料分類的準確率:

p = predict(theta, x);

fprintf('train accuracy: %f\n', mean(p == y) * 100);

fprintf('\n');

其輸出為:

train accuracy: 89.000000

吳恩達機器學習問題2

吳恩達課程中遇到的問題 第三週程式設計題 問題1 如果有大佬麻煩告知下 謝謝 就是為啥寫的 m,n size x 但是size x 是118 28,但是 m n 是 100 2?問題2 代價函式costfuction裡,為啥計算梯度grad的時候,明明公式是 最後乘的是x,但是 程式卻要寫成x 即x...

吳恩達機器學習筆記

為了解決實際生活中的問題,我們通常需要乙個數學模型。比如,小明有乙個房子 他想賣掉房子 為了知道房子的 小明收集了該地區近兩年的房屋交易 他發現房屋 與房屋大小呈正相關,所以他畫了了一幅圖 小明的房屋大小用紅色的 代替。可見和小明房屋一樣大小的房子並不存在,而類似的房屋 又有很大差別,如此小明決定用...

吳恩達機器學習感悟

吳恩達機器學習,斯坦福2014筆記 由8.2 神經元和大腦想到的 神經重連實驗,比如眼睛連到聽覺皮層,則聽覺皮層學會了看 眼睛連到觸覺皮層,則觸覺皮層學會了看 舌頭上加攝像頭關聯的電極陣列,則負責舌頭感知的皮層學會了看。這寫neuron re wiring實驗,給出的結論是大腦各區使用的是同一種演算...