Pythonによる機械学習入門(1)Pythonのインストール
『データサイエンティスト養成読本 機械学習入門編』
第2部 特集2「Pythonによる機械学習入門」をGW中にやってみる
Pythonってパイソンでいいんですよね?
ゴールデンウィークで時間もあるので、1年前に買った本にしたがって機械学習やってみます。予想どおりPythonのインストールだけで手こずりました。
試行錯誤が全部書いてあるので、さっさと環境作りたい方は最後のまとめ手順だけ読んで下さい。
著者の方は素人はこんなところでつまづくんだと笑ってやって下さい。
使用するPC
- MacBook Pro Retina 13-inch 2012
- プロセッサ 2.5GHz Intel Core i5
- メモリ 8GB 大丈夫かぁ?
- フラッシュストレージ 251GB 空き領域 61.93GB で何とかなるか...
pyenvのインストール
司令1:HomeBrewをインストール
にある通りターミナルに
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
を貼り付けてみる。
※ターミナルがどこかを忘れてしまう人なので
アプリケーション>ユーティリティ>ターミナル.app
をDockに追加しておきました。
とりあえずターミナル上で大量に文字が流れていく。。。
と、以下のところで
Press RETURN to continue or any other key to abort
のところで止まった。ともかくエンターキーを押す。
==> /usr/bin/sudo /bin/chmod g+rwx /usr/local/. /usr/local/bin /usr/local/include /usr/local/lib /usr/local/lib/pkgconfig /usr/local/share /usr/local/share/man
Password:
何?Passwordって? ライセンスでも必要なの?と若干パニクる
だがしかし、Macにログインするときのパスワードを入力すると、何事もなかったかのように処理継続。無事終わったらしい。
$ brew doctor
を実行してみるといろいろワーニングが出るが、
If everything you use Homebrew for is
working fine: please don't worry and just ignore them. Thanks!
とのことなので、気にしないことにする。
本に戻って
司令2:pyenvのインストール
$ brew install pyenv
を実行。
無事エラーなくできたらしい。
司令3:シェルの設定ファイル
.bash_profileを編集する
え?初耳です。
使っているシェルに合わせて、.bash_profileや.zshenvなどを編集して次の行を追加するそうです。
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
呪文が並ぶ。えヴぁられても困るし。
スキップして次へ(後々これが問題になるのだが)
動作確認のためターミナルから次のように入力します。
$ pyenv version
次のように出力されれば正常に動いています。
system (set by /home/hoge/.pyenv/version)
こちらの環境では.bash_profileをいじらなくても以下のように出力されたので良しとします。 (だからこれがダメだったんですが)
system (set by /Users/hoge/.pyenv/version)
ちなみに.bash_profileはホームディレクトリにあるそうで、私の環境にはなかったです。
ターミナルの設定ファイルを作る[.bash_profile] | joppot
Pythonのインストール
インストール可能なバージョンは以下のコマンドで確認できるそうです。
> pyenv install --list
3.4.3以降にこれだけのバージョンがあります。
- 3.4.3
- 3.4.4
- 3.5.0
- 3.5-dev
- 3.5.1
- 3.6-dev
本では最新バージョンが3.4.3でした。
業務システムなら最新版には手を出すなですが、趣味だし最新の3.5.1でいってみましょう。(devは開発中だよね)
3.5.1の日本語ドキュメントもあるようです。
以下のコマンドでインストールです。
$ pyenv install 3.5.1
おやおや。なんだかエラーが出ているようです。
以下ターミナル上の出力内容
Installing Python-3.5.1...
BUILD FAILED (OS X 10.11.3 using python-build 20160130)
Inspect or clean up the working tree at /var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821
Results logged to /var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821.log
ログファイルを開いてerrで検索すると
/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Modules/_lzmamodule.c:19:10: fatal error: 'lzma.h' file not found #include^ 1 error generated.
(略)
Python build finished successfully! The necessary bits to build these optional modules were not found: _dbm _gdbm _sqlite3 nis ossaudiodev spwd zlib To find the necessary bits, look in setup.py in detect_modules() for the module's name. Failed to build these modules: _lzma _tkinter
(略)
Traceback (most recent call last): File "/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Lib/runpy.py", line 170, in _run_module_as_main "__main__", mod_spec) File "/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Lib/runpy.py", line 85, in _run_code exec(code, run_globals) File "/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Lib/ensurepip/__main__.py", line 4, inensurepip._main() File "/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Lib/ensurepip/__init__.py", line 209, in _main default_pip=args.default_pip, File "/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Lib/ensurepip/__init__.py", line 116, in bootstrap _run_pip(args + [p[0] for p in _PROJECTS], additional_paths) File "/private/var/folders/tb/m1nd4xs16cb1xyvxd_56xl0r0000gn/T/python-build.20160503143931.11821/Python-3.5.1/Lib/ensurepip/__init__.py", line 40, in _run_pip import pip zipimport.ZipImportError: can't decompress data; zlib not available
うーん。Python build finished successfully! とあるので、一応成功している?
zlibが無い?
一応以下のコマンドを打ってみる
$ pyenv global 3.5.1
pyenv: version `3.5.1' not installed
やっぱり失敗してますか。
なのに強行突破。
$ pyenv rehash
$ python --version
Python 2.7.10
いやダメですね。
Python zlib mac でいろいろ探してみたところ、やはりzlibのインストールが必要らしい。
[FAQ]PythonのDistributeのインストールに失敗する - 合同会社フィールドワークス
Macでpython3の環境構築6---Matplotlibのインストール3--- - ぴろの狂人日記
簡単なのは一番最初HomeBrewをインストールするときに検索したページ
にしたがってターミナルで
$ xcode-select --install
を実行。ダイアログで「インストール」を選んですすめる。
そしてもう一度
$ pyenv install 3.5.1
うまくいきますように。
Downloading Python-3.5.1.tgz...
-> https://www.python.org/ftp/python/3.5.1/Python-3.5.1.tgz
Installing Python-3.5.1...
Installed Python-3.5.1 to /Users/hoge/.pyenv/versions/3.5.1
あっさり4行のメッセージで完了
$ pyenv global 3.5.1
$ pyenv rehash
$ python --version
Python 2.7.10
ん?バージョンが変わらないぞ。
ちゃんと以下のフォルダも存在してbinやlibもあるのに。
/Users/hoge/.pyenv/versions/3.5.1
さっき無視した.bash_profileを作ってみる。
$ touch .bash_profile
$ vi .bash_profile
何年ぶりのviエディタだろう。なんとか指が動いた。
<<.bash_profileの中身>>
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
これでターミナルを再起動すると
$ python --version
Python 3.5.1
やったー!! やっとPython環境Getだぜ! ここまで3時間半... まあ何事も経験。
本に戻って以下のコマンドを実行
> pip install numpy
Collecting numpy Downloading numpy-1.11.0-cp35-cp35m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (3.8MB) 100% |████████████████████████████████| 3.8MB 129kB/s Installing collected packages: numpy Successfully installed numpy-1.11.0 You are using pip version 7.1.2, however version 8.1.1 is available. You should consider upgrading via the 'pip install --upgrade pip' command.
なんかおすすめされたので、素直にpipをアップグレードします。
$ pip install --upgrade pip
続けて
$ pip install scipy
$ pip install matplotlib
$ pip install scikit-learn
こちらは難なく完了。今日はPythonのインストールで力尽きました。
正しい手順を整理しておきます。
MacにPythonをインストールする手順
1:HomeBrewをインストール
ターミナルで以下を実行
$ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
$ xcode-select --install
2:pyenvのインストール
$ brew install pyenv
.bash_profileを作成
$ touch .bash_profile
<<.bash_profileの中身>>
export PYENV_ROOT="$HOME/.pyenv"
export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
ターミナルを開き直す
$ pyenv version
system (set by /Users/hoge/.pyenv/version)
3.Pythonのインストール
$ pyenv install 3.5.1
$ pyenv global 3.5.1
$ pyenv rehash
$ python --version
Python 3.5.1
4.各種パッケージのインストール
$ pip install numpy
$ pip install scipy
$ pip install matplotlib
$ pip install scikit-learn
以上。
コマンドを叩いてデータと戯れるのは明日以降で。