분류 전체보기 850

④ 디자인 패턴(Design Pattern) - Composite

Composite 패턴은 마치 나무와 같다. 바로 트리구조라는것. 자꾸 여기저기서 트리구조라고 하기 때문에 더 헷갈리는것 같기도 하다. 그렇지만 뭐 해보겠다. 일단 부품이 있다. Component라고 하자. 그 부품 종류에는 계속 부품을 꽂을 수 있는 Composite, 그리고 더이상 부품을 꽂을 수 없어 끝나는 Leaf 부품이 있다. (트리구조라 보통 이렇게 예를 잡는듯 하다.) 즉, Composite을 이용한다면 계속 부품을 꽂아서 객체를 만들어나갈수 있고, Leaf를 이용한다면 거기는 막다른 부품(?)이다. 일단 다음과 같은 기본 부품을 하나 만들어주자. Componentpublic interface Component { public void operation(); } 이제 이를 상속해서 실제 Le..

실제 이미지로 Scikit-image 적용해보기

이제 샘플데이터가 아닌 실제 이미지를 가지고 여러가지를 해본다. Scikit-Image는 프로그래밍적으로 여러가지 포토샵 비스무리한 필터를 적용할수 있는지라 이미지를 다루는데 있어 꽤나 쓸모있게 쓰일수 있는 것처럼 보이지만, 사실은 기본적인 필터를 사용할수 있는 정도이며, 머신러닝 등을 적용하려면 Scikit-learn을 붙여서 쓰거나 기타 다른 라이브러리를 통해서 개발을 진행하여야 하는것으로 보인다. 일단 다음과 같은 쉬운 명령어로 쉽게 대상이 되는 데이터를 지정할수 있다. 대상이 되는 이미지는 다음과 같다. 내가받은 생일선물 중에서 제일 쓸모없다고 느꼈었는데, 그래도 이렇게 쓸모가 있다니.. import os from skimage import io filename = os.path.join('c:\..

일반인을 위한 머신러닝 (2) - 지도/비지도학습

컴퓨터가 아무리 알아서 한다 치더라도 뭔가 공부를 하라고 누군가가 말해줘야 한다. 학창시절을 떠올려보자. 누군가 공부라고 하기 전까지는 절대 공부하지 않았다. (물론 저는 예외에요.) 그런데 컴퓨터에게 공부하라고 하는 명령을 내려야 하기는 하는데 어떻게 내려야 할까? 뭔가를 초기조건으로 불을 붙여줘야 얘가 혼자 타올라서 열심히 공부하든 아니면 마지못해 눈높이 수학이라도 풀든 하지 않겠는가. 이러한 것들에 대해 머신러닝은 두가지 방법이 있다. 지도학습(Supervised)과 비지도(Unsupervised) 학습니다. 지도학습은 컴퓨터에게 '이게 맞는 답이야~ 알았지? 이제 이거랑 비슷한걸 판단해서 맞는걸 찍어보도록해' 라고 말하는것을 뜻한다. 이러한 지도학습에는 예측과 분류가 있는데, 1) 예측은 일종의 ..

일반인을 위한 머신러닝 (1) - 참고자료

앞으로 쓸 포스팅은 Coursera 설립자인 Andrew Ng(응가 아니고 응) 선생님의 강의를 바탕으로 요약식으로 재구성한것으로, Coursera나 Itunes에서 공짜로 냅다 들을수 있다. 포스팅은 간단한 데이터 분류에서부터 기계학습, 이미지 프로세싱, 영상처리까지 구성할 예정이며 나중에 자료를 집대성해서 일반인들이 쉽게 이해할수 있는 자료집을 만들어도 좋겠다는 생각이다. 머신러닝이라함은 사실은 그냥 들을때는 굉장히 멋있어 보이고 어려워보이기만 한다. 그렇지만 막상 까보면 이전에 있었던 개념이며 이러한 개념들이 현재 이슈되고있는 빅데이터 등의 개념과 합쳐져서 대두가 되고있는 느낌이다. 머신러닝은 결국에는 데이터를 다루는것에 대한 하나의 이론이며 이의 패턴을 찾아 예측하는 방법론이라고 할수 있을것이다...

Java Documentation - Reader

