机器学习 | 实验三:逻辑回归和牛顿法

news2024/12/28 19:38:30

⭐ 对应笔记:牛顿法

📚描述

在本练习中,我们将使用牛顿法对分类问题实现逻辑回归。

📚数据

在本练习中,假设一所高中有一个数据集,该数据集表示40名被大学录取的学生和40名未被录取的学生。 每个 ( x ( i ) , y ( i ) ) ( x^{ ( i )} , y^{ ( i )} ) (x(i),y(i))训练示例包含学生在两个标准化考试中的成绩以及学生是否被录取的标签。我们的任务是建立一个二元分类模型,根据学生在两门考试中的成绩来估计大学录取的机会。 在训练数据中

  • x 数组的第一列代表所有测试1的分数,第二列代表所有测试2的分数。
  • y 矢量使用" 1“标记被录取的学生和" 0”标记没被录取的学生。

📚绘制数据

将训练样例的数据加载到程序中,并将 x 0 = 1 x_0 = 1 x0=1截距项添加到x 矩阵中。在开始牛顿方法之前,我们将首先使用不同的符号绘制数据来表示两个类。 在Matlab / Octave中,我们可以使用find命令分离正类和负类:

% find返回满足指定条件的行的索引
pos = find ( y == 1 ) ; neg = find ( y == 0 ) ;
% Assume the features are in the 2nd and 3rd columns of x
plot ( x ( pos , 2 ) , x ( pos , 3 ) , '+' ) ; hold on
plot ( x ( neg , 2 ) , x ( neg , 3 ) , ' o ' )

x = load('ex4x.dat');
y = load('ex4y.dat');
m = length(y);
x = [ones(m,1),x] ;

% find返回满足指定条件的行的索引
pos = find ( y == 1 ) ; neg = find ( y == 0 ) ;
% Assume the features are in the 2nd and 3rd columns of x
plot ( x ( pos , 2 ) , x ( pos , 3 ) , '+' ) ; hold on
plot ( x ( neg , 2 ) , x ( neg , 3 ) , ' o ' )
xlabel('Exam1 score');
ylabel('Exam2 score');
legend('Admitted','Not admitted');

在这里插入图片描述


📚牛顿法

回想一下逻辑回归,假设函数为

在这里插入图片描述

Matlab/Octave没有sigmoid函数库,所以你必须自己定义它。最简单的方法是通过内联表达式。

g = inline('1.0 ./ (1.0 + exp(-z))');
%Usage: To find the value of sigmoid
%evaluated at 2, call g(2)

代价函数为

在这里插入图片描述

我们的目标是使用牛顿的方法来最小化这个函数。回想一下,牛顿方法的更新规则是

在这里插入图片描述

在逻辑回归中,梯度和海森值是

在这里插入图片描述

注意,上面给出的公式是向量化的版本。具体来说,这意味着 x ( i ) ∈ R n + 1 x^{(i)}∈R^{n+1} x(i)Rn+1, x ( i ) ( x ( i ) ) T ∈ R ( n + 1 ) × ( n + 1 ) x^{(i)}(x^{(i)})^T∈R^{(n+1)×(n+1)} x(i)(x(i))TR(n+1)×(n+1)其中 h θ ( x ( i ) ) h_θ ( x ^{( i )} ) hθ(x(i)) y ( i ) y^{( i )} y(i)是标量。


现在,在你的程序中实现牛顿法,从初值θ = 0 开始。为了确定使用多少迭代,计算每次迭代过程中的 L ( θ ) L(θ) L(θ)和绘制你的结果。牛顿方法通常在5-15次迭代中收敛。如果您发现自己使用了更多的迭代,那么您应该检查实现中的错误。


收敛后,使用theta值来找到分类问题中的决策边界,它对应于 θ T x = 0 θ^Tx=0 θTx=0

在这里插入图片描述


绘制决策边界等价于绘制 θ T x = 0 θ^Tx=0 θTx=0线。

x = load('ex4x.dat');
y = load('ex4y.dat');
m = length(y);
mu = mean(x);
xx = x;
sigma = std(x);
x = (x - mean(x))./std(x);
x = [ones(m,1),x] ;
n = size(x,2);
% find返回满足指定条件的行的索引
pos = find ( y == 1 ) ; neg = find ( y == 0 ) ;
plot ( xx ( pos , 1 ) , xx ( pos , 2 ) , '+' ) ; 
hold on
plot ( xx ( neg , 1 ) , xx ( neg , 2 ) , ' o ' )
xlabel('Exam1 score');
ylabel('Exam2 score');
legend('Admitted','Not admitted');

