how to compute separate line 2 dimensional points
    4 views (last 30 days)
  
       Show older comments
    
hi all i have set of points and class + -1 i want to calculate the line i want to use 1. direct linear algebra (inverse matrix , cross product) 2. use gradient descent i dont want to use the svm function or quadratic programming
x=[ 1 2 ; 3 3  ; 4 5;         45 17 ; 33 20];
label=[ 1 ;1 ;1;-1 ;-1];
gscatter(x(:,1),x(:,2),label)
so how to calculate the line wx+b , i need w,b
0 Comments
Answers (6)
  David Sanchez
      
 on 17 Jun 2014
        Once you have the plot, go to tools -> Basic fitting
select the data (1 or -1 in your case), linear and click in the bottom arrow to get the values of your parameters. You will see you can save to workspace.
0 Comments
  Zikobrelli
 on 17 Jun 2014
        Given X and Y, this function will give you your 'w' and 'b'
function [a b] = droite_reg(X,Y)
% Linear fitting
% Y = a + bX
n = length (Y);
 sumY = sum(Y);
 sumX = sum(X);
X2 = X.^2;sumX2 = sum(X2);
Y2 = Y.^2; sumY2 = sum(Y2);
XY = X.*Y; sumXY = sum(XY);
%slope estimation
a = (sumXY - ((sumX * sumY)/n))/ (sumX2 - ((sumX^2)/n));
% b estimation
b = (sumY/n)-(a.*(sumX/n));
% r^2
r2 = ((sumXY - ((sumX.*sumY)/n)).^2)/((sumX2-((sumX.^2)/n)).*(sumY2 - ((sumY.^2)/n)));
end
1 Comment
  Zikobrelli
 on 17 Jun 2014
				To get your two sets of data differentiated, you can try something like:
plot(x(label==1,1),x(label==1,2))
[w,b]=droite_reg(x(label==1,1),x(label==1,2))
hold on
plot(x(label==-1,1),x(label==-1,2),'r')
[w1,b1]=droite_reg(x(label==-1,1),x(label==-1,2))
  Michael sch
 on 17 Jun 2014
        2 Comments
  Zikobrelli
 on 17 Jun 2014
				You might want to look into nnd4pr or perceptron in the matlab help section.
There's a demo abt 2 inout classifiers
See Also
Categories
				Find more on Statistics and Machine Learning Toolbox in Help Center and File Exchange
			
	Products
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!