matlab 实现感知机线性二分类算法(Perceptron)

感知机是简单的线性分类模型 ,是二分类模型。其间用到随机梯度下降方法进行权值更新。参考他人代码,用matlab实现总结下。

权值求解过程通过Perceptron.m函数完成

function W = Perceptron(X,y,learnRate,maxStep)
% Perceptron.m
% Perception Learning Algorithm(感知机)
% X一行为一个样本,y的取值{-1,+1}
% learnRate:学习率
% maxStep:最大迭代次数

[n,m] = size(X);
X = [X ones(n,1)];
W=zeros(m+1,1);  

for step = 1:maxStep
    flag = true;
    for index = 1:n
        if sign(X(index,:) * W) ~= y(index)
            flag = false;
            W = W + learnRate * y(index) .* X(index,:)‘;
        end
    end
    if flag == true
        break;
    end
end  

之后测试一下,总共8个二维点(为了画图观察选择2维数据),代码如下:

%%% test
close;
clear;
clc;

X = [0,0;1,0;2,0;1,1;0,2;1,3;2,4;4,2];
y = [-1,-1,-1,-1,-1,1,1,1];

n = size(y,2);
for i = 1:n
    if y(i) == 1
        plot(X(i,1),X(i,2),‘rs‘);
    end
    if y(i) == -1
        plot(X(i,1),X(i,2),‘b*‘);
    end
    hold on;
end

W = Perceptron(X,y,1,500);

xline = linspace(0,5,50);
yline = -W(1)/W(2) * xline - W(3)/W(2); % w1*x1+w2*x2+w3=0,x2看成yline

plot(xline,yline);

其显示图为:

(完)

时间: 2024-10-07 04:35:44

matlab 实现感知机线性二分类算法(Perceptron)的相关文章

二分类算法评估指标

我们都知道机器学习要建模,但是对于模型性能的好坏我们并不知道是怎样的,很可能这个模型就是一个差的模型,对测试集不能很好的预测.那么如何知道这个模型是好是坏呢?必须有个评判的标准,需要用某个指标来衡量,这就是性能度量的意义.有了一个指标,就可以对比不同模型了,从而知道哪个模型更好,或者通过这个指标来调参优化选用的模型. 对于分类.回归.聚类等,分别有各自的评判标准.本篇主要介绍二分类算法(多分类可以扩展转化成二分类)的相关指标.评估一个二分类的分类器的性能指标有:准确率.查准率.查全率.F1值.A

【机器学习具体解释】SVM解二分类,多分类,及后验概率输出

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN?勿在浮沙筑高台 支持向量机(Support Vector Machine)以前在分类.回归问题中非常流行.支持向量机也称为最大间隔分类器,通过分离超平面把原始样本集划分成两部分. 首先考虑最简单的情况:线性可分支持向量机.即存在一个超平面能够把训练样本分开. 1.线性可分支持向量机 1.考虑一个线性二分类的问题:例如以下左图,在二维平面上有两种样本点x

【机器学习详解】SVM解二分类,多分类,及后验概率输出

转载请注明出处:http://blog.csdn.net/luoshixian099/article/details/51073885 CSDN?勿在浮沙筑高台 支持向量机(Support Vector Machine)曾经在分类.回归问题中非常流行.支持向量机也称为最大间隔分类器,通过分离超平面把原始样本集划分成两部分. 首先考虑最简单的情况:线性可分支持向量机,即存在一个超平面可以把训练样本分开. 1.线性可分支持向量机 1.考虑一个线性二分类的问题:如下左图,在二维平面上有二种样本点x,目

解密随机数生成器(二)——从java源码看线性同余算法

Random Java中的Random类生成的是伪随机数,使用的是48-bit的种子,然后调用一个linear congruential formula线性同余方程(Donald Knuth的编程艺术的3.2.1节) 如果两个Random实例使用相同的种子,并且调用同样的函数,那么生成的sequence是相同的 也可以调用Math.random()生成随机数 Random实例是线程安全的,但是并发使用Random实例会影响效率,可以考虑使用ThreadLocalRandom变量. Random实

数据挖掘之分类算法---knn算法(有matlab样例)

knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法. 注意,不是聚类算法.所以这样的分类算法必定包含了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒惰算法.它并不是 像其它的分类算法先通过训练建立分类模型.,而是一种被动的分类 过程.它是边測试边训练建立分类模型. 算法的一般描写叙述步骤例如以下: 1.首先计算每一个測试样本点到其它每一个点的距离. 这个距离能够是欧氏距离,余弦距离等. 2. 然后取出距离小于设定的距离阈值的点. 这些点即为依

数据挖掘之分类算法---knn算法(有matlab例子)

knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法. 注意,不是聚类算法.所以这种分类算法必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒惰算法.它并非 像其他的分类算法先通过训练建立分类模型.,而是一种被动的分类 过程.它是边测试边训练建立分类模型. 算法的一般描述过程如下: 1.首先计算每个测试样本点到其他每个点的距离. 这个距离可以是欧氏距离,余弦距离等. 2. 然后取出距离小于设定的距离阈值的点. 这些点即为根据阈值环绕在测试

简单机器学习——最简单分类算法(LogisticRegression二分类线性模型、LinearSVC一对其余分类器)

代码: # -- coding: gbk -- from sklearn.datasets import load_breast_cancer from pylab import * from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression from sklearn.svm import LinearSVC from sklearn.datase

各种分类算法比较

1决策树(Decision Trees)的优缺点 决策树的优点: 一.           决策树易于理解和解释.人们在通过解释后都有能力去理解决策树所表达的意义. 二.           对于决策树,数据的准备往往是简单或者是不必要的.其他的技术往往要求先把数据一般化,比如去掉多余的或者空白的属性. 三.           能够同时处理数据型和常规型属性.其他的技术往往要求数据属性的单一. 四.           决策树是一个白盒模型.如果给定一个观察的模型,那么根据所产生的决策树很容易

MATLAB信号处理工具箱函数列表分类

现将MATLAB信号处理工具箱函数进行分组,便于记忆查询和长期回顾.(只解释基本用途,具体用法请在help目录下查询) Waveform Generation(波形产生) chairp: 产生扫频余弦函数: diric: 产生Dirichlet或周期sinc函数: gauspuls: 产生高斯调制地正弦曲线脉冲: pulstran: 产生一个脉冲序列: rectpuls: 产生一个非周期的抽样方波: sawtooth: 产生锯齿波或三角波: sinc: 产生sinc函数,即sin(πt)/πt;