Java Document에 있는 내용으로 알아서들 번역해서 보라 ReaderAbstract class for reading character streams. The only methods that a subclass must implement are read(char[], int, int) and close(). Most subclasses, however, will override some of the methods defined here in order to provide higher efficiency, additional functionality, or both. BufferedReaderReads text from a character-input stream, buffering character..

⑤ 디자인 패턴(Design Pattern) - Decorator

InputStream 관련한 자바 클래스를 보고있으면 정신이 아득해진다. 무슨 비슷한 이름들이 이렇게 많은지, 그리고 버전업을 하면서 뭐가 추가되었는지 어디서 코드를 복붙하지 않으면 아예 백지에서 생각해서 어? 그게 무슨 클래스였지 생각하기 힘들다. 출처 : https://www.clear.rice.edu/comp212/02-spring/labs/12/ 뭔가 비슷비슷한 이름들이 보기도 힘든 형태로 붙어있다. 자바 I/O 클래스는 데코레이터 디자인 패턴을 가지고 있는데, 이 데코레이터 패턴은 하나하나 장식을 매다는 클래스를 하나하나 만들어놓았기 때문에 위와같이 복잡한 형태의 UML이 그려질수밖에 없다. 초딩때 크리스마스 트리를 만들던 기억이 난다. 지금이야 귀찮지만, 그때는 얼마나 재미있었는지.. 일단 트..

⑥ 디자인 패턴(Design Pattern) - State

State 디자인 패턴도 마찬가지이지만 많은 디자인 패턴들은 나중에 변화가 생겼을때 코딩을 최소로 하고 갈아낄수 있게끔 만드는 것이다. 이로인해 추상화레벨은 올라가며 직관성은 조금 떨어지지고 이해하기가 조금 힘들지만, 한번 이해하고 나면 머리굴릴필요가 없다. 중요한것은 갈아낀다는 것에 중점을 맞추면 된다. 만약 State를 쓰지않고 단순한 상태 플래그를 가져가서 if else구문만을 이용해서 프로그램을 작성한다면, 나중에 프로그램이 수정될 경우 기존의 소스코드를 수정해야하기 때문에 어느정도 위험성이 있는것은 사실이다. 만약에 Context를 이용해서 그 대상이 되는 객체만 바꿔준다면, 기존의 소스코드를 수정할 필요 없이 객체만 바꿔주면 된다. 물론 뒷단의 프로그램에 영향이 있는지 없는지는 재확인해야 하는..

scikit - Image 튜토리얼 (1)

이미지 프로세싱으로 도대체 무엇을 할것인가? 이미지는 사실 숫자이다. 픽셀 하나하나마다 숫자정보가 들어있고, 이를 화면에 뿌려주면 색깔로 표현이 된다. 결국 이미지를 분석하는 일은, 숫자를 분석하는 일이며 데이터를 분석하는 일이다. Matplotlib은 굉장히 비싸고, 무겁고, 범용적이지 않은데, 파이썬은 여러 학술적인 기능들을 품었고 이는 오픈소스 프로젝트를 통해 발전해 나가고 있기 때문에 사실 라이센스 때문에 꺼려진다면 무조건 이를 쓰는것이 옳다. Scikit-Image는 소프트웨어를 사용하는데 거의 제약이 없는 BSD라이센스다. 흥미를 돕기위해, 아래와 같은 샘플 동전 분석 코드를 심어놨는데, 한번 그대로 따라 쳐보도록 한다. 아나콘다를 깔면 알아서 필요한 패키지들이 깔리니, 이 부분은 뒤어넘는다...

자바 주요 패키지 한글 설명 - 1.6 기준

java.applet 애플릿의 작성, 및 애플릿과 애플릿 문맥과의 통신에 사용하는 클래스의 작성에 필요한 클래스를 제공합니다. java.awt 사용자 인터페이스의 작성 및 그래픽스와 이미지의 페인트용의 모든 클래스를 포함합니다. java.awt.color 칼라 스페이스의 클래스를 제공합니다. java.awt.datatransfer 어플리케이션간 또는 어플리케이션내의 데이터 전송을 위한 인터페이스와 클래스를 제공합니다. java.awt.dnd 드래그&드롭 조작은, 많은 그래피컬 사용자 인터페이스 시스템으로 볼 수 있는 직접적인 조작 제스처(gesture)로, GUI 의 표현 요소에 논리적으로 관련한 2 개의 엔티티간에 정보를 변환하는 기구를 제공합니다. java.awt.event AWT 컴퍼넌트에 의해 트..