데이터분석/Vision Recognition

머신러닝 전용 프로그래밍 툴 Octave 튜토리얼 - (1)

늘근이 2015. 8. 26. 22:15

Octave는 굉장히 들어보지도 못한 듣보잡 언어지만, 머신러닝계에서는 무엇인가 프로젝트를 할때 쉽게 프로토타입을 띄우는 용으로 상당히 생산적이라고 한다. 보통 머신러닝계에서는 Ocatave MATLAB 같은 전용 툴이나 Python(Numpy) R 같은 범용적 툴을 쓰는데, Octave는 상당히 생산적이라고 계속 강조한다.

자세한 설명은 wiki에 있다.

https://ko.wikipedia.org/wiki/GNU_%EC%98%A5%ED%83%80%EB%B8%8C

윈도우즈용 설치파일은 다음과 같다. (상위디렉토리는 tar.gz 파일임)

ftp://ftp.gnu.org/gnu/octave/windows/


이제 모든걸 설치했으니 간단한 연산을 해볼수있다.

 

이상하게 Octave의 시작은 역시 행렬과 벡터인데, 머신러닝은 무조건 계산을 마구마구 해줘야 하며, 행렬은 그에대한 직관성과 계산의 효율성에 따라서 어쩔수 없는 선택이다. 행렬과 벡터에 대한 기본개념은, 현재의 블로그나 다른 블로그를 뒤져보면 빨리 나온다.


위와같이 간단한 계산을 해볼수 있다. 일반적인 사칙연산은 되지만, 특이한것은 보통 '같지않다'를 나타내는것은 != 가 아닌 ~=로 나타낸다는 점이다. && 과 || 는 AND 와 OR 이다.


변수선언은 다음과 같이 일반적으로 된다.

특이한점은, pi라는 예약어가 존재해서 바로 원주율을 꽂아주며, 출력을 나타내는 disp(), 그리고 출력포맷을 지정해주는 sprintf() 메서드가 존재한다는 점이다. 여기까지는 그다지 편한것을 느끼지 못한다. 하지만 전용어 답게 벡터나 행렬이 나오기 시작하면 꽤나 편하게 쓸수 있다. (물론, 파이썬도 ndarray등을 이용하면 쉽게 쓸수 있겠지만 아마 응ㄱ 교수님은 별로 추천하지 않는다. 별로 써본적은 없는것같다. 파이썬은 아무래도 프로그래머쪽에 훨씬 가까운 언어이기 때문에..)


행렬을 만들고 싶으면 다음과 같이 만들면 된다.

벡터도 마찬가지로 간단하다.

행벡터는 ;없이, 열벡터는 ;을 이용해서 만들면 되며, 간격이 0.1씩 되는 1~2 벡터를 만들고 싶으면 :을 이용해서 만들고 1씩 올라가는 등차수열을 만들고 싶으면 그냥 1:10 이러한 식으로 써주면 된다.


다음은, 0행렬등을 만드는 방법이다.


랜덤에 관련한 행렬은 다음과 같이 만들어 낼수도 있다.


그래프는 다음과 같은 명령어로 실행시킬수 있다.

꽤나 시간이 걸리지만 그럴듯하다.


대각선이 1인 행렬(Diagonal Matrix)은 다음과 같이 만든다.