訓練數據爲[0 0; 0 1; 1 0; 1 1]另一種觀點每一行是一組訓練數據如下
>> input
input =
0 0
0 1
1 0
1 1
和目標
desired_out =
0
1
1
1
請想一想desired_out這是你的標籤 .. 每一行中訓練數據(輸入)在二進制集合{0,1}中有一個特定的輸出(標籤)(因爲這個例子用於執行OR邏輯電路。)
在matlab中你可以使用或者作用如下做進一步的瞭解:
>> or(0,0)
ans =
0
>> or(1,0)
ans =
1
>> or(0,1)
ans =
1
>> or(1,1)
ans =
1
請注意,您的代碼沒有任何培訓測試和驗證碼只是試圖讓重量和感知的其他參數,但你可以通過只小程序訓練測試添加到您的代碼
NumDataTest = 10 ;
test=randi([0 , 1] , [ NumDataTest , 2]) ...
+(2*rand(NumDataTest,2)-1)/20;
這樣的測試數據將類似於下面
test =
1.0048 1.0197
0.0417 0.9864
-0.0180 1.0358
1.0052 1.0168
1.0463 0.9881
0.9787 0.0367
0.9624 -0.0239
0.0065 0.0404
1.0085 -0.0109
-0.0264 0.0429
測試這個數據,您可以通過下面的代碼使用自己的程序:
for i=1:NumDataTest
y = bias*weights(1,1)+test(i,1)*weights(2,1)+test(i,2)*weights(3,1);
out(i) = 1/(1+exp(-y));
end
最後:
table(test(:,1),test(:,2),out,'VariableNames',{'input1' 'input2' 'output'})
輸出
input1 input2 output
_________ _________ ________
1.0048 1.0197 0.99994
0.041677 0.98637 0.97668
-0.017968 1.0358 0.97527
1.0052 1.0168 0.99994
1.0463 0.98814 0.99995
0.97875 0.036674 0.9741
0.96238 -0.023861 0.95926
0.0064527 0.040392 0.095577
1.0085 -0.010895 0.97118
-0.026367 0.042854 0.080808
代碼部分:
clc
clear
input = [0 0; 0 1; 1 0; 1 1];
numIn = 4;
desired_out = [0;1;1;1];
bias = -1;
coeff = 0.7;
rand('state',sum(100*clock));
weights = -1*2.*rand(3,1);
iterations = 100;
for i = 1:iterations
out = zeros(4,1);
for j = 1:numIn
y = bias*weights(1,1)+input(j,1)*weights(2,1)+input(j,2)*weights (3,1);
out(j) = 1/(1+exp(-y));
delta = desired_out(j)-out(j);
weights(1,1) = weights(1,1)+coeff*bias*delta;
weights(2,1) = weights(2,1)+coeff*input(j,1)*delta;
weights(3,1) = weights(3,1)+coeff*input(j,2)*delta;
end
end
%% Test Section
NumDataTest = 10 ;
test=randi([0 , 1] , [ NumDataTest , 2]) ...
+(2*rand(NumDataTest,2)-1)/20;
for i=1:NumDataTest
y = bias*weights(1,1)+test(i,1)*weights(2,1)+test(i,2)*weights(3,1);
out(i) = 1/(1+exp(-y));
end
table(test(:,1),test(:,2),out,'VariableNames',{'input1' 'input2' 'output'})
我希望這有助於爲我的英語對不起,如果它的壞
我還有一個問題:這個程序使用2個特徵和1個標籤的訓練數據。這就是爲什麼可以在二維空間中繪製它們並繪製決策邊界線的原因。對?但是,如果有更多的功能呢?我們如何繪製具有兩個以上特徵的樣本的決策邊界? – anonymous
我認爲二維空間只是爲了更好的理解,如果你有兩個以上的特徵,對於情節決策邊界不是好主意,更好的想法是回答這個問題「我的分類器有多好?」。您可以在MATLAB中使用ROC圖,並使用決策函數。 所以在這種情況下你有決定的功能,但不是好主意的情節,因爲情節是爲了知道「我的分類器有多好?」 –