Perceptron Learing Algorithm (PLA )matlab 实现

来源:互联网 发布:java api手机版 编辑:程序博客网 时间:2024/06/05 23:48
PLA 类似于线性回归,适用于二分类问题。
% Perceptron Learning ALgorithm% Input Parameters: trainFile, TestFile,learning rate% FIle Format : vector,label% Initialize datafunction w = PLA(trainFile,testFile,rate)trainVectors = csvread(trainFile);testVectors = csvread(testFile);[trainRow,trainColumn] = size(trainVectors);[testRow,testColumn] = size(trainVectors);w = zeros(1,testColumn);Change = false;Iteration = 0;if trainColumn ~= testColumn    error('Error\n');    return;end% train the vectorwhile true    Change = false;    for i = 1 : trainRow        x = [ trainVectors(i,1: trainColumn - 1) ,1];        if sign( dot(w, x )) ~= trainVectors(i,trainColumn)            w = w + trainVectors(i,trainColumn).* x * rate;            Change = true;            Iteration = Iteration + 1;        end    end    if ~Change || Iteration >= 2 * trainRow        break;    endendfprintf('Train the vector. Finshed with iteration %d times\n',Iteration);fprintf('The final vector is \n');Error = 0;% test the datafor i = 1 : testRow    x = [ testVectors(i,1: testColumn - 1) ,1];    if sign( dot(w, x )) ~= testVectors(i,testColumn)        Error = Error + 1;    endendErrorRate = Error / testRow;fprintf('Finished all. The Error rate is %f.\n',ErrorRate);


其中,初始向量为0向量,训练终止条件为收敛或更新次数是样本的2倍。

0 0
原创粉丝点击