coursera에서 진행하는 logistic regression을 구현해 보도록 하겠습니다.


logistic regression은 classification의 알고리즘이며 또한 supervisor learning입니다.

즉, 주어진 데이터를 여러형태로 분류하기 위해 사용합니다.

이전에 배운 linear regression 사용하지 못하고 새로운 접근법을 이용하여 알고리즘을 적용해야 합니다.


이번에 참고할 데이터 셋은 아래와 같이 3개로 구분되어 있습니다.

각각 x좌표, y좌표, 결과 라고 가정 할 수 있습니다.


파일이름 : ex2data1.txt


34.62365962451697,78.0246928153624,0

30.28671076822607,43.89499752400101,0

35.84740876993872,72.90219802708364,0

60.18259938620976,86.30855209546826,1

79.0327360507101,75.3443764369103,1

45.08327747668339,56.3163717815305,0

61.10666453684766,96.51142588489624,1

....



이 데이터의 1번째, 2번째를 data x로

3번째를 data y로 나눠 보겠습니다.


>> data = load('ex2data1.txt');

>> [m, n] = size(data);

>> X = data(:, 1:n-1);

>> y = data(:, n);

>> [m, n] = size(X);



나눠진 데이터를 각각 y 데이터를 보고 1은 positive, 0은 negative로 하여 

두 데이터를 나누어 그래프에 표시해 보겠습니다.



function plotData(X, y)

% create new chart

figure; hold on;


% find positive, negative position

pos = find(y == 1);

neg = find(y == 0);


% LineSpec is red / circle

plot(X(pos, 1), X(pos, 2), 'ro');


% LineSpec is blue / asterisk

plot(X(neg, 1), X(neg, 2), 'b*');



xlabel('x score')

ylabel('y score')


legend('positive', 'negative')


% end chart

hold off;

end



y가 1인 데이터의 인덱스를 pos에 담고, 0인 데이터의 인덱스를 neg에 담아

각각을 plot한 펑션입니다.


legend와 label를 붙여주고 실행하면 아래와 같이 그래프로 나타낼 수 있습니다.


>> plotData(X, y);


실행 하면 아래와 같은 데이터 셋으로 구성 된 것을 확인 해볼 수 있습니다.






+ Recent posts