そういえばシステムエンジニアだった

ぼけーっと会社員やってますが、そういえばSEだったことを思い出し、'てくにかる' とか 'えんじにあ' っぽいことを学び直すブログ

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 で何とかなるか...

 

本にはLinuxMacへのインストールが載ってました

 

pyenvのインストール

司令1:HomeBrewをインストール

Homebrew — OS X 用パッケージマネージャー

にある通りターミナルに

/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の日本語ドキュメントもあるようです。

概要 — Python 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, in 
    ensurepip._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をインストールするときに検索したページ

MacにHomebrewをインストールする - Qiita

にしたがってターミナルで

$ 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のインストールで力尽きました。

 

正しい手順を整理しておきます。

MacPythonをインストールする手順

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

 

以上。

コマンドを叩いてデータと戯れるのは明日以降で。

確定申告完了 Mac OS X El Capitanにて

去年初挑戦したe-Tax、今年はギリギリでした。

しかもOSをバージョンアップしてしまったので、推奨環境外...

  El Capitan 10.11.3

  Safari 9.0.3(11601.4.4)

Macで送信エラーになり焦りましたが、以下の3ステップで無事送信できました。

 

1.Smart Card Servicesをインストール

http://smartcardservices.macosforge.org/trac/wiki/installers

OS X El Capitan v10.11 用をインストール

 

2.JPKI利用者ソフト Ver3をインストール

利用者クライアントソフト Ver 3(Mac対応版) ダウンロード

 

3.Javaをバージョンアップ

Java 8 update 31→Java 8 update 73

 

いろいろ悩みましたが結局は上記3つでOKでした。

手順は以下のページに記載があります。

公的個人認証サービス 利用者クライアントソフトのダウンロード

http://www.jpki.go.jp/download/mac.html

 

それからいつも悩まされる「キーチェーン パスワード」

f:id:nkkaki:20160313131357p:plain

これは住基カードの4桁の数字です。

5回間違えると市役所に行ってロック解除が必要です。

 


 

具体的なエラー内容

送信ボタンを押すとJavaをバージョンアップするよううながす英語のメッセージが出ますが[Later]を選択して無視して操作を進めました。

f:id:nkkaki:20160313133204p:plain

去年と違うのは認証局サービス名のところで、住基カードと番号カードが選べるようになっているところです。私は住基カードを選択。この確定申告が終わってからマイナンバーカードを作成する予定です。

いけるかもと思って進めていくと、以下のエラー画面がでました。

f:id:nkkaki:20160313133512p:plain

そもそも住基カードに正しくアクセスできているのか、JPKI利用者ソフトで確認します。このソフトがアプリケーションの下に見つからなくて焦りましたが、

アプリケーション>ユーティリティ>公的個人認証サービス の下でした。

f:id:nkkaki:20160313133709p:plain

f:id:nkkaki:20160313133911p:plain

ここで、

 動作確認→OK

 自分の証明書→エラーが発生しました

となりました。

STEP1のSmart Card Servicesをインストールすると、自分の証明書を確認することができるようになりました。

上の画面にある「公的個人認証サービスのパスワード」は住基カードの4桁数字です。

 

この後、STEP2:Ver3インストールを実施するも、送信画面での「エラーコード:AF0020-1011」は変わらず。STEP3:Javaバージョンアップで無事送信OKとなりました。

 

もう動かないVMWare Fusionの断片vmdkファイルをVirtualBoxで蘇らせる

XCodeがインストールできなかったので、Mac OS を 10.10.6 から 最新のEI Capitan10.11.3 にバージョンアップしたところ、VMWare Fusion 5が動かなくなってしまいました。

f:id:nkkaki:20160214161808p:plain

 

主なファイルはMacの書類をWindowsのドキュメントとして共有していたので、潰して作りなおしてもいいのですが、C:\直下のファイルやインストールしていた様々なソフトを一から入れなおすのも面倒です。

早速ネットを調べてみると、

VirtualBoxだとVMWare Fusionのファイルを移行できるらしい

 

参考:OS X YosemiteでVMware Fusion 5.xが動かない!Win7のVirtualBoxへの移行手順のまとめ – Rriver

 

ということで私の場合の復旧までの手順をメモしておきます。

VirtualBoxをインストールしよう!

詳しい手順はこちら

VirtualBoxのインストールは普通にあっさりできました。

vmwareのファイルってどこ?

VMware Fusion仮想マシン・ファイル「*.vmwarevm」をいじらないといけないのですが、Macに不慣れな私はそのファイルがどこにあるのかわからない。

しかたがないのでFinderのメニューから[移動]−[ホーム]を選んで「vmware」で検索。
私の場合は、以下の場所にありました。
書類>仮想マシンWindows 7 x64.vmwarevm

