반응형

파이썬 35

[Scikit-learn] large data set 학습시키는데 발생하는 문제

scikit-learn을 이용해 기존에 학습하는 데이터 셋이 작을때는 SVC에서 kernel로 모델을 생성했다. 하지만 샘플의 개수가 늘어남에 따라 문제가 생기기 시작했다. 그 이유는 간단하다. scikit-learn에서 이미 샘플의 수가 많으면 동작이 안된다고 명시하고 있다. 정리하면 SVC kernel은 scalable하지 않기 때문에, training set의 small subset에 적합하고, incremental/online learning을 지원하지 않는다. oneline learning은 간단하게 말하면, 모든 데이터를 한번에 모델을 학습시키는데 사용하지 않고, batch 형태로 데이터를 나누어서 학습시킨다. 기존에는 한번의 batch 작업으로 모델을 생성했다면, 여러번의 batch로 모델을..

데이터분석 2017.02.07

[Python] Virtualenv 설치 및 dependencies 관리하기

파이썬에서 패키지가 꼬여본 사람은 알것이다. 이 virtual env가 얼마나 훌륭한 역할을 하는지, 또한 여러개의 프로젝트를 수행할때 각각의 프로젝트마다 요구되는 패키지의 버전이 다를 수 있기 때문에 프로젝트 별로 환경을 구축하는게 좋다. 물론 배포할때는 필수다. 처음에 virtualenv를 pip를 통해 설치하면 된다. $ pip install virtualenv 설치가 완료되면 아래와 같이 차례대로 입력하면 virtualenv의 환경으로 진입한다. $ virtualenv venv $ source venv/bin/activate 기존 shell과 다르게 $(venv) /home/banana 식으로 화면에 표시되면 정상적으로 진입한 것이다. 이제 여기서 설치하고 싶은 패키지를 pip install 으로..

Programming/Python 2017.02.07

[Python] matpltlib import 에서 발생한 에러

파이썬에서 matplotlib을 import하는데 아래와 같은 에러가 발생했다. RuntimeError: Python is not installed as a framework. The Mac OS X backend will not be able to function correctly if Python is not installed as a >>> import matplotlib.pyplot as plt Traceback (most recent call last): File "", line 1, in File "//anaconda/envs/myenv/lib/python2.7/site-packages/matplotlib/pyplot.py", line 109, in _backend_mod, new_figure..

Programming/Python 2017.02.07

[Python] stdin, stdout, pipeline 이용해 데이터 처리하는 방법

stdin과 stdout을 이용해서 데이터를 파이핑할 수 있다. 파일에 숫자가 포함된 줄이 몇개나 있는지 확인하는 방법 $ cat SomeFile.txt | python egrep.py “[0-9]” | python line_count.py 문서의 단어를 모두 세어 보고 가장 자주 나오는 단어를 출력해주는 코드 $ cat the_bible.txt | python most_common_words.py 10 [참고] 밑바닥부터 시작하는 데이터과학

Programming/Python 2017.02.07

파이썬으로 HTML 파싱하기

웹페이지는 HTML로 작성이 되어있고, HTML은 element와 attribute로 구성되어 있다. HTML에서 ‘id가 foo인 요소에 포함되어 있는 텍스트를 가져와’라는 규칙으로 필요한 정보를 추출할 수 있다. 하지만 실제로 제대로 된 형태를 갖추지 못했기 때문에 HTML의 요소를 tree 형태로 변환해서 쉽게 접근이 가능하게 해주는 BeautifulSoup라이브러리를 사용하면 쉽다. 파이썬에서 HTML을 파싱하기 위해서는 BeautifulSoup, requests, html5lib이 필요하다. 파이썬에서 기본적으로 제공하는 라이브러리인 HTML parser는 완벽한 HTML 구조가 아니면 제대로 작동하지 않기 때문에 html5lib이 필요하다. $ pip install beautifulsoup4 ..

Programming/Python 2017.02.07

[Python] Pillow를 이용한 이미지 분석 with Jupyter(IPython Notebook) 확인하는 방법

