Fedora20に、Python3.4によるvirtualenvwrapperでデータ分析環境を構築する。

Fedora20にPython3.4をインストールし、virtualenvwrapper環境を構築します。 その後、virtualenv環境に分析系ライブラリを入れてみます。 メモし忘れたので、覚えている範囲で。 あくまで自分が試したことであり、ベストプラクティスではないのであしからず。

Python3.4のインストール

cd /usr/local/src

# 必要なパッケージをインストール
sudo yum -y install zlib-devel openssl openssl-devel readline-devel \
ncurses-devel sqlite-devel expat-devel bzip2-devel \
tcl-devel tk-devel gdbm-devel

# 最新安定版をダウンロード・展開
wget https://www.python.org/ftp/python/3.4.2/Python-3.4.2.tgz
tar zxvf Python-3.4.2.tgz

# ビルド&インストール。prefixはおこのみで。
# 既存のpythonと分けるため、make install ではなくaltinstall を行う
cd Python-3.4.1
./configure --prefix=/usr/local/python-3.4 --with-ssl
make
sudo make altinstall

—with-sslがないと、後々get pipするときにエラーが起きました。

Python3.4がインストールできたので、PATHを追加しましょう。 zshを使っているので、.zshrcに以下を記述。

export PATH=/usr/local/python-3.4/bin:$PATH
source .zshrc

Pythonがきちんと入っているか確認しましょう。

> python3.4 -V
Python 3.4.2 

OK.

pip のインストール

pipを入れる前に、一般ユーザのパスをroot ユーザのパスに引き継ぎ、 python3.4をrootで実行できるようにしましょう。

sudo visudo

で/etc/sudoersを編集し、

 - Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin - See more at: http://3.1415.jp/pemvzrla#sthash.AbDgNo3l.dpuf
 + Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin - See more at: http://3.1415.jp/pemvzrla#sthash.AbDgNo3l.dpuf
 + Defaults env_keep += "PATH"

とします。

python3.4をrootで実行できるか確認。

> sudo python3.4 -V
Python 3.4.2 

OKですね。pipをインストールしましょう。 実際はsetuptoolsをインストールしてしまったのですが、 事前に入れなくてもgetpip.pyが入れてくれるようです。

wget https://raw.github.com/pypa/pip/master/contrib/get-pip.py
sudo python3.4 get-pip.py

入ったか確認しましょう。

> which pip
/usr/local/python-3.4/bin/pip

入りました。

virtualenv & virtualenvwrapper

では、仮想環境用のライブラリをインストールしましょう。

pip install virtualenv virtualenvwrapper

virtualenvwrapperのために、.zshrcに下記設定を記述します。

