본문 바로가기

전체 글418

우분투 14.04에 docker 설치하기 Docker란 리눅스 기반의 시스템들 사이에서 이미지를 배포함으로써 실제 해당 환경을 사용할 수 있는 기능을 해주는 util이다.가령 내가 우분투 14.04 환경에 caffe를 설치한 후, 이미지로 구워서 docker-hub에 올리면 다른 사람들은 그 이미지를 그냥 사용함으로써 실제로 caffe를 직접 설치하지 않아도 caffe가 설치된 환경을 이용할 수가 있다. Docker를 사용하기 위해선 우선 apt-get update와 추가 package를 설치한다. $> sudo apt-get update$> sudo apt-get install linux-image-generic-lts-trusty 그 후엔 시스템 재부팅 $> sudo reboot 이제 실제로 docker를 설치해 보자. curl로 최신 do.. 2015. 9. 1.
의사 결정 트리 이번에는 의사 결정 트리에 대해 알아보자. 의사 결정 트리는 약간 flow chart와 비슷하다. 어떤 입력 값에 대해 '참', '거짓'으로 분기를 타는 로직을 거쳐서 정답을 찾아나가는 과정이다. 이전 포스팅에서 언급한 kNN과는 어떠한 차이가 있을까?? kNN 같은 경우에는 모든 데이터에 대한 학습 데이터가 필요하다. 왜냐하면 데이터 하나하나 마다의 거리를 구해야 하기 때문이다. 하지만 decision tree 같은 경우에는 트리 모양만 만들어 주게 되면 따로 input 데이터가 들어왔을 시 kNN 처럼 일일이 계산을 해줄 필요는 없다. 그럼 이제 어떻게 decision tree를 만들어야 할 것인지에 대해 알아보기로 하자. decision tree를 설계하기 위해 엔트로피라는 단어가 나온다. 원래는 .. 2015. 8. 13.
k-Nearest Neighbors 알고리즘 기존의 데이터와 비교해서 입력이 들어왔을 때 이 입력 값이 기존의 데이터와 얼마만큼 연관 관계가 있느냐에 착안해서 만들어진 알고리즘. 입력 값이 들어왔을 경우 입력 값과 기존 데이터들과의 거리를 구하고, 가장 거리가 가까운 곳을 찾아서 비슷함을 찾아내는 방법이다.말로는 설명하기 어려우니 코드로 이해하자. 처음 코드를 보면 createDataSet이란 함수를 통해 사전 데이터 집합을 생성하였다. 사전 데이터는 [1.0, 1.1], [1.0, 1.0], [0, 0], [0, 0.1]의 값을 가지는 데이터이며 각각 'A','A','B','B'의 Label을 가진다.이렇게 데이터 셋을 생성한 후에, classify 함수를 호출하는데, classify 함수는 입력 데이터가 사전 데이터 셋과 비교하여 어떤 Labe.. 2015. 8. 12.
python에서 switch문 쓰기 Python에서는 switch문이나 case문이 존재하지 않는다. 그래서 python에서는 switch문과 비슷한 동작을 할 수 있도록 dictionary를 이용해서 아래와 같이 구현한다. switch_map = { 'APPLE' : 1, 'BANANA' : 2, 'TOMATO' : 3} print switch_map['APPLE']print switch_map['BANANA'] 2015. 7. 23.
절대 경로로 import 하기 절대 경로에 있는 파이썬 class를 import하려면 어떻게 해야 할까? /home/test/define.py 란 python 코드가 아래와 같이 있다고 가정하자. class TestClass: def testFunction(self, flag): print "test Function" /home/test2/main.py 에서 /home/test/define.py에 있는 class를 import 하려면 어떻게 해야 할까? import sys를 이용해서 쉽게 해결할 수 있다. import sys sys.path.append('/home/test') from define import TestClass test = TestClass()test.testFunction('Hello World') 2015. 7. 22.
mysql index 설정하기 DB에 있는 특정 column을 보다 빠르게 찾기 위해 index를 설정하는 경우가 많다. 대부분 index를 설정하게 되면 DB 내의 btree에 해당 index가 따로 저장되기 때문에 기존의 column 값을 찾을때보다 더욱 빠르게 값을 찾을 수가 있다. 그럼 index를 어떻게 만들어야 할까?대부분의 경우, create table을 하고 pk나 unique key를 설정하게 되면 mysql 내부적으로 index를 잡아준다.만약 그 외의 필드에 대해 내가 index를 추가하고 싶다고 할 경우엔 아래와 같이 명령어를 쓰면 된다. ALTER TABLE [테이블명] ADD INDEX(필드명(크기)); 위와 같이 index를 생성하고 해당 index가 잘 만들어졌는지 확인하고 싶을 경우에는 아래와 같은 명령.. 2015. 7. 21.
폴더 내의 파일 검색하기 파이썬에서 폴더 안의 파일을 검색해서 처리해야 하는 일들이 종종 생긴다. 하지만 중첩된 폴더일 경우 이게 폴더도 있는 건지 파일만 있는 건지 확인도 해야하고, 생각외로 처리해야 할 것들이 많다. 간단하기 재귀로 폴더 안의 파일들을 검색하는 로직을 짜봤다. 처음 위치의 폴더 경로를 시작으로 해당 하위의 파일들을 찾아서 검색한 후, 만약에 파일이 아니고 폴더면 다시 함수를 호출해서 재귀적으로 폴더 내의 모든 파일을 찾는 함수이다. 위와 같은 방법으로 짤 수도 있지만 python에서는 더 좋은 함수를 제공해 주고 있다. os.walk를 사용하면 코드의 간결함 뿐만 아니라 처리 속도 향상도 얻을 수가 있다. (재귀는 좀 찝찝하기도 하고.. ) 2015. 7. 10.
mp4 영상에서 오디오 추출하기 $> ffmpeg -y -i [mp4 파일명] -vn -acodec libmp3lame -ar 44.1k -ac 2 -ab 128k [mp3 output 파일명] -y : output 파일에 대해 동일한 파일이 존재할 경우 덮어쓰기 여부 설정. -y 옵션을 주면 덮어쓰기가 된다. -i : 오디오를 추출할 원본 동영상 파일을 지정한다. -vn : 비디오를 추출할 필요가 없을 때 사용한다. 반대로 오디오를 추출할 필요가 없을때에는 -an을 사용한다. -acodec : 오디오 코덱을 지정한다. 위에서는 mp3 오디오 코덱을 지정하였다. -ar : 오디오 sampling rate를 지정한다. sampling rate가 과연 몰까?? 오디오 데이터는 연속된 값을 가지고 있기 때문에 이를 디지털로 표현하기 위해 대.. 2015. 7. 9.
[Python] Sqlalchemy ON DUPLICATE KEY UPDATE DB를 사용함에 있어 PK가 있는 경우에는 Update를, PK가 없는 경우에는 Insert를 써야 하는 경우가 많다. Django에서는 insert_or_update라는 함수를 따로 제공해 줘서 이 API를 이용했던 기억이 있는데, sqlalchemy 같은 경우에는 이러한 기능을 따로 제공하지 않는 것 같다. 찾아본 결과 sql 쿼리를 직접 날려서 insert_or_update를 처리하거나, select를 해서 pk 여부를 확인한 후 insert를 하는 방법 이렇게 두가지 방법을 확인하였으며, 두 번째 방법으로 insert_or_update 구현하기로 하였다.(사실 oracle처럼 merge란 방법을 쓰란 것도 있었는데, 이건 진짜 도통 모르겠어서 패쓰~) 간략하게 코드 설명을 하자면, 우선 연결되어 .. 2015. 6. 22.