Saturday, October 01, 2016

macOS Sierra で DataSience 分析環境を作る Homebrew利用

目的

Python 3系, (Python 2系), R, Scala, Java(JDK), Apache Spark を導入する
 IDE( integrated development environment )として
・Jupyter notebook
・Rtudio

Macでは、 pythonは標準で 以下にンストールされてますが
/usr/bin/python /System/Library/Frameworks/Python.framework
これはApple が管理しているものですので。 Data Scienceで利用する場合は独自にインストールした方が良いです Homebrewを使ってインストールします。
 最近では3系をインストールした方が良いでしょう。
すでに開発している人はpython2系が必要でしょう
ここでは、共存は しないでpytho3系だけとする
python3系は Apache Sparkで pyspark が2系ですのでそれを使う

準備

Xcode と コマンドライン・デベロッパ・ツールをインストール
App Store から Xcordeをインストール
Xcordを立ち上げる、ライセンス認証をする
立ち上がったら、メニューから
[Xcord ] > [ Open Developer Tool ]> [ More Developer Tool…]  を選ぶ
Apple Developer ログインページが開くのでSign In すると
Downloads for Apple Developers ページが開く
Xcodeと同じバージョンの Command Line Tools を選んでダウンロード、インストール


裏技
$ git ―version

 コマンドライン・デベロッパ・ツールを導入するダイアログが出るので
インストールする [インストール]を選ぶ

[Xcodeを入手]はここでは選ばないrewで
Xcodeは App Storeからインストールして、一度開いてライセンス認証をしておく

コマンドライン・デベロッパ・ツールだけでも良いと思うのだけど、HomebrewでXcodeがないと
インストールできないものがある。
HomebrewはXcodeとコマンドライン・デベロッパ・ツールインストール導入が前提になっている

Homebrew をインストールする

/usr/local/ ディレクトリのパーミションを変更する
変更前
drwxr-xr-x     2 root  wheel     68  7 31 05:49 local
変更後
drwxr-xr-x     2 username  admin     68  7 31 05:49 local
つまりパーミションを所有者をログインユーザー グループをadminにする

$ sudo chown -R $(whoami):admin /usr/local

$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

$ brew doctor  # homebrewの診断

Your system is ready to brew.

XQuartz のインストール

# Rで描画のために XQuartzが必要なので、以下からダウンロード・インストール
https://www.xquartz.org

Javaのインストール

$ brew tap caskroom/cask
$ brew install brew-cask
$ brew cask install java
# 確認
$ java -version
java version "1.8.0_102"
Java(TM) SE Runtime Environment (build 1.8.0_102-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.102-b14, mixed mode)
$ which java
/usr/bin/java

Rのインストール

$ brew tap homebrew/science
$ brew install R
# 確認
$ which R
/usr/local/bin/R

Quartzが立ち上がり描画すれば成功 

$ R

 Rの終了は q()
 Save workspace image? [y/n/c]: n 作業を保存するかしないか

RStudio インストール R IDE
RStudioホームページ  https://www.rstudio.com/
RStudio Desktop ダウンロードページ 
Open Source Editionで十分 MacOSX 10.6+ を選んでダウンロード・インストール

アプリケーションホルダーのRStudioを開く これで使えます

 Macの場合 ホームホルダー直下に ..Rprofileを置くことで描画文字化けが防げます https://gist.github.com/amano41/4173965 からダウンロードします
ページの右上4〜5行目にある [ Download ZIP ] ボタンを押します
ダウンロードした Rprofile.Rをホームホルダーに移動します

$ cd ~
$ mv Rprofile .Rprofile

Python3 インストール  pip3含まれる
$ brew install python3

Data science 環境パッケージインストール
# numpyにscipyが依存しているので順番が重要です
$ pip3 install numpy
$ pip3 install scipy
$ pip3 install pandas
$ pip3 install matplotlib
$ pip3 install statsmodels
$ pip3 install scikit-learn
$ pip3 install pymc
$ pip3 install jupyter

パッケージインストール・テスト
$ ipython --pylab
In [1]: import numpy
In [2]: import scipy
In [3]: import pandas
In [4]: x = randn(1000)
In [5]: hist(x,100)
これでヒストグラムが描画できればOK
終了は  exit()

