PLA 类似于线性回归,适用于二分类问题。
% Perceptron Learning ALgorithm
% Input Parameters: trainFile, TestFile,learning rate
% FIle Format : vector,label
% Initialize data
function 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 vector
while 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
brea