matlab实现牛顿法逻辑回归

clear all; close all; clc

[m, n] = size(x);

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

% Plot the training data
% Use different markers for positives and negatives
figure
pos = find(y); neg = find(y == 0);
plot(x(pos, 2), x(pos,3), '+')
hold on
plot(x(neg, 2), x(neg, 3), 'o')
hold on
xlabel('Exam 1 score')
ylabel('Exam 2 score')

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

% Define the sigmoid function
g = inline('1.0 ./ (1.0 + exp(-z))');

% Newton's method
MAX_ITR = 10;
J = zeros(MAX_ITR, 1);

for i = 1:MAX_ITR
% Calculate the hypothesis function
z = x * theta;
h = g(z);

``````grad = (1/m).*x' * (h-y);
H = (1/m).*x' * diag(h) * diag(1-h) * x;

% Calculate J (for testing convergence)
J(i) =(1/m)*sum(-y.*log(h) - (1-y).*log(1-h));

``````

end
% Display theta
theta

% Calculate the probability that a student with
% Score 20 on exam 1 and score 80 on exam 2
prob = 1 - g([1, 20, 80]*theta)

% Plot Newton's method result
% 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(plot_x, plot_y)
hold off

% Plot J
figure
plot(0:MAX_ITR-1, J, 'o--', 'MarkerFaceColor', 'r', 'MarkerSize', 8)
xlabel('Iteration'); ylabel('J-cost')

to=cputime();
m=length(y);
x = [ones(m, 1), x];
pos = find(y); neg = find(y == 0);
plot(x(pos, 2), x(pos,3), '*')
hold on
plot(x(neg, 2), x(neg, 3), 'o')
hold on
xlabel('Exam 1 score')
ylabel('Exam 2 score')
numfeature=size(x,2);
numtrainsam = size(x,1);
theta = zeros(numfeature, 1);
maxiterations=10;
errorperiteration=zeros(maxiterations,1);
g = inline('1.0 ./ (1.0 + exp(-z))');
prevtheta=theta;
for t=1:maxiterations
toterror=0;
for j=1:numfeature
totslope=0;
for i=1:m
z=0;

for jj=1:numfeature

``````          z=z+prevtheta(jj)*x(i,jj);
end
h=1.0/(1.0+exp(-z));
H=H+(x(i,q)*h*(1-h)*x(i,jj));

totslope=(totslope+(h-y(i))*x(i,j));
toterror=(toterror+-y(i)*log(h)-(1-y(i))*log(1-h));
end
``````

toterror=toterror/numtrainsam;
theta(j)= theta(j)-H\totslope;
end
prevtheta=theta;
errorperiteration(t)=toterror/j;
end
errorperiteration=zeros(maxiterations,1)
prevtheta=theta;
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(plot_x, plot_y)
hold off

1个回答

matlab逻辑回归代价函数报错

MATLAB怎么实现多元线性回归

Matlab 中实现模拟退火算法出现索引大于矩阵维度问题

# 本人新手学习雷达信号处理，前期看了很多测频相关的论文，原理了解了一些，苦于没有可以参考学习的程序，想请高手指教，提供一些测频的程序代码以供学习，感谢

![图片说明](https://img-ask.csdn.net/upload/201905/03/1556864456_931596.png) 优化问题 类似如图的问题 需要用 梯度下降法和牛顿法求解 ``` function [ outcome ] = f( w,c,A,b ) n=size(A,1); m=size(A,2); outcome=0; for i=1:m outcome=outcome+log(1+exp(-b(i)*(w'*A(:,i)+c))); end outcome=(outcome+0.01*(w'*w+c*c))/m; end ``` 这样的函数如何去对他进行求导或者求HESSIAN 是否函数不能这样定义？

1.用基于相关冗余的SVM-RFE算法实现对信号进行特征选择，用matlab实现 2.用matlab实现对信号的特征选择 这二个该如何实现，求救，急用啊！ 大佬们，帮帮忙啊！

MATLAB做闹钟代码怎么做?
MATLAB做闹钟代码怎么做?MATLAB做闹钟代码怎么做?MATLAB做闹钟代码怎么做?MATLAB做闹钟代码怎么做?MATLAB做闹钟代码怎么做?

Matlab新建GUIDE后会弹窗报错

Linux(服务器编程):15---两种高效的事件处理模式（reactor模式、proactor模式）

C语言魔塔游戏

Python爬虫爬取淘宝，京东商品信息

Java工作4年来应聘要16K最后没要,细节如下。。。

2020年，冯唐49岁：我给20、30岁IT职场年轻人的建议

1、骇客帝国(1999) 概念：在线/离线，递归，循环，矩阵等 剧情简介： 不久的将来，网络黑客尼奥对这个看似正常的现实世界产生了怀疑。 他结识了黑客崔妮蒂，并见到了黑客组织的首领墨菲斯。 墨菲斯告诉他，现实世界其实是由一个名叫“母体”的计算机人工智能系统控制，人们就像他们饲养的动物，没有自由和思想，而尼奥就是能够拯救人类的救世主。 可是，救赎之路从来都不会一帆风顺，到底哪里才是真实的世界？如何...
Python绘图，圣诞树，花，爱心 | Turtle篇

CPU对每个程序员来说，是个既熟悉又陌生的东西？ 如果你只知道CPU是中央处理器的话，那可能对你并没有什么用，那么作为程序员的我们，必须要搞懂的就是CPU这家伙是如何运行的，尤其要搞懂它里面的寄存器是怎么一回事，因为这将让你从底层明白程序的运行机制。 随我一起，来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说，我们首先就要搞明白它是怎么回事，也就是它的内部构造，当然，CPU那么牛的一个东...

2019年除夕夜的有感而发

2020年的1月，我辞掉了我的第一份工作

By 超神经场景描述：昨天 2 月 3 日，是大部分城市号召远程工作的第一天，全国有接近 2 亿人在家开始远程办公，钉钉上也有超过 1000 万家企业活跃起来。关键词：十一出行 人脸...
Java基础知识点梳理

2020年全新Java学习路线图，含配套视频，学完即为中级Java程序员！！

B 站上有哪些很好的学习资源?