들어가며: Pillow는 이미 유명한 파이썬 이미지 분석 라이브러리 입니다. 이미지 파일을 읽어 resize, scale 등 다양한 작업을 할 수 있습니다. 이번에는 pillow를 이용해 이미지를 처리하는 내용보다는 image분석을 위해서 사용하는 IPython Notebook인 Jupyter에서 이미지를 그래프 형태로 변환해서 화면에 출력을 하는 예제를 살펴보겠습니다. Pillow에서 읽어들인 이미지의 변화를 확인하고 싶을때, 항상 이미지를 창에 띄우는 방법도 있지만, Jupyter에서 처리하게 될때 이미지가 matplotlib의 차트처럼 나오면 이미지 처리의 전후를 확인할 수 있습니다. 사용하기: 필요한 라이브러리는 통계분석을 할때 자주사용하는 matplotlib, numpy가 필요하다. 코드에 대해..

Programming/Python 2016.11.08

[Python] argparse를 이용한 입력 파라미터 받는 방법

들어가며: 모든 언어를 사용하다 보면, 실행시에 파라미터를 입력받아서 처리하는 로직을 구현해야하는 경우가 많다. 자주사용하기 때문에 최초에 한번 나만의 모듈을 만들어놓고, 그대로 계속 재활용해서 사용하면 좋다. 물론 내가 sys.argv[0], sys.argv[1]의 들어온 값을 파싱해서 사용해도 되지만, 파이썬의 장점인 패키지가 많은것을 활용하는게 좋다고 생각한다. 이번에 소개할 내용은 argparse를 이용해서 매개변수를 입력받는 방법이다. argparse는 내가 입력하는 parameter의 옵션과 값을 입력받아줄 뿐만 아니라 help도 지원하니 개발자도, 사용자도 쉽게 사용을 할 수 있도록 되어 있다. 보통 우리가 커맨드창에 -h 옵션을 줘서 optional arguments를 확인을 할 수 있도록..

Programming/Python 2016.11.08

[Python] Singleton Pattern을 이용한 Logger 만들기

들어가며 이번에 설명할 내용은 metaclass를 이용해 SingletonType의 class를 생성하고, 생성한 패턴을 이용해 실제로 사용하는 방법에 대해서 설명을 하려고 합니다. 일단 Singleton이라하면 두개 이상의 객체를 만드는 것을 제한하여, 한 클래스가 하나의 객체를 생성하는 것을 말한다. 다른 클래스에서는 하나의 객체를 이용하기 때문에 어디서든지 사용 가능한 객체를 만드는 경우에 사용한다. 저 같은 경우에는 가장 많이 쓰는 패턴이 아닌가 싶습니다. 안드로이드에서도 예를 들면 ListView를 구현할때 데이터를 관리하기 위해서 Singleton을 사용하기도 했습니다. 하지만 가장 많이 써본 경험은 하나의 역할을 하는데, 그 역할이 어느 곳에서든 사용할 수 있도록 하기 위함입니다. Logge..

Programming/Python 2016.08.11

[Python] 데이터 포맷 변환 - Protocol Buffer를 Json으로 변환

들어가며 데이터 포맷은 참... 다양합니다. json부터 시작해서 csv, protocol buffer, text 등등.. 이번에는 protocol buffer를 json의 형태로 변환하는 방법에 대해서 알아보려고 합니다. 왜 필요하느냐.. 저 같은 경우에는 spark에서 데이터를 처리하기 위해서 변환을 했습니다. 사실 스파크에서는 protocol buffer를 지원하기 때문에 그대로 읽으면 되지만, tweeter에서 제공하는 elephant-bird 라이브러리를 함께 사용해야 하는 복잡함이 있다. 그것보다 아직 protocol buffer를 읽어서 spark에서 처리한 내용이 거의 없었다. 내가 찾아봤을때는 elephant-bird와 scala를 이용해서 읽어보려고 했으나 많은 dependency 등과..

Programming/Python 2016.08.03
반응형