TSG: TAOCP Vol. 1 MMIX (2014/1Q)
이번 주에는 책에 있는 예제코드 - find first 500 primes - 의 실행 및 분석을 해보고 이를 기반으로 피보나치 수를 구하는 코드를 작성했다. N 을 커맨드라인 입력으로 받고 싶었지만 아직 거기까지 하는 방법은 몰라서 임의의 정수 N 은 하드코딩해서 넣었다.
ipython notebook 에서 코드 버퍼를 임의의 실행기로 실행할 수 있는 법을 알아내서 ipython notebook 에서 MMIX 실행을 할 수 있게 환경을 만들었다. 코드 셀 첫 줄이 %% 로 시작하면 그 뒤에 오는 실행파일에 코드를 stdin 으로 넣게 된다. 따라서 mmixal(MMIX Assembly Language)와 mmix(MMIX Emulator) 두 개의 바이너리를 사용하여 stdin 으로 들어오는 mmix 코드를 실행수 있는 쉘스크립트를 작성해야 한다. MMIX 바이너리는 여기 서 받을 수 있다. 내가 작성한 스크립트는 아래와 같다.
1 2 3 4 5 6 7 8 | #! /bin/sh
TMP=`tempfile`
MMO="$TMP".mmo
MMS="$TMP".mms
cat > $MMS
/usr/local/bin/mmixal -o $MMO $MMS
/usr/local/bin/mmix $MMO
/bin/rm -f $MMS $MMO $TMP
|
관련 MMIX 코드는 ipython notebook 서버와 어딘가의 저장소에 투척해 두었다.
MLDSS: Machine Learning In Action 4장
Naive bayes 를 이용한 분류기를 만들어봄. 항상 나오는 예가 ham? or spam? 이다.
- Bayes rule: p(category | words)를 바로 알기 어려우니 p(words|category), p(category) 얘들로 돌려차기!
- Why naive?: 모든 단어들이 독립이고 똑같이 중요하다고 (거짓)가정을 한다.
- Set-of-words Vs. Bag-of-words: 단어들의 출몰을 등장/안등장으로 나누느냐(Set) 회수로 치느냐(Bag)의 차이
- Multiply->Add with Log: 작은 수들의 곱하기를 로그 더하기로 바꿔 계산. Arithmetic underflow를 피해가기 위한 것.
책에 있는 코드를 다 타이핑 해 봤다. PCI 에서 보고 여기서 또 보고 코드도 받아치기(…) 해보고 나니 이제 좀 알 것 같다.
여기서 안다는 것은 “써볼 수 있다” 를 뜻함. 설명할 수 있는 단계까지는 멀었음.
Coursera compdata-004
순전히 R 사용법이다. 이번주차 비디오 강의는 Base graphic, Lattice, ggplot2 의 3가지 그래프 라이브러리 사용법을 다뤘다.
-
base graphic
x <- rnorm(10) y <- x^2 - 3*x + 3 plot(x, y) title("what?") ...
base graphic은 이런식으로 plot 으로 한번 그린 후에 title, line 등의 함수로 그림을 계속 고쳐 나갈 수 있다. 의식의 흐름(!)을 따라가기 좋다.
-
lattice
library(lattice) xyplot(x ~ y | g, data = my_data_frame, ... ... ...)
xyplot 이라는 무시무시한 함수가 있어서, 위의 base graphic 에서라면 여러번에 나누어 완성시킬 것을 한 방에 한다. base graphic 과는 달리 사용하려면 library(lattice) 로 모듈을 가져와 주어야 한다.
-
ggplot2
얘는 위의 두개 중간 정도라고 하는데 귀찮아서 대충 보고 넘어가 버렸다. lattice 보다 조금 더 귀찮은 점은, 그냥 library(ggplot2) 로도 안되고 무려 설치(!)를 해 주어야 한다는 점.
install.packages('ggplot2')
47, 48 이 CRAN 한국 미러인 듯.
프로그래밍 숙제는 미국의 병원 데이터를 가지고 사람이 가장 많이/적게 죽어나가는 병원 찾기, 주별로 좋은 병원 찾기 뭐 이런걸 한다. 평소 다루던 데이터가 주로 Row-based 인데 반해, data.frame 은 Column-based 라서 익숙해지기 힘들다. 하지만 이건 익숙해지고 나면 vectorized 하기 좋은 방식으로 생각하는데 도움이 될 듯.
R 은 배울수록 싫다. 누구 말마따나 ML계의 PHP 라는 말이 … orz
Pelican
지금 이 글/사이트를 작성하는데 사용하는 도구. 정적 페이지 생성기는 Jekyll 이 대세라고는 하지만 루비는 싫으니까 ( ..)a 파이썬으로 만들어진 아이를 골랐다.
여기 를 참고했다. jekyll 과 octopress가 사실상 한 몸이라고 보면 펠리컨이 2등이다! … … 격차가 좀 크지만.
아직 LaTeX 플러그인이나, 이미지 임베딩하는 방법, 테마 손대는 방법 등등 모르는 것이 많다. 그래도 일단 내가 쓸 fabfile 작성, github pages 에 올리기+CNAME 연결로 동작을 확인까지는 됐다. 그리고 방금 마악 테마를 좀 고쳐서 Feedburner 링크를 navbar 에 박아 넣었고, 구글 커스텀 서치 추가. 앞으로 천천히 고쳐나가면 되겠지. 일단 수식부터 어떻게 … :’(
Comments