MaxIter = 1500;
theta = zeros(size(x(1,:)))';
e = 1e-6;
H = zeros(n,n);
g = @(x) 1./(1+exp(-x));
for i = 1:MaxIter
    z = x * theta;
    h = g(z); %logistic model
    L_theta(i,1) = -(1/m)*sum(y.*log(h)+(1-y).*log(1-h)); %log likelihood function
    delta_L = (1/m)*x'*(h-y); %calculate gradient   
    %calculate Hessian matrix
    H = (1/m).*x' * diag(h) * diag(1-h) * x;
    %update L and theta
    if (i > 1) && (abs(L_theta(i,1) - L_theta(i-1,1)) <= e )
        break;
    end
    theta = theta - H^(-1)*delta_L;
    store(i,:) = [theta',L_theta(i,1)];
end
x_axis = x(:,2)*sigma(1) + mu(1);
y_axis = (-theta(1,1).*x(:,1) - theta(2,1).*x(:,2))/theta(3,1);
y_axis = y_axis*sigma(2) + mu(2);
plot(x_axis, y_axis,'-');
figure
plot(1:i-1,store,'-');
legend('\theta_0','\theta_1','\theta_2','L{(\theta)}');
xlabel('iter value');
ylabel('value');

这里的xx相当于拷贝了一份x,用来画点阵图,避免特征放缩后影响最终显示

迭代过程

在这里插入图片描述

边界划分

在这里插入图片描述


回答问题

θ的值?收敛需要多少次迭代?

最后得到的θ值为[-0.056595,1.472,1.5706],需要进行5次迭代
在这里插入图片描述

考试1得20分,考试2得80分的学生不被录取的概率是多大?

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/425331.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

pandas笔记:offset.DateOffset

进行date的偏移 class pandas.tseries.offsets.DateOffset 1 参数说明 n 偏移量表示的时间段数。 如果没有指定时间模式&#xff0c;则默认为n天。 normalize是否将DateOffset偏移的结果向下舍入到前一天午夜**kwds 添加到偏移量的时间参数 年&#xff08;years&#xff09…

软考软件设计师 数据库知识点笔记

概念数据模型 了解即可 结构数据模型 数据库的三级模式结构 外模式对应视图 概念模式对应的是数据库管理系统里面的基本表 内模式对应的是数据库里的一些存储文件 上图可直接背下面概念 两级映像 有内模式跟物理独立性相关&#xff0c;有外模式跟逻辑独立性相关 两级映像其…

MySQL主从复制原理剖析与应用实践

vivo 互联网服务器团队- Shang Yongxing MySQL Replication&#xff08;主从复制&#xff09;是指数据变化可以从一个MySQL Server被复制到另一个或多个MySQL Server上&#xff0c;通过复制的功能&#xff0c;可以在单点服务的基础上扩充数据库的高可用性、可扩展性等。 一、背…

人工智能AI简史

AI人工智能简史 最近学习AI&#xff0c;顺便整理了一份AI人工智能简史&#xff0c;大家参考&#xff1a; 1951年 第一台神经网络机&#xff0c;称为SNARC&#xff1b;1956年 达特茅斯学院会议&#xff0c;正式确立了人工智能的研究领域&#xff1b;1966年 MIT发明ELIZA人机心…

【Java|golang】2409. 统计共同度过的日子数

Alice 和 Bob 计划分别去罗马开会。 给你四个字符串 arriveAlice &#xff0c;leaveAlice &#xff0c;arriveBob 和 leaveBob 。Alice 会在日期 arriveAlice 到 leaveAlice 之间在城市里&#xff08;日期为闭区间&#xff09;&#xff0c;而 Bob 在日期 arriveBob 到 leaveBo…

数字孪生灌区信息化-灌区现代化建设

平台概述 柳林数字孪生灌区信息化平台以物理灌区为单元、时空数据为底座、数学模型为核心、水利知识为驱动&#xff0c;对物理灌区全要素和建设运行全过程进行数字映射、智能模拟、前瞻预演&#xff0c;与物理灌区同步仿真运行、虚实交互、迭代优化&#xff0c;实现对物理灌区…

企业不会用、不敢用AIGC+ 服务怎么办,不妨试一下它?

自从去年ChatGPT上线后,国内外与AIGC相关的话题就一直备受关注。AIGC是指人工智能通用语言模型(Artificial General Language Model),是一种具有极高自然语言理解能力的人工智能模型,其通过大规模语料库训练,能够像人类一样自然地理解和生成语言。ChatGPT正是基于AIGC技术开发的…

数据挖掘(3.1)--频繁项集挖掘方法

目录 1.Apriori算法 Apriori性质 伪代码 apriori算法 apriori-gen(Lk-1)【候选集产生】 has_infrequent_subset(c,Lx-1)【判断候选集元素】 例题 求频繁项集&#xff1a; 对于频繁项集L{B,C,E}&#xff0c;可以得到哪些关联规则&#xff1a; 2.FP-growth算法 FP-tre…

sealos部署k8s集群

使用sealos部署kubernetes集群并实现集群管理 1. 初始环境 官方参考&#xff1a;https://www.sealyun.com/zh-Hans/docs/ 1.1 主机准备 都是静态ip&#xff0c;可上网 主机名主机IP服务器配置k8s-master01192.168.200.1002c4g 40Gk8s-node01192.168.200.1012c4g 40Gk8s-no…

Pytorch实现R-CNN系列目标检测网络

在PyTorch提供的已经训练好的图像目标检测中,均是R-CNN系列的网络&#xff0c;并且针对目标检测和人体关键点检测分别提供了容易调用的方法。针对目标检测的网络&#xff0c;输入图像均要求使用相同的预处理方式&#xff0c;即先将每张图像的像素值预处理到0 &#xff5e;1之间…

Flink 优化 (一) --------- 资源配置调优

目录一、内存设置1. TaskManager 内存模型2. 生产资源配置示例二、合理利用 cpu 资源1. 使用 DefaultResourceCalculator 策略2. 使用 DominantResourceCalculator 策略3 使用 DominantResourceCalculator 策略并指定容器 vcore 数三、并行度设置1. 全局并行度计算2. Source 端…

和猿辅导国奖选手的妈妈聊聊:数学新生代的成长之路

2023年第64届IMO中国国家队名单公布&#xff0c;来自猿辅导的学员王淳稷、孙启傲在此次国家队选拔赛中总成绩排名分列第一、第二&#xff0c;将于今年7月代表中国奔赴日本参加IMO竞赛。 值得一提的是&#xff0c;孙启傲同学继入选2022年IMO国家集训队、获阿里巴巴全球数学竞赛…

ubuntu(20.04)-shell脚本(2)echo-date-awk-sed-iptables-shell变量数组

1.echo 语法:echo [-ne][字符串]补充说明: 1、echo会将输入的字符串送往标准输出。 2、输出的字符串间以空白字符隔开,并在最后加上换行号。OPTIONS&#xff1a; -n 不要在最后自动换行 -e 若字符串中出现以下字符&#xff0c;则特别加以处理&#xff0c;而不会将它当成一般文…

【学习时序论文】

目录【2021 NeurIPS】Autoformer: Decomposition Transformers with Auto-Correlation for Long-Term Series Forecasting【2022 ICML】FEDformer: Frequency Enhanced Decomposed Transformer for Long-term Series Forecasting【2023 ICLR】TIMESNET: TEMPORAL 2D-VARIATION …

deque,stack,quque容器

一、deque 1.基本概念 功能: 双端数组&#xff0c;可以对头端进行插入删除操作 deque与vector区别: vector对于头部的插入删除效率低&#xff0c;数据量越大&#xff0c;效率越低. deque相对而言&#xff0c;对头部的插入删除速度会比vector快 vector访问元素时的速度会比de…

NDK编译脚本

一、如何通过NDK进行编译。 1、新建jni文件夹&#xff0c;并将Android.mk、Applicatio n.mk、源文件都放入其中。 2、编写Android.mk文件。 LOCAL_PATH : $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE: test LOCAL_C_ALL_FILES : test.c LOCAL_SRC_FILES : $(LOCAL_C_…

centos7虚拟机在集群zookeeper上面配置hbase的具体操作步骤

系列文章目录 centos7配置静态网络常见问题归纳_centos7网络问题 centos7克隆虚拟机完成后的的一些配置介绍 虚拟机centos7配置Hadoop单节点伪分布配置教程 卸载centos7自带的jdk的操作步骤 centos7配置zookeeper本地模式与集群模式的详细教程 centos7虚拟机配置集群时间…

HTML引入Typescript编译JS文件 :Uncaught ReferenceError: exports is not defined

初学TypeScript&#xff0c;尝试在html引入ts编译出来的js文件: 报错&#xff1a;Uncaught ReferenceError: exports is not defined 以下是代码&#xff1a; 创建了TS:加入export {}形成独立的作用域&#xff0c;其他ts文件重复声明相同名称的变量。 export {} let str &…

Python和Java二选一该学啥?

首先我们需要了解Python和 Java分别是什么 根据IEEE Spectrum 2022年编程语言排名前十的分别是&#xff1a;Python&#xff0c;C&#xff0c;C&#xff0c;C#&#xff0c;Java&#xff0c;SQL&#xff0c;JavaScript&#xff0c;R&#xff0c;HTML&#xff0c;TypeScript。从该…

专访丨AWS量子网络中心科学家Antía Lamas谈量子计算

​ Anta Lamas Linares&#xff08;图片来源&#xff1a;网络&#xff09; 47岁的Anta Lamas Linares出生于西班牙西北部的圣地亚哥德孔波斯特拉。她在当地学习物理学&#xff0c;然后在牛津大学和加利福尼亚继续深造。后来&#xff0c;她在新加坡领导了亚马逊网络服务&#xf…