f:id:nkkaki:20160214172009p:plain

VMware Fusion仮想マシン・ファイル「*.vmwarevm」を右クリックして、「パッケージの内容を表示」させます。

f:id:nkkaki:20160214172040p:plain

オーマイガッ!vmdkファイルがクソいっぱいある!!!

分割されたイメージファイルを1つにまとめる

vmware-vdiskmanager」を使うと結合できるようです。

vmware-vdiskmanagerのダウンロード

早速ダウンロードします。

下のほうにダウンロードファイルあります。

http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1023856

f:id:nkkaki:20160214173243p:plain

3つありますが、一番上のシンプルなファイルをダウンロードしました。

zipファイルはダブルクリックすると解凍されて「vmware-vdiskmanager」ができます。

vmware-vdiskmanagerを仮想ファイルディレクトリに移動

この「vmware-vdiskmanager」をさきほどのvmdkファイルがたくさんあった「Windows 7 x64.vmwarevm」に移動します。

ターミナル上でコマンド実行

実際の結合の操作は「ターミナル」でコマンド入力します。

$ ./vmware-vdiskmanager -r [仮想マシン名].vmdk -t 0 [結合後の仮想マシン名].vmdk

実際にやった手順です。 アプリケーション -> ユーティリティ にある ターミナル を起動します。 ターミナル上のコマンドは以下のとおり。

  1. cdコマンドで、vmwareのディレクトリに移動する

    $ cd "/Users/mikiko/documents/Virtual Machines.localized/Windows 7 x64.vmwarevm"

    *ファイル名にスペースを含んでいるので””で囲む

  2. pwdコマンドで現在のディレクトリを確認

  3. lsコマンドでこのディレクトリ内のファイル一覧を確認

  4. 結合するためのコマンドを実行
    元のファイルが「仮想ディスク-s00x.vmdk」、結合した後の新しいファイル名は何でもよいのですが「win7.vmdk」としました。
    ./vmware-vdiskmanager -r  仮想ディスク.vmdk -t 0 win7.vmdk

f:id:nkkaki:20160214180153p:plain

ディスクの空き容量不足で一度失敗していますが、ファイルを整理して空き容量を増やし、再度チャレンジ。無事win7.vmdkができました。
できあがったwin7.vmdkを別のディレクトリに移動します。今回は「書類」の下にVMDKフォルダを作って、win7.vmdkをそこに移動しました。

 

VirtualBoxに取り込む

以下のサイトを参考に作業を進めます。

ハードディスクの設定では

3番目の「すでにある仮想ハードディスクファイルを使用する」

を選択しましたが、後ほど設定し直すので

1番目の「仮想ハードディスクを追加しない」を選択してもOKだと思います。

f:id:nkkaki:20160214184558p:plain

ストレージのSATAは削除してIDEを追加します。

f:id:nkkaki:20160214184603p:plain

ここで「既存のディスクを選択」にして、例のwin7.vmdkを指定します。

f:id:nkkaki:20160214184610p:plain

これで無事起動しました。

いちばん大変だったのはディスクの空き領域を確保することでしたね。

sublime text で 全角スペースだけ目立たせる

 

最近sublime textを使い始めました。

よく泣かされるのが全角スペース。

おすすめパッケージによく紹介されている TralingSpaces もちろんインストールしました。

 

しかし、末尾のスペースもハイライト表示されてしまう。

末尾というか改行したたけの空行なのに先頭にスペースが埋まっているとハイライト。

 

これでは全角スペース混入を視覚的に見分けるのが困難...

 

そこで正規表現をいろいろためしてみました。

[Preference][PackageSetting] → [TrailingSpaces] → [Setting - User]

での設定例です。

 

その1 ”全|[半\t]+”

{
  "trailing_spaces_regexp": " |[ \t]+" //全角スペースまたは半角スペースかタブの連続
}

f:id:nkkaki:20150513034455p:plain

 

その2 ”全|[半]+”

{
  "trailing_spaces_regexp": " |[ ]+" //全角スペースまたは半角スペースの連続(タブは除外)
}

f:id:nkkaki:20150513034531p:plain

 

その3 ”全|[半]”

{
  "trailing_spaces_regexp": " |[ ]" //全角スペースまたは半角スペースの最後1文字
}

f:id:nkkaki:20150513034558p:plain

 

その4 ”全|”

{
  "trailing_spaces_regexp": " |" //全角スペースのみ
}

f:id:nkkaki:20150513034616p:plain

 

おまけ ”[全]+|”

{
  "trailing_spaces_regexp": "[ ]+|" //全角スペースのかたまり
}

f:id:nkkaki:20150513034629p:plain

 

 

ということで

"trailing_spaces_regexp": " |" //全角スペースのみ

の設定で使います!