설치
virtualenv / Tcl error
예전 버전의 virtualenv 인 경우 tcl library 를 못찾는 error 가 나올 수 있다.(확실히 언제 버전부터 tcl 을 copy 하는 code 가 들어갔는지는 모르겠다. ref. 7 를 참고하자.)여하튼 일단 virtualenv 를 최신버전으로 사용하자.
pip install virtualenv --upgrade
그리고 혹시나 현재 상태에서 사용하고 싶다면, 자신의 virtualenv 의 activate.bat 에 아래 code 를 추가하자.
set "TCL_LIBRARY=C:\Python27\tcl\tcl8.5" set "TK_LIBRARY=C:\Python27\tcl\tk8.5"
package 설치
아래처럼 package 를 설치한다.pip install scikit-learn pip install numpy-1.11.0+mkl-cp34-cp34m-win_amd64.whl pip install scipy-0.17.1-cp27-cp27m-win_amd64.whl pip install matplotlib-1.5.1-cp27-none-win_amd64.whl
windows 에서 numpy 설치
ref. 4에 나와 있는 것처럼 ref. 1 의 pre-built 된 많은 binary 들이 numpy-1.10+mkl 을 필요로 한다.Python Extension Packages for Windows - NumPy 에서 numpy-1.11.0+mkl-cp34-cp34m-win_amd64.whl 를 설치한다.
D:\mine\naiveBayes>pip install numpy-1.11.0+mkl-cp34-cp34m-win_amd64.whl
참고로, pip install numpy 를 하면, pre-built scipy 를 사용할 때 아래와 같은 error 가 발생한다.[ref. 5]
... File "C:\Python27\lib\site-packages\scipy\__init__.py", line 61, in <module> from numpy._distributor_init import NUMPY_MKL # requires numpy+mkl ImportError: cannot import name NUMPY_MKL
windows 에서 scipy 설치
Python Extension Packages for Windows - Christoph Gohlke 에서 scipy whrl 을 download 하고, 아래처럼 설치한다. 참고로 내 python 은 python 2.7 이여서 cp27 이다.D:\mine\naiveBayes>pip install scipy-0.17.1-cp27-cp27m-win_amd64.whl
linux 에서 Matplotlib 설치
설치할 때 build 를 위해 library 가 몇개 더 필요하다. 아래 글을 참고하자.library 를 설치하고도 freetype header file 을 인식하지 못할 수 있다. 이때는 symbolic link 를 만들어 주면 된다.
- sudo apt-get install libpng-dev libjpeg8-dev libfreetype6-dev
- ln -s /usr/include/freetype2/ft2build.h /usr/include/ (참고)
사용
큰 data 처리하기
ref. 3 에 큰 data 에 대한 이야기가 있다.컴퓨터 한대에서 사용가능한 RAM 용량의 20% 가 넘는 크기의 data 를 large data 라고 할 수 있다. 해결방법은 아래 2가지가 가능하다.
- data set 의 일부만(subset) 가지고 data 를 분석한다. 흔히 알고 있는 streaming data 를 처리하는 것이다.
- cloud 같은 것을 이용해서 더 큰 RAM 용량을 얻는다.
out-of-core
이중에 scikit-learn 에서 제공하는 out-of-core processing을 살펴 보자. ref. 4 에 따르면 scikit-learn 은 작은 크기의 data (smaller data) 에 최적화 되어 있다고 한다. scikit-learn 팀은 streaming data 를 처리할 수 있도록 시도하고 있다고 한다.[ref. 3]그래서 scikit-learn 에서는 fit 대신에 사용할 수 있는 partial fit 을 제공한다.
이게 큰 data 를 여러개의 작은 조각으로 나눠서 작은 조각들을 처리해 나가는 것이다. 이를 통해서 모든 data 가 RAM 에 load 될 필요가 없어서 큰 data 를 처리할 수 있다.
pickle/unpickle
trained 된 model 을 저장해 놓을 수 있다. 이러면 매순간 predict 할 때마다 다시 train 하지 않아도 된다. 이것을 python 에서 pickle 이라 표현하는데, 이것을 위해 joblib.dump 와 joblib.load 를 제공한다. 이 녀석은 model 을 file 로 저장할 수 있게 해준다.이 pickled 된 file 은 문제가 발생할 여지가 있다. 그래서 아래 2가지를 지키라고 한다.
- 절대 믿을 수 없는 data 를 unpickle 하지 마라
- 특정 버전의 scikit-learn 에서 save 된 Model 들은 다른 버전에서 load 되지 않을 수 있다.
Source code
See Also
- 쿠...sal: [컴][machine-learning] Feature extraction
- 쿠...sal: [컴][machine-learning] Strategies to scale computationally: bigger data
Reference
- Python Extension Packages for Windows - Christoph Gohlke
- http://stackoverflow.com/a/37281256
- Riding on Large Data with Scikit-learn | Open Data Science
- We make the software, you make the robots - O'Reilly Radar
- Out-of-core classification of text documents — scikit-learn 0.17.1 documentation
- 6. Strategies to scale computationally: bigger data — scikit-learn 0.17.1 documentation
- Tcl doesn't work inside a virtualenv on Windows · Issue #93 · pypa/virtualenv · GitHub
댓글 없음:
댓글 쓰기