这是我第一次尝试机器学习,我可以实现我想要的任何代码。我有Matlab访问,我认为这将比Python更简单,我有实现PLA的伪代码。然而,代码的最后一部分绝对让我感到困惑,尽管它比我迄今为止在这里看到的代码更简单。它似乎要求使用未声明的变量。这是我有的。我会指出我卡住的数轴。
1) w <- (n + 1) X m (matrix of small random nums)
2) I <- I augmented with col. of 1s
3) for 1 = 1 to 1000
4) delta_W = (N + 1) X m (matrix of zeros) // weight changes
5) for each pattern 1 <= j <= p
6) Oj = (Ij * w) > 0 // j's are subscript/vector matrix product w/ threshold
7) Dj = = Tj - Oj // diff. between target and actual
8) w = w + Ij(transpose)*Dj // the learning rule
第1行到第4行被编码。我的问题在第5行:"对于每个模式是什么意思"(即,如何在代码中表达它)。他们对哪个j感兴趣,我在观察矩阵中有一个j,在目标矩阵中也有一个j。还有,"p"是从哪里来的(我有I, j, m和n,但没有p)?任何想法都会很感激。
"for each pattern"是指输入。他们说的就是运行那个循环,其中Ij是感知器的输入。
在MATLAB中写这个,它真的取决于你的数据是如何导向的。我会将你的输入存储为mXn矩阵,其中m是输入的数量,n是每个输入的大小。
假设我们的输入如下:
input = [1 5 -1;
2 3 2;
4 5 6;
... ]
首先用一列1作为偏置输入来"扩充"它:
[r c] = size(input);
input = [input ones(r,1)];
那么,你的for循环将简单地为:
for inputNumber = 1:r
pattern = input(inputNumber,:);
你可以从那里继续