[Python]Octave to Python! 두번째

python으로 작업하기 두번째이다.

사실 오늘 좀더 많이 진도를 나가고 싶었지만, contour plot에 점찍기가 너무 오래 걸려 많은 양의 코딩을 하진 못했다.

해결하고나니 정말 별거아니라 더 짜증…


먼저 어제에 이어 surface 결과값이다.

왼쪽이 octave, 오른쪽이 python 결과물이다.

당연하지만 둘의 차이점은 크게 느낄 수 없다.

surf를 그리려고 굉장히 많은 시간을 허비했다.

하지만, matplotlib 정식 사이트에서 보여주는 example 덕에 조금이나마 빠르게 해결할 수 있었다.

X축은 theta0가 취한 값, Y축은 theta1가 취한 값, Z축은 theta에 따른 cost값이다.

다음은 대망의 contour plot 이다.

왼쪽이 octave, 오른쪽이 python 결과물이다.

X축과 Y축은 theta를 의미하고 영역은 cost값으로 구분되어 있다.

붉은색 x표시는 최적의 theta값의 위치를 표현한 것이다.


나에게 큰 절망을 준 contour plot…  가운데 점찍는데 한참이 걸렸다.

google에 안쳐본 검색어가 없는거 같다.

결국 stackoverflow가 해결해 주었지만 저걸 보고도 30분간은 씨름했었다.

data2[0,0]과 data2[0][0]의 차이로 error가 계속 발생하였는데 정말 멍청하게도 저걸 의심하지 않았다. 젠장…

다음부턴 best_theta=data2[0] 이런식으로 바로바로 해서 에러를 줄여야지 화나서 안되겠다.

내일은 multiple regression 예제 파일을 바꾸어서 올려보도록 노력하겠습니다.

도움이 된 사이트 :

https://matplotlib.org/

http://stackoverflow.com/questions/28504737/how-can-i-plot-a-single-point-in-matplot-python

이번에 만든 파일 ex1.py :

https://drive.google.com/file/d/0BzyLCuLKF-OGYmd5X09hT1Fkd0E/view?usp=sharing

Advertisements

[Python]Octave to Python! 첫번째

이전 machine learning을 배우며 코딩했던 Octave프로그램을 Python으로 바꾸어 코딩하는 작업을 진행하였다.

일단 내용은 간단히 처음에는 단위행렬을 출력하고,

다음은 받아온 내용으로 그래프를 출력한다.

다음은 gradient descent 방법을 이용하여 적당한 theta를 구하는 것이다.

내용은 simple linear regression임으로 어렵지 않았다.

아래 내용은 python으로 작성한 내용이다.

ex1


아래는 그 결과물이다.

왼쪽이 octave에서의 결과물이고, 오른쪽이 python으로 그려낸 결과물이다.

ex1data1.txt라는 파일로 machine learning 강좌를 들으면서 주어진 값을 이용했다.

내일은 왼쪽처럼 선로가 보이도록 추가할 예정이다.

추가로

J =32.07273388

theta = [-3.6302914394043593, 1.166362350335582]

이 나왔다.

J는 theta가 [0,0]일 때 cost function을 이용하여 나온 값이고,

theta는 gradient descent를 이용하여 최소로 cost가 나올때 theta를 구한 값이다.

참고로, numpy를 설치하기 위해 3.6버전으로 갈아탔다…

2.7버전에서 설치를 잘못했는지 pip을 쓰면 에러가 난다 ㅜㅜ