Windows環境でgensimのword2vecを利用
Windows環境でgensimのword2vecを利用してみる。
環境
Windows10 64bit
前提として、
依存ライブラリである、numpyやscipyも以下リンク先よりwhlからpipインストール。
手順
http://www.lfd.uci.edu/~gohlke/pythonlibs/#gensim
にアクセスし
gensim-0.13.2-cp35-cp35m-win_amd64.whl
をダウンロード。
インストール実行
$ pip install gensim-0.13.2-cp35-cp35m-win_amd64.whl Processing d:\download\gensim-0.13.2-cp35-cp35m-win_amd64.whl Requirement already satisfied (use --upgrade to upgrade): numpy>=1.3 in c:\python3.5\lib\site-packages (from gensim==0.13.2) Requirement already satisfied (use --upgrade to upgrade): scipy>=0.7.0 in c:\python3.5\lib\site-packages (from gensim==0.13.2) Requirement already satisfied (use --upgrade to upgrade): six>=1.5.0 in c:\python3.5\lib\site-packages (from gensim==0.13.2) Requirement already satisfied (use --upgrade to upgrade): smart-open>=1.2.1 in c:\python3.5\lib\site-packages (from gensim==0.13.2) Requirement already satisfied (use --upgrade to upgrade): requests in c:\python3.5\lib\site-packages (from smart-open>=1.2.1->gensim==0.13.2) Requirement already satisfied (use --upgrade to upgrade): boto>=2.32 in c:\python3.5\lib\site-packages (from smart-open>=1.2.1->gensim==0.13.2) Requirement already satisfied (use --upgrade to upgrade): bz2file in c:\python3.5\lib\site-packages (from smart-open>=1.2.1->gensim==0.13.2) Installing collected packages: gensim Successfully installed gensim-0.13.2
何かエラー出ると思ったけど大丈夫だった。
かなり嬉しい
EclipseのPython開発プラグインpyDevをインストールして使ってみる。
WindowsでのPython開発はVisual Studio Express 2015 Python Toolsを使ってたんだけど、どうやら30日間の評価期間を超えたら使用できないようでしたのでIDE乗り換え。
EclipseのプラグインpyDevが良さそうなのでインストールして使ってみる。
環境
Windows10 64bit Eclipse4.6
手順
Eclipseのツールバー、ヘルプ -> Eclipseマーケットプレイス
検索タブに「pydev」と入力して検索。
検索結果のPyDevをインストール。
途中、「これらの証明書を信頼しますか?」と表示されますがOK。
インストール後はEclipseを再起動。
再起動後、ウインドウ -> パースペクティブ -> パースペクティブを開く -> その他 -> PyDevを選択。
ウインドウ -> 設定 -> PyDev -> インタープリター -> Python Interpreter
右上の新規をクリック。
今回はPYthon for Windows3.5を利用するので
インタープリター名に「python3.5-windows」
インタープリター実行可能ファイルに「C:\Python3.5\python.exe」を入力してOK。
そうすると、pythonpathの選択が表示される。
とりあえず全て選択状態でOKとする。
※OKクリック後は読み込み中なのかちょっと時間掛かる。
ここまででインストール完了。
では、適当にpythonプログラムを作成してみる。
パッケージエクスプローラーから
新規プロジェクト -> PyDev -> PyDevプロジェクト
プロジェクト名を適当に設定。
プロジェクトタイプはPython
文法バージョンは3.0-3.5
インタープリターは先程作成した「python3.5-windows」
「PYTHONPATHにプロジェクト・ディレクトリを追加する」を選択。
以上を設定し完了。
パッケージエクスプローラーで右クリック、プロパティの設定。
テキストファイルのエンコードをUTF-8に、新規テキストファイルの行区切り文字をUnixに設定。
パッケージエクスプローラーで右クリック、新規 -> PyDevモジュール
パッケージ名の入力は任意、ファイル名は拡張子名は不要。
完了をクリック後にテンプレートを選択画面が表示される。
今回は「モジュール:メイン」を選択
その後、PyDevでの実行時の設定のチェック画面が表示されますがすべて選択状態でOK。
でpythonプログラムが作成される。
適当なプログラムを実装し、対象プログラムを右クリックで実行。
「Python実行」を選択して実行すると。
Eclipseのコンソールに実行結果が表示される。
デバッグを使いたい場合はコード行の左部分でダブルクリック、または右クリックで「ブレークポイントを追加」してブレークポイントを設定。
ブレークポイントを設定した状態でデバッグするとブレークポイントポイントでプログラムが止まり変数の状態が確認出来る。
コード補完も出来て便利。
元々、機械学習の勉強のために環境構築しましたが、
以下のライブラリの正常動作が確認取れました。
MeCab、pandas、numpy、scipy、pyplot、matplotlib、scikit-learn、gensim(word2vec, doc2vec)
Windows環境でpythonの機械学習ライブラリscipyのインストールでハマった時の対処
Windows環境でpythonの機械学習ライブラリscipyをインストールしようとしてハマったのでメモ。
環境
Windows10 64bit Python for Window 3.5.1
事象
事前にnumpyはインストール済みの状態で、pipでscipyをインストールしようとすると以下のエラー
$ pip install scipy
Running from scipy source directory. Traceback (most recent call last): File "<string>", line 1, in <module> File "C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\setup.py", line 415, in <module> setup_package() File "C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\setup.py", line 411, in setup_package setup(**metadata) File "c:\python3.5\lib\site-packages\numpy\distutils\core.py", line 135, in setup config = configuration() File "C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\setup.py", line 335, in configuration config.add_subpackage('scipy') File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 1003, in add_subpackage caller_level = 2) File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 972, in get_subpackage caller_level = caller_level + 1) File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 909, in _get_configuration_from_setup_py config = setup_module.configuration(*args) File "scipy\setup.py", line 15, in configuration config.add_subpackage('linalg') File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 1003, in add_subpackage caller_level = 2) File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 972, in get_subpackage caller_level = caller_level + 1) File "c:\python3.5\lib\site-packages\numpy\distutils\misc_util.py", line 909, in _get_configuration_from_setup_py config = setup_module.configuration(*args) File "scipy\linalg\setup.py", line 20, in configuration raise NotFoundError('no lapack/blas resources found') numpy.distutils.system_info.NotFoundError: no lapack/blas resources found ---------------------------------------- Command "c:\python3.5\python.exe -u -c "import setuptools, tokenize;__file__='C:\\cygwin\\tmp\\pip-build-jdbdpxyp\\scipy\\setup.py';exec(compile(getattr(tokenize, 'open', open)(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record C:\cygwin\tmp\pip-2epuj3ap-record\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\cygwin\tmp\pip-build-jdbdpxyp\scipy\
対処
インストール済みのnumpyをアンインストール
pip uninstall numpy
http://www.lfd.uci.edu/~gohlke/pythonlibs/#scipy
にアクセスし
numpy-1.11.2+mkl-cp35-cp35m-win_amd64.whl
scipy-0.18.1-cp35-cp35m-win_amd64.whl
をダウンロードする
※numpyはmkl(Intel Math Kernel Library)が付属した.whlファイルを選択する必要有り
ダウンロード後インストール
$ pip install numpy-1.11.2+mkl-cp35-cp35m-win_amd64.whl $ pip install scipy-0.18.1-cp35-cp35m-win_amd64.whl
エラー出ずにインストールできた!
Processing c:\users\shinzato\desktop\scipy-0.18.1-cp35-cp35m-win_amd64.whl Installing collected packages: scipy Successfully installed scipy-0.18.1
jedi-vimをインストールしてvimでpythonコードの補完
気づいたらvimでpython開発をやっている日々。。
開発環境を整えようかと思い、vimのプラグインでpythonコードの補完をしようと思いました。
で、pythonコード補完のプラグインを調査してみるとjedi-vimというプラグインがありましたが、インストールの為にはvimのパッケージマネージャの導入が必要との事。
パッケージマネージャのNeoBundleは非推奨になったそうで現在はdeinが使用した方が良いとの事でしたが、deinの環境構築の為にはvimのバージョンが7.4である必要がありました。
ただ、vimのバージョンアップにハマったのでNeoBundleを利用する事に。
非推奨との事ですが、別にvimでpythonの補完が出来れば良いので!
環境
CentOS6 vim7.2 python3.4.2(pyenv)
手順
pluginのダウンロード、インストール
curl https://raw.githubusercontent.com/Shougo/neobundle.vim/master/bin/install.sh > install.sh sh ./install.sh rm -rf install.sh
良くわからんが必要らしいので実行。
cd ~/.vim/bundle/jedi-vim/jedi/ git submodule update --init
vimrc編集
vi ~/.vimrc
追記
"NeoBundle 'davidhalter/jedi-vim'"
の行でjedi-vimをインストールしてる。
" Note: Skip initialization for vim-tiny or vim-small. if 0 | endif filetype off if has('vim_starting') if &compatible set nocompatible " Be iMproved endif set runtimepath+=~/.vim/bundle/neobundle.vim endif call neobundle#begin(expand('~/.vim/bundle/')) " originalrepos on github NeoBundle 'Shougo/neobundle.vim' NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'windows' : 'make -f make_mingw32.mak', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ } NeoBundle 'davidhalter/jedi-vim' ""NeoBundle 'https://bitbucket.org/kovisoft/slimv' call neobundle#end() filetype plugin indent on " required! filetype indent on syntax on NeoBundleCheck
適当なファイルをvimで開くと、いきなり変なメッセージ出てきてインストールはじまったぽい。。
数分で終わりました。
以下のような情報もあった、本来はそうするのかも。
>Vimのコマンドモードで:source ~/.vimrcを実行.
>NeoBundleInstallのダイアログ(GVim使ってます)が出てくるのでyesを選択.
>これでプラグインがダウンロード&インストールされます.
インストール後、実際にpythonファイルをvimで開いて実装。
モジュール名入力してピリオドを入力するとコード補完のプルダウンが表示された!
…けど、numpyやpandasといったライブラリの場合は補完が表示されない。
調査した所、pyenv環境を使用している事が原因みたいです。
jedi-vimでは標準python側のライブラリ(ディレクトリ)を参照しているようです。
という事で対処
対処1
jedi-vim や vim-pyenc のロードよりも前に以下を追記
" ~/.pyenv/shimsを$PATHに追加 let $PATH = "~/.pyenv/shims:".$PATH
jedi-vimの後ろに以下を追記
" pyenv 処理用に vim-pyenv を追加 " Note: depends が指定されているため jedi-vim より後にロードされる(ことを期待) NeoBundleLazy "lambdalisue/vim-pyenv", { \ "depends": ['davidhalter/jedi-vim'], \ "autoload": { \ "filetypes": ["python", "python3", "djangohtml"] \ }}
:wで保存後
:source ~/.vimrc
で設定反映。
vim-pyenv: Failed to activate "3.5.0". Python version of the env is not supported in this Vim.
なんかハマったので別案・・・
対処2
ftpluginディレクトリ作成
mkdir ~/.vim/ftplugin/
pythonファイル用設定作成
vi ~/.vim/ftplugin/python.vim
以下を定義
import os import sys path = os.path.expanduser("/root/.pyenv/versions/3.5.0/lib/python3.5/site-packages") if not path in sys.path: sys.path.append(path)
適当にファイルをvimで開いて以下を実行し、pyenvのパッケージのパスが追加されてればOK
:py print(sys.path)
pandasやnumpyでも保管できた。
出来たんだけど・・・
遅い。
ピリオド打ったら少し固まる。
最終的な設定ファイルは以下のようになった。
.vimrc
" Note: Skip initialization for vim-tiny or vim-small. if 0 | endif filetype off if has('vim_starting') if &compatible set nocompatible " Be iMproved endif set runtimepath+=~/.vim/bundle/neobundle.vim endif call neobundle#begin(expand('~/.vim/bundle/')) " originalrepos on github NeoBundle 'Shougo/neobundle.vim' NeoBundle 'Shougo/vimproc', { \ 'build' : { \ 'windows' : 'make -f make_mingw32.mak', \ 'cygwin' : 'make -f make_cygwin.mak', \ 'mac' : 'make -f make_mac.mak', \ 'unix' : 'make -f make_unix.mak', \ }, \ } NeoBundle 'davidhalter/jedi-vim' ""NeoBundle 'https://bitbucket.org/kovisoft/slimv' call neobundle#end() filetype plugin indent on " required! filetype indent on syntax on autocmd FileType python setlocal completeopt-=preview NeoBundleCheck
python << EOF import os import sys path = os.path.expanduser("/root/.pyenv/versions/3.5.0/lib/python3.5/site-packages") if not path in sys.path: sys.path.append(path) EOF
あまりにも重たいので後日アンインストールした。。
もっと軽い補完プラグイン探そう・・
scikit-learnで実装したナイーブベイズ分類器の実行でDeprecationWarningの警告が出たときの対処
http://qiita.com/ynakayama/items/ca3f5e9d762bbd50ad1f
を参考にscikit-learn(サイキット・ラーン)を利用してナイーブベイズ分類器を実装。
多項分布を仮定したMultinomialNBを用いた処理の実行で以下の警告が発生した。
/root/.pyenv/versions/3.5.0/lib/python3.5/site-packages/sklearn/utils/validation.py:386: DeprecationWarning: Passing 1d arrays as data is deprecated in 0.17 and willraise ValueError in 0.19. Reshape your data either using X.reshape(-1, 1) if your data has a single feature or X.reshape(1, -1) if it contains a single sample. DeprecationWarning)
0.17では1d配列のデータ利用が非推奨になった?
scikit-learnのバージョン確認
pip freeze | grep scikit scikit-learn==0.17.1 pip freeze | grep numpy numpy==1.11.1
よくわかって無いけど、以下のように識別対象データを2次元配列にしたら警告出なくなった。
t = np.array( [[2,2,4,5,6,8,8,8]] )