if [ -f /usr/local/python-3.4/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/python-3.4/bin/python3.4
export PROJECT_HOME=$HOME/Devel
source /usr/local/python-3.4/bin/virtualenvwrapper.sh
export PIP_RESPECT_VIRTUALENV=true
fi

ここ、あんまりpython-3.4って書きたくないのですが、 いい方法が思いつかず。

.zshrcを読み込み直せば、virtualenvwrapperが使えるようになっているはず。 データ分析用の仮想環境を構築します。名前は適当にstatで。

mkvirtualenv -p `which python3.4` stat
workon stat

仮想環境ができました!

データ分析用ライブラリをインストール

ipython notebook

pip install "ipython[notebook]"

こうすれば、notebookに必要なライブラリが一気にインストールできます。

numpy & pandas

pip install numpy pandas

あまり苦労せず入るはず。

matplotlib

曲者。まずは普通にインストールしようとします。

> pip install matplotlib
Collecting matplotlib
()
REQUIRED DEPENDENCIES AND EXTENSIONS
()
png: no [pkg-config information for ‘libpng’ could not be found]
()

REQUIEDのところに、libpngが無いと言われるので、

sudo yum install -y libpng libpng-devel

をインストール。

もう一度pipでインストールすると、

> pip install matplotlib

入りました。

scipy

すんなり入る気配の無いscipy...。いったいどんなエラーが出るんだ...

pip install scipy

...すんなり入りました。すごい!

スクレイピングはpyquery

sudo yum install -y libxslt-devel libxml2-devel
pip install pyquery

となるとrequestsも外せない

pip install requests

とりあえずここまで。

参考文献

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

Pythonによるデータ分析入門 ―NumPy、pandasを使ったデータ処理

歌劇「フェドラ」/愛さずにはいられぬこの思い

歌劇「フェドラ」/愛さずにはいられぬこの思い

ggplot2の色をTeXで使うための設定を書いてみた

Keynoteパワポも持っていないので、 スライド作りには現在 TeX のBeamerを使っているわけです。

ggplot2で書いたグラフを張り付ける際には、その他の図形の色もなるべくggplot2の色の範囲におさめたくなります

[R] ggplot2の色をプレゼンでも使いたい

なるほど! ということでこちらの記事に書かれているRGB情報を使って、 TeXでも使えるように自前の色設定を書いてみました。

Defining default colors in ggplot2 for TeX

これを使うと、以下のようにしてggplot2のカラーがBeamerの文字などに使えます。 上がBeamerで書いた色付き文字で、下がRのggplot2で描いたグラフです。 『ggred3』などの部分は僕が勝手に付けた名前なので、お好きに変更してください。 ネーミング難しいです。

実際に使ってみると、文字に使うにはちょっと明るすぎる気がしますね…...

  \textcolor{ggred3}{A}
  \textcolor{gggrn3}{B}
  \textcolor{ggblu3}{C}

f:id:ksmzn:20141227210937p:plain

  \textcolor{ggred5}{A}
  \textcolor{ggygr5}{B}
  \textcolor{gggrn5}{C}
  \textcolor{ggblu5}{D}
  \textcolor{ggpur5}{E}

f:id:ksmzn:20141227210952p:plain

  \textcolor{ggred10}{A}
  \textcolor{ggbrn10}{B}
  \textcolor{ggygr10}{C}
  \textcolor{gggrn10}{D}
  \textcolor{gglgr10}{E}
  \textcolor{gglbl10}{F}
  \textcolor{ggblu10}{G}
  \textcolor{gglpe10}{H}
  \textcolor{ggpur10}{I}
  \textcolor{ggpnk10}{J}

f:id:ksmzn:20141227211001p:plain

[改訂第6版] LaTeX2ε美文書作成入門

[改訂第6版] LaTeX2ε美文書作成入門

BMWER(ビマー)Vol.23 (NEKO MOOK)

BMWER(ビマー)Vol.23 (NEKO MOOK)

ジャスティン・ビーバー ネヴァー・セイ・ネヴァー ディレクターズ・カット [DVD]

ジャスティン・ビーバー ネヴァー・セイ・ネヴァー ディレクターズ・カット [DVD]

Shinyで確率分布を動かして遊べるページ作った

確率分布ってたくさんあるので、統計を学びたてのうちはよくわからないですよね。 パラメータによって確率分布のカタチも変わってしまうし、 似たような種類が多くて混乱してしまいます。

そこで、R言語のWebフレームワークであるShinyを使って、 確率分布のパラメータをいじってカタチを見ることができる ページを作りました。

いろいろな確率分布のパラメータをいじくるアプリ

ネーミングセンスがありません。助けてください。。。

ご指摘や、追加すべき確率分布などがありましたらTwitterで教えてくださると助かります。 また、全てのコードはGitHubにもおいてありますので、拙いコードでよろしければ参考にしてください。

使い方

カンタンです。上部メニューから確率分布を選びクリック。 パラメータをいろいろ変えるとそれに応じてグラフも変化します。 分布関数と密度関数を切り替えることも可能です。

改善点

グラフ描画にはggplot2を使いました。 が、ここはやはりインタラクティブなグラフが欲しいので、 時間があれば、D3.jsやライブラリなどを使って直したいと思います。

また、掲載している確率分布も増やしていきたいですね。

Shinyを使ってみた感想

決められたレイアウトでやるならば、とてもカンタンな印象を受けました。 データ分析に関するシンプルな単機能のページを作るなら、うってつけです。 一方、ちょっとレイアウトを変えたかったり、ソーシャルボタンをつけようと思うと、 少し手間取ってしまいました。Githubで他の人のコードを読んだり試行錯誤をすると、意外に単純に書けることに気が付きましたが、このあたりは文献が充実してくるまでは仕方ないかもしれません。 例えば、上部メニューにGitHubやブログなどのリンクを貼ろうとしたのですが、メニュー部に外部へのリンクを貼ることはできないようで、結局JavaScriptで強引に解決しました。 やはりWebアプリですから、Rだけでなく多少はJavaScriptを使ったほうが良いかと思います。

Shinyアプリを作る上で参考になったページ

このアプリを作る際に参考にしたページは以下です。 特に、まだまだShinyの日本語情報が少ないなか、 @hoxo_mさんの記事やコードはとても参考になりました。 @hoxo_mさん、ありがとうございました。