Adaline神经网络

Adaline利用了最小二乘法的思想,相较于感知机神经网络,对于数据的线性可分的要求更低一些,可以允许一些异常数据。

上面描述了迭代求解的过程,但是在 x0(k+1) 这里没看懂,如果是更新 θ 应该是 w0(k+1) 才对。应该是PPT有错。

我们来说明下迭代求解需要注意的地方。

首先,将 θ 并入到 w 中去,因为 θ 前面的系数始终是1,所以 x 也多了一列,这一列都是1。

x=[1,x1,x2,⋯,xn]Tw=[θ,w1,⋯,wn]

然后是迭代的结束条件。在代码实现中,是计算 w(k−1) 与 w(k) 之间的差来判断的,如果差很小很小,说明梯度下降很缓慢,也就是快到达极值点了。

MATLAB实现迭代求解

Adaline.m

function [ w, t ] = Adaline( X,step, init_w, init_t )

%ADALINE Summary of this function goes here

% Detailed explanation goes here

% X: data set with label

% f: active function

% step: step size

% init_w:

% init_t:

if nargin < 4

init_t = 0;

end

if nargin < 3

init_w = [];

init_t = 0;

end

if nargin < 2

step = 0.1;

init_w = [];

init_t = 0;

end

label = X(:,end);

data = X(:,1:end-1);

[n_data,n_fea] = size(data);

data = [ones(n_data,1) data];

n_fea = n_fea + 1;

n_w = size(init_w);

if n_w ~= n_fea

init_w = ones(n_fea,1);

n_w = n_fea;

end

w = init_w;

w(1) = init_t;

eps = 1e-6;

while true

for i=1:n_w

dw = (label - data*w)'*data(:,i); new_w(i) = w(i) + step*dw; end if sum((new_w'-w).^2) < eps

break;

else

w = new_w';

end

end

t = w(1,1);

w = w(2:end);

end

demo.m 用于简单测试

clc;

%% create random points for train

c1 = [1 1];

c2 = [3 3];

n_L1 = 50; % number of item with label 1

n_L2 = 20; % number of item with label 2

A = zeros(n_L1,3);

A(:,3) = 1;

B = zeros(n_L2,3);

B(:,3) = -1;

% create random point

for i=1:n_L1

A(i,1:2) = c1 + randn(1,2);

end

for i=1:n_L2

B(i,1:2) = c2 + randn(1,2);

end

% show points

scatter(A(:,1), A(:,2),[],'r');

hold on

scatter(B(:,1), B(:,2),[],'g');

%% training with above points

%AA = [ones(n_L1,1) A];

%BB = [ones(n_L2,1) B];

X = [A;B];

%X = [1 1 1 0 1;1 1 0 1 1;1 1 1 1 -1];

[w, t] = Adaline(X,0.0001);

%[w,t] = Adaline2(X);

%%

% plot the result

A = w(1);

B = w(2);

C = t;

if B==0

%生成100个-C/A放在向量x中.

x=linspace(-C/A,-C/A,100);

%从-A)-(|A|+|B|+|C|)到|A|+|B|+|C|等距离生成100个值放在向量y中.?

y=linspace(-abs(A)-abs(B)-abs(C),abs(A)+abs(B)+abs(C),100);

else

x = linspace(0, 10, 100);

y = -w(1)/w(2) * x;

y = y - 1/w(2)*t;

end

hold on

plot(x,y)

正规化求解

除了迭代求解外,有一种正规化的的方法。这种方法对于不是很大数据集求解是很快的,主要是因为要求矩阵的逆,如果矩阵太大了,求逆将会变得很慢很慢。

Adaline2.m

function [ w, t ] = Adaline2( X )

%ADALINE2 Summary of this function goes here

% Detailed explanation goes here

data = X(:,1:end-1);

label = X(:,end);

[n_data, n_fea] = size(X);

data = [ones(n_data, 1) data];

n_fea = n_fea + 1;

w = pinv(data'*data)*(data'*label);

t = w(1,1);

w = w(2:end);

end

