분류 전체보기 850

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

간단한 sin 그래프를 그려보자. 자 이제 이런 상태로 다음 명령어를 쳐본다. 이제 그래프가 윈도우 창에 고정이 된 상태이다. 이 상태로 plot을 추가로 그려볼수있다. 빨간색으로 그려보자. r 은 빨간색으로 그리면 된다. 그래프에는 몇가지 세팅을 할수 있는데, 레이블 설정과 제목 설정을 할수있다. 마지막으로 그림을 저장할수 있다. figure(2)로 하면 새로 창이 하나 더 뜬다. 윈도우 창 이름이 figure 1인것을 자세히 보면 감이 온다. 이상태에서는 다음과 같이 바뀐다. 그레이스케일로 바꿔볼수도 있을까? 위와같이 된다.

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

행렬의 크기를 알아내고 싶으면 아래와 같이 length()size()를 이용하면 된다. 시스템 명령어 pwd - 현재 디렉토리를 알아낸다. cd - 디렉토리를 변경한다.ls - 리눅스 명령어와 같다. load - 파일을 로드해서 변수에 저장한다.who - 어떤 변수가 선언되어 메모리를 차지하고 있는지 볼수있다.whos - 더 자세한 데이터의 선언형태를 볼수있다.clear - 메모리를 비워서 없애버린다.save hello.mat v - v를 hello.mat파일로 저장한다. (텍스트로 저장하려면 -ascii 옵션을 붙인다.)val(1,1) - 1,1번 놈을 부른다. val(1,:) - :은 모든놈이라는 뜻으로, 이렇게 하면 해당하는 행을 부른다.val([1 3], :) - 이렇게는 첫번째 세번째 행을 불러..

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

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의 시작은 역시 행렬과 벡터인데..

② 디자인 패턴(Design Pattern) - Strategy

http://hyeonstorage.tistory.com/146 솔직히 위의 글보다 잘 쓰기는 쉽지않다. 아주 잘써놨다. Strategy패턴은 굳이 프로그램적으로 구현할 필요도 없다. 그냥 간단하다. 그냥 공통의 메서드가 있는 인터페이스를 상속받아서 그 클래스에서 구현하는 것이다. 굳이, 메서드를 하나의 클래스에 속하게 하지말고 위처럼 사용하면 된다. 다만, 스칼라에서는 다르다. 구현가능한 trait가 존재하고 있기 때문에 귀찮게 인터페이스를 상속받아 사용하지 말고, trait를 이용해서 여러개를 끼워버리면(mix-in) 된다.

Reader 등으로 글자 입력받기

다음과 같은 간단한 코드로 json 을 그냥 쌩으로 읽을 수 있다. 다만 json객체로 바꾸지는 못한다. Reader reader = new BufferedReader(new FileReader("sample.json")); int data = reader.read(); while(data != -1) { char c = (char) data; System.out.println(c); data = reader.read(); } 데코레이터 패턴을 이용했기 때문에 위와같이 reader안에 Reader를 리턴하는 문장으로 만든다. Reader reader = new BufferedReader(new FileReader("sample.json")); InputStream is = new ByteArrayInpu..

일반인을 위한 머신러닝(5) - 파이썬 다뤄보기

본 내용은 http://scikit-learn.org/stable/tutorial/basic/tutorial.html 튜토리얼에 있는 내용을 축약하여 편집한 내용입니다. 지금까지 이론적인것들에 치중되어서 상당히 재미가 없었다. 머신러닝의 인기남 응ㄱ 선생님은 Octave를 쓰기를 권장하시나, 사실 전용툴인 Octave와 범용툴인 Python의 재미차이는 어마어마합니다. 파이썬의 경우 기본적인 윈도우 프로그래밍부터 학술용 프로그램, 웹단 프로그램 등 못하는게 없는데 MATLAB과 같은 전용툴만 쓸 경우 추후에 뭔가 기획하고 확장시킬때 굉장한 제약사항으로 다가오기 마련이기 때문입니다. 일단 무작정 한번 파이썬을 구동하여 설치해보기 시작합니다. 물론 파이썬 설치법을 자세히 써놓으면 방문자수가 많이 늘테지만 귀..

