Andrew NG机器学习逻辑回归编程作业

Exercise 2:Logistic Regression—实现一个逻辑回归
问题描述:用逻辑回归根据学生的考试成绩来判断该学生是否可以入学。

这里的训练数据(training instance)是学生的两次考试成绩,以及TA是否能够入学的决定(y=0表示成绩不合格,不予录取;y=1表示录取)

因此,需要根据trainging set 训练出一个classification model。然后,拿着这个classification model 来评估新学生能否入学。

训练数据的成绩样例如下:第一列表示第一次考试成绩,第二列表示第二次考试成绩,第三列表示入学结果(0–不能入学,1–可以入学)

34.62365962451697, 78.0246928153624,  0
30.28671076822607, 43.89499752400101, 0
35.84740876993872, 72.90219802708364, 0
60.18259938620976, 86.30855209546826, 1
...               ...

训练数据图形表示 如下:橫坐标是第一次考试的成绩,纵坐标是第二次考试的成绩,右上角的 + 表示允许入学,圆圈表示不允许入学。(分数决定命运,太悲惨了!)

这里写图片描述
该训练数据的图形 可以通过Matlab plotData函数画出来,它调用Matlab中的plot函数和find函数,Matlab代码实现如下:
0. Visualizing the data
Matlab将文本文件中的训练数据加载到 矩阵X 和 向量 y 中

%Initialization
clear all; close all; clc

data = csvread('ex2data1.txt');
X = data(:, [1, 2]); y = data(:, 3);
%X读取的是第一列和第二列的所有数据
%y读取的是第三列的所有数据

录取的点用+表示,未录取的点用圆圈o表示。plotData函数的框架如下:

% ==================== Part 1: Plotting ====================

fprintf(['Plotting data with + indicating (y = 1) examples and o ' ...
         'indicating (y = 0) examples.\n']);
function plotData(X, y)
    figure; hold on;
%====================== YOUR CODE HERE ======================
    xlabel('Exam 1 score')
    ylabel('Exam 2 score')
    legend('Admitted', 'Not admitted')
    hold off;
end

加载完数据之后,执行以下代码(调用自定义的plotData函数),将图形画出来:

function plotData(X, y)
figure; hold on;

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


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);

注释:
1.pos = find(y == 1)
找到y等于1的,数据的行数
neg = find(y == 0);
找到y等于0的,数据的行数
X(pos,1)表示X中,第pos行,第一列数据
X(pos,2)表示X中,第pos行,第二列数据
下面类似,不在赘述
2.plot(X(pos,1),X(pos,2),’k+’,’Linewidth’,2,’MarkerSize’,7);
表示。画出,横坐标等于X(pos,1)纵坐标等于X(pos,2)的点。用+号表示,线宽为2,大小为7
下面类似


图形画出来之后,对训练数据就有了一个大体的可视化的认识了。接下来就要实现 模型了,这里需要训练一个逻辑回归模型。

1. sigmoid function
要求实现如下函数,实现时z是向量,要对每个元素都做计算。
这里写图片描述

function g = sigmoid(z)
    g = zeros(size(z));设置初值
    g = 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值