2016年7月22日金曜日

Graphviz/PyGraphvizのインストール

前々から使ってみたいとは思っていました。

調べてみたら以外にインストールのハードル自体は低そうなので、サクっと入れてみました。
brewとpip3を用いてインストールできるようです。
brewについてはbrew searchを実行してたくさん吐き出されるリストの中にgraphvizが確かにあることを自分で確認してみましょう。

環境は以下の通り。

  • El'Captan(10.11.5)
  • Homebrewはインストール済み

Graphvizのインストール

hiroshi-no-MacBook-Air:~ hiroshi$ sudo brew install graphvi

と実行するだけです。例のごとく自分のPCのパスワードを求められるので、パスワードを入力すれば、次のような処理がはしります。それほど長くない処理。
==> Downloading https://homebrew.bintray.com/bottles/graphviz-2.38.0.el_capitan.bottle.1.tar.gz
######################################################################## 100.0%
==> Pouring graphviz-2.38.0.el_capitan.bottle.1.tar.gz
🍺  /usr/local/Cellar/graphviz/2.38.0: 469 files, 67M

Graphvizのインストール自体はこれだけ。
PyGraphvizのインストール、と先へ進む前に、Graphvizのインストールがきちんとできているか確認します。

テキストファイルに次のように記述して、Sample.dotというように拡張子をdotにして保存します。

#####以下のように記述し、dotという拡張子で保存
graph g{
    "Hello World"
    }

でSample.dotという、今保存したファイルが保存してあるディレクトリへカレントディレクトリを移し、そこで次のようなコマンドを実行します。

######Sample.svgというファイルで出力する場合
hiroshi-no-MacBook-Air:Pro-tr hiroshi$ dot -Tsvg Sample.dot -o Sample.svg

そうするとSample.dotが保存されているディレクトリと同じディレクトリにSample.svgとファイルが生成されます。
それをブラウザで開けば、次のようなものが表示されます。

注意)紛らわしいけど、上に貼り付けてある画像はSVGファイルをブラウザで開いたものをスクリーンショットで撮影したpng画像です!BloggerだとSVGファイルは挿入できないらしい。



PyGraphvizのインストール

pip3を入れているので、以下のようにコマンドを打つだけで完了です。
hiroshi-no-MacBook-Air:Pro-tr hiroshi$ sudo pip3 install pygraphviz

例のごとく自分のPCのパスワードを入れると次のような処理が進み(すぐ終わります)、完了です。

The directory '/Users/hiroshi/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
You are using pip version 7.1.0, however version 8.1.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
The directory '/Users/hiroshi/Library/Caches/pip/http' or its parent directory is not owned by the current user and the cache has been disabled. Please check the permissions and owner of that directory. If executing pip with sudo, you may want sudo's -H flag.
Collecting pygraphviz
  Downloading pygraphviz-1.3.1.zip (123kB)
    100% |████████████████████████████████| 126kB 2.0MB/s 
Building wheels for collected packages: pygraphviz
  Running setup.py bdist_wheel for pygraphviz
  Stored in directory: /Users/hiroshi/Library/Caches/pip/wheels/81/03/ed/eb3b7ef51ee6527abfaf2701e222e74107b97344cfa2201881
Successfully built pygraphviz
Installing collected packages: pygraphviz
Successfully installed pygraphviz-1.3.1

確認作業は、

hiroshi-no-MacBook-Air:Pro-tr hiroshi$ python3    #python3と打ってrerurnを押す。
Python 3.4.3 (default, Aug 11 2015, 08:57:25) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import pygraphviz       #import pygraphvizと打ってreturn
>>> 

としてエラーがでなければOK。

2016年7月10日日曜日

シグモイド関数の描画

gnuplotもインストールしたし、matplotlibも使える状態だしということで、なんだかんだ可視化やグラフ描画をするツールは割りと揃ってきた。。

それぞれ、ツールの使い方の勉強という意味含め、ニューラルネットなどででてくるのシグモイド関数の振る舞いをイメージしておきたいなども理由もあるので、シグモイド関数を描画してみようと思い描画してみた。。

gnuplotでの描画

gnuplotでもfor文が使えるらしいのでそれを使う。

ターミナルを起動して、gnuplotを起動する。
hiroshi-no-MacBook-Air:Pro-tr hiroshi$ gnuplot     #gnuplotと打ち込んでreturnを押す
起動したら次のように打ちます。
gnuplot> set yrange[0:1]       #見栄えを良くするための設定。y軸方向の描画範囲の指定。
gnuplot> plot for [i=0:10] 1/(1+exp(-i*x/10))
これを実行すると、次のような図が表示される。




gnuplotを起動したときに、毎回表示されるバージョンを確認しよう。
どうやら、plot forという書き方はバージョン4.4からの機能のようだ。
(参考:明日できること)

matplotlibでの描画

matplotlibでは次のように描画する。

matplotlibとscipyがインストールできていることは前提。 インストールできていない場合はまずこちらから。
Macでpython3の環境構築9---Scipyのインストール---
Macでpython3の環境構築4---Matplotlibのインストール1---
from matplotlib import pyplot as plt
import scipy as sp

x=sp.arange(-10,10,0.1)
for t in range(10):        #必要なグラフは先にすべて生成する。
  y=1/(1+sp.exp(-(2*t*x/10)))
  plt.plot(x,y)         


plt.show()   #最後にまとめて描画すると重ねて表示される。
matplotlibの使い方の説明にもなってしまうが、グラフを重ねて描画するときは、先にplt.plot()、plt.plot()という感じで必要なグラフをすべて生成して、最後にplt.show()をして最後に描画する。

上記を例えば、テキストファイルに書き、sigmoid.pyという名前で保存。sigmoid.pyがあるカレントディレクトリに移動して、
hiroshi-no-MacBook-Air:Pro-tr hiroshi$ python3 sigmoid.py
とコマンドを打って実行すると、次のような画面が出てくる。



for文のところで、あまり数を刻みすぎてしまうと、グラフが表示されたときよくわからない表示になってしまうので、適当に間引いて描画したほうがそれらしくみえる。

参考にしたページや文献・書籍
明日できること
シグモイド関数---wiki