③ 디자인 패턴(Design Pattern) - Flyweight

Flyweight 패턴은, 객체를 어마어마하게 많이 생성해야 할때 메모리가 굉장히 많이 들것을 대비하여, 최대한 공유가능한 부분을 이용해 가볍게 부담을 줄여주는 패턴이다. 일단 UML을 한번 엿보고 계속해보자. 출처 http://wiki.western.edu/mcis/ 웹과 같은 화면상에 여러개 구성요소가 존재할수 있는데, 만약 이미지같은것들이 동일하게 반복되고 있다면 별로 바람직하지 않다. 따라서 재사용할건 재사용하고 만들건 만들어서 좀 효용성이 있게 프로그램을 구성하면 좋다! 일단 인터페이스를 하나 만들자. 도형 인터페이스다.public interface Shape { void draw(); } 이를 상속해서 다음과 같은 사각형 클래스를 만들자. 사각형 클래스는 내부에 color와 length 를 가..

티스토리에서 수식 입력 방법

티스토리에서 수식을 입력하는 방법은 상당히 방법이 여러개 있는 듯 보인다. 별로 중요한것이 아니기에 쓰다가 불편하면 바꿔도될것 같다. 수식 편집기의 종류는 아래의 위키피디아에서 확인할수 있다.https://ko.wikipedia.org/wiki/%EC%88%98%EC%8B%9D_%ED%8E%B8%EC%A7%91%EA%B8%B0 여러가지 선택지중 다음의 자바스크립트 기반 수식 편집기는 티스토리 기반으로 돌아갈수 있다.https://www.mathjax.org/ CDN방식으로써 다음과 같은 문장을 사이에 추가함으로써 쉽게 수식을 이용할수 있다. 이제 다음과 같은 문장을 그냥 치면 바로 수식으로 바뀐다. 달러 두개를 사이에다가 수식을 집어넣으면 된다. $$x = {-b \pm \sqrt{b^2-4ac} \ov..

기타활동/기타 2015.08.22

일반인을 위한 머신러닝(4) - 선형대수

머신러닝을 더욱 쉽게 이해하기 위해서는, 선형대수(Linear Algebra)에 대한 이해가 선행되어야 한다. 문과생들이라면 아예 귓동냥으로만 들어봤지 아예 생소한 과목일지도 모르겠는데 '모든 수학과 공학의 뼈대' 라고 부르는 공대과목의 꽃이라고 한다. 따라서 대충 아무 공대생들이 모두 아는 쉬운 개념이라고 생각하고 접근해보자. 사실 수학이 레벨업이 될수록, 고등학교때 한번씩 짚어봤던 문제를 조금 더 어렵고 있어보이는 단어로 바꾸고 추상적인 개념으로 바꾸는 과정이라고 할수 있을터인데, 마찬가지로 이 포스팅에서도 직관적으로 아는 시시한 개념이 어떻게 모르는 단어로 그럴듯하게 포장되어있는지에 대해 최대한 간단하게 이해만 하고 넘어가면 될것이다. 일단 행렬(Matrix)에 대한 이해가 필요하다. 행렬은 데이터..

일반인을 위한 머신러닝 (3) - Cost Function 비용함수

이제예측된 추론결과가 얼마나 파워풀한지를 따져봐야한다. 전에 보았던 지도학습에서 나이와 섹시함에 대한 선형함수를 그렸던 것이 기억나는가? 물론 나이를 먹을수록 섹시함이 늘어난다는 가정은 별로 상식에 벗어나 있지만, 어쩌다 보니 위와같은 직선의 함수가 나왔다고 치자. 그렇다면, 이 직선의 함수가 얼마나 효용성이 있는가는 각 데이터가 표시하고 있는 곳에서 얼마나 멀리 떨어져있는지 거리를 측정한 후 그것을 적당히 합해서 평균친 결과일 것이다. 여기서 바로 다음과 같은 Cost Function의 공식이 나온다.Hypothesis 의 식은, 바로 위의 추론식을 나타낸다. 기본적인 y절편값이 있고 선형적으로 증가한다.결국 Cost Function이란, 위와같은 그래프에서 얼마나 점들이 추론식에 가까이 붙어있는가 (..