matlab与python实现神经网络_Adaline神经网络简单介绍和MATLAB简单实现相关推荐

  1. ping命令简单介绍+用ping简单测网速

    ping命令简单介绍+用ping简单测网速 ping可以用来检查网络是否通畅或者网络连接速度,而作为网络管理员ping命令是第一个必须掌握的DOS命令.我们可以用ping来给网络上指定IP的计算机发送 ...

  2. RBF神经网络简单介绍与MATLAB实现

    文章目录 RBF的直观介绍 1 RBF是一种两层的网络 2 RBF的隐层是一种非线性的映射 3 RBF输出层是线性的 4 RBF的基本思想是:将数据转化到高维空间,使其在高维空间线性可分 RBF学习算 ...

  3. hadoop简单介绍_Hadoop:简单介绍

    hadoop简单介绍 什么是Hadoop: Hadoop是用Java编写的框架,用于在大型商品硬件群集上运行应用程序,并具有类似于Google File System和MapReduce的功能 . H ...

  4. Adaline神经网络简单介绍和MATLAB简单实现

    Adaline神经网络 Adaline利用了最小二乘法的思想,相较于感知机神经网络,对于数据的线性可分的要求更低一些,可以允许一些异常数据. 上面描述了迭代求解的过程,但是在x0(k+1)x_0(k+ ...

  5. 神经网络之感知器算法简单介绍和MATLAB简单实现

    Perceptron Learning Algorithm 感知机学习算法,在1943年被生物学家MeCulloch和数学家Pitts提出以后,面临一个问题:参数需要依靠人工经验选定,十分麻烦.因此人 ...

  6. 典型数据分析软件的简单介绍(MATLAB篇)

    软件概况 Matlab是MathWorks公司于1982年推出的一套高性能的数值计算和可视化软件.它集数值分析.矩阵运算.信号处理和图形显示于一体,构成了一个方便.界面良好的用户环境.它还包括了Too ...

  7. 牛顿法的简单介绍及Matlab实现

    目录 牛顿法原理简介 使用牛顿法求解一元方程 使用牛顿法求解平面定位问题 参考文献 牛顿法原理简介 牛顿法的原理是利用函数 f ( x ) f(x) f(x) 的泰勒级数的前几项来寻找方程 f ( x ...

  8. 做数学建模,学matlab还是python?

    大家好,我是北海. 刚开始参与数学建模的同学,往往会面临一个问题:做数模离不开编程,而matlab和python都挺适合做数模的,究竟是学matlab还是python? 本文就给大家分析一下matla ...

  9. Matlab 和Python结合使用

    Matlab 和Python结合使用 - 简书Matlab 和Python结合使用 - 简书今天介绍的内容比较基础,希望能达到抛砖引玉的效果. Matlab 和 Python 结合使用无非分为两种情形 ...

最新文章

  1. 你不应该关注区块链的“杀手级应用”
  2. Android Monkey使用
  3. 面向对象第七章,内存的管理,面向对象三大特征封装、继承、多态
  4. python tcp协议加代理_python实现简单的TCP代理服务器
  5. flutter web:lottie jssdk报错处理
  6. Java基础-Lambda表达式
  7. 万元奖金 , 百万流量 , 助你成为CSDN超级红人 !
  8. 【ACL2020】BERT如何融合主题模型做文本匹配
  9. zufeoj_1257: 神风堂人数 VIJOS-P1041
  10. 2020年最值得关注的28款区块链游戏
  11. java blog 引擎_推荐10个Java开源CMS系统
  12. Conent7.0安装lanp全过程
  13. HTC Desire Z刷recovery刷机教程
  14. 解决U盘使用DVD镜像安装Fedora15需要联网的问题
  15. 计算机如果没有什么 就无法启动,电脑开机没有任何反应
  16. execute immediate在存储过程中的使用
  17. 图解LVS的工作原理
  18. OC小游戏之英雄打怪兽
  19. DaggerXXXComponent找不到问题
  20. RedHatAS4U3下实现南北互通的DNS配置

热门文章

  1. python 文字识别 之 pytesseract
  2. C++----练习--string输入输出
  3. 网页速度很慢优化方案:如何提高网页加载速度,提升网站加载速度
  4. 一天就能打印一栋房子超大型3D打印机
  5. ADO.net中临时表DataTable的简单应用
  6. javascript入门系列演示·三种弹出对话框的用法实例
  7. 关于日历的一个超级存储过程
  8. Java Web-网页基础-HTML基础
  9. Oracle-索引分裂研究
  10. 【现场福利+直播通道】2020数据技术嘉年华正式“菜单”出炉,饕餮盛宴等你共享!...