机器学习课程(吴恩达)编程答案(2)

plotData.m

function plotData(X, y)
%PLOTDATA Plots the data points X and y into a new figure 
%   PLOTDATA(x,y) plots the data points with + for the positive examples
%   and o for the negative examples. X is assumed to be a Mx2 matrix.

% Create New Figure
figure; hold on;

% ====================== YOUR CODE HERE ======================
% Instructions: Plot the positive and negative examples on a
%               2D plot, using the option 'k+' for the positive
%               examples and 'ko' for the negative examples.
%

% Find Indices of Positive and Negative Examples 

pos = find(y==1); neg = find(y == 0);

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

hold off;
end

在这里插入图片描述

sigmoid.m

function g = sigmoid(z)
%SIGMOID Compute sigmoid function
%   g = SIGMOID(z) computes the sigmoid of z.

% You need to return the following variables correctly 
g = zeros(size(z));

% ====================== YOUR CODE HERE ======================
% Instructions: Compute the sigmoid of each value of z (z can be a matrix,
%               vector or scalar).

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

% =============================================================
end

costFunction.m

function [J, grad] = costFunction(theta, X, y)

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

J = 0;
grad = zeros(size(theta));

% ====================== YOUR CODE HERE ======================


for i=1:m
    J=J+(-y(i)*log(sigmoid(theta'*X(i,:)'))-(1-y(i))*log(1-sigmoid(theta'*X(i,:)')));
end
J=J/m;

for i=1:m
    grad=grad+(sigmoid(theta'*X(i,:)')-y(i))*X(i,:)';
end
grad=grad/m;


end

function p = predict(theta, X)

m = size(X, 1); % Number of training examples


p = zeros(m, 1);

% ====================== YOUR CODE HERE ======================

p=sigmoid(X*theta);

for i=1:m
    if p(i,1)<0.5
        p(i,1)=0;
    else 
        p(i,1)=1;
    end
end

end
发布了35 篇原创文章 · 获赞 4 · 访问量 4025

猜你喜欢

转载自blog.csdn.net/qq_42589654/article/details/105199028