ここまでにインストールされたパッケージ
$ pip3 list
appnope (0.1.0)
cycler (0.10.0)
decorator (4.0.10)
entrypoints (0.2.2)
ipykernel (4.5.0)
ipython (5.1.0)
ipython-genutils (0.1.0)
ipywidgets (5.2.2)
Jinja2 (2.8)
jsonschema (2.5.1)
jupyter (1.0.0)
jupyter-client (4.4.0)
jupyter-console (5.0.0)
jupyter-core (4.2.0)
MarkupSafe (0.23)
matplotlib (1.5.3)
mistune (0.7.3)
nbconvert (4.2.0)
nbformat (4.1.0)
notebook (4.2.3)
numpy (1.11.1)
pandas (0.18.1)
patsy (0.4.1)
pexpect (4.2.1)
pickleshare (0.7.4)
pip (8.1.2)
prompt-toolkit (1.0.7)
ptyprocess (0.5.1)
Pygments (2.1.3)
pymc (2.3.6)
pyparsing (2.1.9)
python-dateutil (2.5.3)
pytz (2016.6.1)
pyzmq (15.4.0)
qtconsole (4.2.1)
scikit-learn (0.18)
scipy (0.18.1)
setuptools (25.2.0)
simplegeneric (0.8.1)
six (1.10.0)
statsmodels (0.6.1)
terminado (0.6)
tornado (4.4.2)
traitlets (4.3.1)
wcwidth (0.1.7)
wheel (0.29.0)
widgetsnbextension (1.2.6)


パッケージの概要説明
Numpy  Pythonで科学計算を行うための拡張モジュール 多次元配列,行列 演算処理
>Scipy NumPy base 科学技術計算用の統計関数、画像、信号処理などのライブラリ
Matplotlib 2次元のグラフ描画用のモジュールで、Ipythonとの組み合わせで
Pandas  パフォーマンスに優れたデータ分析モジュールで、 時系列データ得意
jupyter  $ jupiter notebook とすると、ブラウザーが上がりIDEとして利用できる
ipython  jupyterによってインストールされた ほかんが出来る拡張シェル
Statsmodels  統計解析パッケージ
scikit-learn 機械学習ライブラリで、分類や回帰、クラスタリング評価尺度等
PyMC    Pythonのベイズ統計用ライブラリです 特にMCMCに重点を置いています


パッケージ テスト
$ ipython --pylab
In [1]: import numpy
In [2]: import scipy
In [3]: import pandas
In [4]: x = randn(1000)
In [5]: hist(x,100)

ヒストグラムが描画できれば OK
 python の終了は  exit()

日本語形態素解析 Tool MeCabをインストール


システムに MeCabと辞書をインストルする
$ brew install mecab
$ brew install mecab-ipadic

Taminalでテスト ---------------------------
 $ mecab
今日も元気で食事がうまい
今日 名詞,副詞可能,*,*,*,*,今日,キョウ,キョー
助詞,係助詞,*,*,*,*,も,モ,モ
元気 名詞,形容動詞語幹,*,*,*,*,元気,ゲンキ,ゲンキ
助動詞,*,*,*,特殊・ダ,連用形,だ,デ,デ
食事 名詞,サ変接続,*,*,*,*,食事,ショクジ,ショクジ
助詞,格助詞,一般,*,*,*,が,ガ,ガ
うまい 形容詞,自立,*,*,形容詞・アウオ段,基本形,うまい,ウマイ,ウマイ
EOS

RでMeCabを使う RMeCab
パッケージRMeCabをインストールする
$ R
install.packages("RMeCab", repos = "http://rmecab.jp/R")
library(RMeCab)
result<- p="" rmecabc="">unlist(result)
    名詞     助詞     名詞   助動詞     名詞     助詞   形容詞
  "今日"     "も"   "元気"     "で"   "食事"     "が" "うまい" 抜けるには 

control + d

pythonでMeCabを使う
mecab-python3をpython3環境にインストール

$ pip install mecab-python3

python3でも構わないのだけど、ipython やっている、コードは同じ
$ ipython --pylab

In [1]: import MeCab
In [2]: text = "豊洲市場の築地移転はどうなるのか?"
In [3]: t = MeCab.Tagger("-Ochasen")
In [4]: result = t.parse(text)
In [5]: print(result)
豊洲 トヨス 豊洲 名詞-固有名詞-人名-姓
市場 シジョウ 市場 名詞-一般
助詞-連体化
築地 ツキジ 築地 名詞-固有名詞-地域-一般
移転 イテン 移転 名詞-サ変接続
助詞-係助詞
どう ドウ どう 副詞-助詞類接続
なる ナル なる 動詞-自立 五段・ラ行 基本形
名詞-非自立-一般
助詞-副助詞/並立助詞/終助詞
記号-一般
EOS

Apache Sparkの導入

Sparkは

  • 分散処理のフレームワークでHadoopの後継といわれています。
  • インメモリ処理による高速化
  • 言語サポートの広さ、Java,Scala,python,Rが使える
  • 一台から始められる


Apache Spark インストール
Apache SparkはScalaをインストールしなくとも良いが学習のためインストルする
sbtはScalaの開発ツール

$ brew install scala
$ brew install apache-spark
$ brew install sbt

/usr/local/bin/ 以下にシンボリックリンクがあるので PATHは通っています。
Apache sparkは開発言語別に以下が用意されています。

  • spark-shell   Scala
  • pyspark       python
  • sparkR         R