2
邏輯迴歸函數後,我得到了一個theta矢量,如[-0.34,-4.5,0.5]。我怎樣才能用它在圖中畫出邊界線?如何繪製分類算法的theta矢量線(MATLAB)
邏輯迴歸函數後,我得到了一個theta矢量,如[-0.34,-4.5,0.5]。我怎樣才能用它在圖中畫出邊界線?如何繪製分類算法的theta矢量線(MATLAB)
在用於二元分類邏輯迴歸,分類爲0或1的新樣品x
的概率是:
因此,判定邊界對應於行,其中P(y=1|x)=P(y=0|x)=sigmoid(theta'*x)=0.5
,其對應於theta'*x=0
。 sigmoid函數是sigmoid = @(z) 1.0 ./ (1.0 + exp(-z))
。
在我們的情況下,該數據具有兩個維度加偏壓,因此:
例如,在範圍與x1
決策邊界[-1 1]可以可表示爲:
theta = [-0.34, -4.5, 0.5];
sigmoid = @(z) 1.0 ./ (1.0 + exp(-z));
% Random points
N = 100;
X1 = 2*rand(N,1)-1;
X2 = 20*rand(N,1)-10;
x = [ones(N,1), X1(:), X2(:)];
y = sigmoid(theta * x.') > 0.5;
% Boundary line
plot_x = [-1 1];
plot_y = (-1./theta(3)).*(theta(2).*plot_x + theta(1));
% Plot
figure;
hold on;
scatter(X1(y==1),X2(y==1),'bo');
scatter(X1(y==0),X2(y==0),'rx');
plot(plot_x, plot_y, 'k--');
hold off
xlabel('x1'); ylabel('x2');
title('x_{2} = 0.68 + 9 x_{1}');
axis([-1 1 -10 10]);
它生成以下圖表:
OP的θ是從邏輯迴歸中獲得的。你提到的文章是關於線性迴歸的。這裏有什麼缺失嗎? – greeness 2014-09-30 20:52:20
你是完全正確的!我沒有意識到我的錯誤。我糾正了錯誤。 – tashuhka 2014-09-30 20:58:51
看起來不錯。所以實際上在邊界上:「斜率= theta(2)/( - theta(3))= 9'和'intercept = theta(1)/( - theta(3))= 0.68'。邊界因此是'y = 9x + 0.68'。 – greeness 2014-09-30 21:51:25