ディープラーニングのサンプルコード

メモ。ゼロから作るDeep Learningの本用のサンプルコードは、Githubで公開されてます。これは、Githubの公開リポジトリなのでブログに書いても大丈夫なやつなはずなのでメモ。

oreilly-japan/deep-learning-from-scratch

Python – 有名なWEBフレームワーク

WEBフレームワーク

Django
超有名。結構でっかい。何でもできる。API作成の便利ツールとかもある。

Flask
有名。Djangoの次に使われている模様。非常に軽量。必要十分っぽい。

Tornado
フレームワークだけではなく、高機能なWEBサーバもついているらしい。

Falcon
Web APIつくるのに最適なフレームワーク。超早いらしい。その代りViewの機能ない。

EVE
すごく簡単にWeb APIが作成できるらしい。開発すらあんまり必要ないらしいけど、どういうことか今度調べる。

Bottle
ものすごくシンプルなフレームワーク。ファイル1個しかないらしい。学習用に使うイメージ。

その他、WEBフレームワークは、沢山あった。
Web Frameworks for Python

WEBサーバー

Gunicorn
UNIX用のWEBサーバー。何がいいのかこれから調べる。Falconはこれを推奨しているらしい。Nginxと組み合わせて使ったりするらしい。

とりあえず、FalconとサイトつくるときはFlaskを使おうかなと思った。サーバは、Nginxだけど、Gunicornというのも調べて使った方がよさそうだったら使おうと思いました。

Python x TensorFLow – 最小二乗法

1次関数から試してみます。最小二乗法は、誤差を2乗した合計が小さくなるようにすることで、最もらしい関数を発見する方法です。1次関数でデータを10個つくって、作り出した関数を知らない前提で、機械に関数を発見してもらいます。

1次関数でやってみる

1次関数は下記でやってみます。
y = 3x * 5

トレーニングセット作成

データを10個つくります。xは、0,1,2,3,4,5,6,7,8,9です。Pythonでつくります。

[5, 8, 11, 14, 17, 20, 23, 26, 29, 32]

これはグラフにすると下記になります。

plot

TensorFlowでやってみる

モデルは、1次関数とします。パラメタは2つあります。誤差関数は、二乗誤差を使います。TensorFlowでやってみます。

Step: 10000, Loss: 0.556078
Step: 20000, Loss: 0.000000
Step: 30000, Loss: 0.000000
Step: 40000, Loss: 0.000000
Step: 50000, Loss: 0.000000
Step: 60000, Loss: 0.000000
Step: 70000, Loss: 0.000000
Step: 80000, Loss: 0.000000
Step: 90000, Loss: 0.000000
Step: 100000, Loss: 0.000000
[[ 5.]
[ 3.]]

plot2

1000刻みでLoss値を見てみる

20000回ですでに完璧に誤差がなくなっておりまして、きちんと正しい一次関数を発見しました。せっかくなので、1000刻みで見てみようと思います。

Step: 1000, Loss: 2144.477539
[[ 0.93216914]
[ 0.93001837]]
Step: 2000, Loss: 946.874451
[[ 1.73305488]
[ 1.72308087]]
Step: 3000, Loss: 324.689636
[[ 2.4027319 ]
[ 2.37532687]]
Step: 4000, Loss: 74.941284
[[ 2.92346025]
[ 2.85973501]]
Step: 5000, Loss: 13.527188
[[ 3.27773309]
[ 3.14026999]]
Step: 6000, Loss: 6.525241
[[ 3.50095201]
[ 3.2282424 ]]
Step: 7000, Loss: 4.923757
[[ 3.69913244]
[ 3.2147882 ]]
Step: 8000, Loss: 3.215882
[[ 3.94896293]
[ 3.17392874]]
Step: 9000, Loss: 1.630160
[[ 4.25151825]
[ 3.1236279 ]]
Step: 10000, Loss: 0.556078
[[ 4.56274843]
[ 3.07208133]]
Step: 11000, Loss: 0.099951
[[ 4.81459618]
[ 3.03052568]]
Step: 12000, Loss: 0.006101
[[ 4.95419312]
[ 3.00753903]]
Step: 13000, Loss: 0.000059
[[ 4.9954896 ]
[ 3.00074267]]
Step: 14000, Loss: 0.000000
[[ 4.99989605]
[ 3.00001764]]
Step: 15000, Loss: 0.000000
[[ 4.99996567]
[ 3.00000596]]
Step: 16000, Loss: 0.000000
[[ 4.9999795 ]
[ 3.00000358]]
Step: 17000, Loss: 0.000000
[[ 4.9999876 ]
[ 3.00000215]]
Step: 18000, Loss: 0.000000
[[ 4.99999428]
[ 3.00000095]]
Step: 19000, Loss: 0.000000
[[ 4.99999619]
[ 3.00000072]]
Step: 20000, Loss: 0.000000
[[ 4.99999857]
[ 3.00000024]]

頭よくなっていく過程が分かります。しかし、1次関数かどうかは実際には分からないので、1次~10次までを確認して、一番いい感じのやつを発見するようなプログラムにするといいのではないかと思いました。あと、トレーニングセットとテストセットとかいうらしいですが、最初の学習データとは別のテストデータも必要になります。理由は過学習してしまう可能性があるからです。例えば10個のデータであれば9次関数をつくると確実に10個のデータを再現できる関数になります。しかしこれは過学習しており、11個目のデータがあったときに全然めちゃくちゃになってしまいます。

誤差つきの4次関数でやってみる

では次に4次関数でやってみます。また、実際のデータっぽく誤差をいれてみます。ソースコードきたないですが、実験なのでお許しください。

param_cntは、モデル式のパラメタの最大数です。11と入れると、10次関数まで調べます。3だと2次関数まで調べます。do_cntは、学習回数です。chk_cntは、何回ごとにloss値を出力させるか、です。4次関数にnp.random.normalで正規分布の誤差をいれています。平均0で、標準偏差3の正規分布の誤差ということになるそうです。

1次関数:
Step: 5000, Loss: 215542.093750
[[ 4.95924044]
[ 3.95200872]]
Step: 10000, Loss: 203412.828125
[[ 9.88683128]
[ 5.01568365]]
Step: 15000, Loss: 192418.406250
[[ 14.8010807]
[ 5.1672349]]
Step: 20000, Loss: 182398.625000
[[ 19.70719528]
[ 5.31404638]]
2次関数:
Step: 5000, Loss: 68691.289062
[[ 4.37834597]
[ 4.78828716]
[ 4.51071978]]
Step: 10000, Loss: 19349.113281
[[ 6.14278746]
[ 9.20509338]
[ 8.05002975]]
Step: 15000, Loss: 14812.129883
[[ 0.76773846]
[ 11.64998531]
[ 9.2823782 ]]
Step: 20000, Loss: 13354.574219
[[ -4.00546932]
[ 11.78009605]
[ 9.61374664]]
3次関数:
Step: 5000, Loss: 67975.859375
[[ 4.38982058]
[ 4.47143745]
[ 4.52593517]
[ 0.12835987]]
Step: 10000, Loss: 18511.107422
[[ 6.25019884]
[ 7.83472824]
[ 8.12683201]
[ 0.19194219]]
Step: 15000, Loss: 14246.777344
[[ 0.85353625]
[ 7.43424273]
[ 9.42072201]
[ 0.286881 ]]
Step: 20000, Loss: 12680.401367
[[-3.94125748]
[ 7.13879824]
[ 9.76669121]
[ 0.31357336]]
4次関数:
Step: 5000, Loss: 116.987244
[[ 1.75886464]
[ 0.82387865]
[ 0.73796004]
[ 0.90688848]
[ 0.49740523]]
Step: 10000, Loss: 21.997097
[[ 4.06656361]
[ 1.1654942 ]
[ 0.78540492]
[ 0.88064975]
[ 0.48745832]]
Step: 15000, Loss: 16.351856
[[ 5.03755283]
[ 1.10082293]
[ 0.56437576]
[ 0.88661832]
[ 0.49617034]]
Step: 20000, Loss: 16.351896
[[ 5.03769445]
[ 1.10081434]
[ 0.56434351]
[ 0.8866201 ]
[ 0.4961707 ]]
5次関数:
Step: 5000, Loss: 119.090012
[[ 1.74797881e+00]
[ 1.08122551e+00]
[ 7.19700754e-01]
[ 8.64906728e-01]
[ 4.98723030e-01]
[ 1.43910421e-03]]
Step: 10000, Loss: 22.015015
[[ 4.06811666e+00]
[ 1.07059586e+00]
[ 7.93005526e-01]
[ 8.97920549e-01]
[ 4.86883730e-01]
[ -6.27588655e-04]]
Step: 15000, Loss: 16.261492
[[ 5.05882359e+00]
[ 1.18433976e+00]
[ 5.52112699e-01]
[ 8.70472431e-01]
[ 4.96929288e-01]
[ 5.98916959e-04]]
Step: 20000, Loss: 16.260433
[[ 5.05913115e+00]
[ 1.18449724e+00]
[ 5.52029669e-01]
[ 8.70452166e-01]
[ 4.96929288e-01]
[ 6.06292742e-04]]
6次関数:
Step: 5000, Loss: 53.637337
[[ 2.38433266e+00]
[ 1.57903039e+00]
[ 1.11886275e+00]
[ 8.11793208e-01]
[ 4.61589992e-01]
[ 2.50088377e-03]
[ 6.97513111e-04]]
Step: 10000, Loss: 18.967039
[[ 4.32346010e+00]
[ 1.32767844e+00]
[ 9.70935225e-01]
[ 8.36955488e-01]
[ 4.52258199e-01]
[ 2.08282284e-03]
[ 1.26212556e-03]]
Step: 15000, Loss: 16.296326
[[ 4.93837500e+00]
[ 1.22425616e+00]
[ 6.37905777e-01]
[ 8.61216605e-01]
[ 4.87015426e-01]
[ 1.01356197e-03]
[ 2.91907112e-04]]
Step: 20000, Loss: 16.242428
[[ 5.01489973e+00]
[ 1.20275176e+00]
[ 5.88385046e-01]
[ 8.65994036e-01]
[ 4.92458344e-01]
[ 8.08077923e-04]
[ 1.36406394e-04]]
7次関数:
Step: 5000, Loss: 89.665520
[[ 2.32143140e+00]
[ 1.53826487e+00]
[ 1.07825494e+00]
[ 6.85688794e-01]
[ 4.76195693e-01]
[ 1.93343945e-02]
[ -2.91685792e-05]
[ -4.58549795e-04]]
Step: 10000, Loss: 20.448008
[[ 4.28025007e+00]
[ 1.64763474e+00]
[ 1.00642896e+00]
[ 7.50945508e-01]
[ 4.48578656e-01]
[ 8.27948842e-03]
[ 1.35072204e-03]
[ -1.31144610e-04]]
Step: 15000, Loss: 17.463367
[[ 4.70802307e+00]
[ 1.52105701e+00]
[ 7.85070360e-01]
[ 7.84407139e-01]
[ 4.71286625e-01]
[ 6.25595590e-03]
[ 7.26952916e-04]
[ -1.02008424e-04]]
Step: 20000, Loss: 16.643923
[[ 4.87714958e+00]
[ 1.42680812e+00]
[ 6.72681332e-01]
[ 8.05022180e-01]
[ 4.83814031e-01]
[ 5.21623669e-03]
[ 3.65617452e-04]
[ -9.24795459e-05]]
8次関数:
Step: 5000, Loss: 131.079254
[[ 2.88559628e+00]
[ 1.24204707e+00]
[ 1.10422873e+00]
[ 3.27726752e-01]
[ 2.82681823e-01]
[ 7.58507699e-02]
[ 2.27710828e-02]
[ -2.43731448e-03]
[ -6.57664554e-04]]
Step: 10000, Loss: 28.809479
[[ 4.29814291e+00]
[ 2.01223731e+00]
[ 1.31598830e+00]
[ 3.96377593e-01]
[ 3.03849131e-01]
[ 5.24885505e-02]
[ 1.58709679e-02]
[ -1.51652610e-03]
[ -4.02022008e-04]]
Step: 15000, Loss: 347.819122
[[ 4.51162624e+00]
[ 2.24438071e+00]
[ 1.33831608e+00]
[ 4.33518320e-01]
[ 3.07972670e-01]
[ 4.39823009e-02]
[ 1.46628506e-02]
[ -1.24611927e-03]
[ -3.21475236e-04]]
Step: 20000, Loss: 22.053818
[[ 4.52574492e+00]
[ 2.27882338e+00]
[ 1.34143877e+00]
[ 4.55701292e-01]
[ 3.11556101e-01]
[ 4.05396298e-02]
[ 1.40584493e-02]
[ -1.09993061e-03]
[ -3.34182230e-04]]
9次関数:
Step: 5000, Loss: 5552.634766
[[ 2.33792377e+00]
[ 7.79350579e-01]
[ 6.53970003e-01]
[ 2.03688577e-01]
[ 1.83490813e-01]
[ 4.28588130e-02]
[ 4.29749712e-02]
[ 3.35324835e-03]
[ -1.39146764e-03]
[ -1.60500247e-04]]
Step: 10000, Loss: 194.072403
[[ 4.08490229e+00]
[ 1.23215306e+00]
[ 9.06385481e-01]
[ 2.92194337e-01]
[ 2.03426927e-01]
[ 5.21436632e-02]
[ 3.42375599e-02]
[ 7.02911580e-04]
[ -1.01602043e-03]
[ -9.27555739e-05]]
Step: 15000, Loss: 115.676407
[[ 4.94008017e+00]
[ 1.50322270e+00]
[ 1.05627847e+00]
[ 3.42464149e-01]
[ 2.18068600e-01]
[ 5.66791482e-02]
[ 2.89440639e-02]
[ -7.18827709e-04]
[ -8.12099199e-04]
[ -3.92189686e-05]]
Step: 20000, Loss: 57.366673
[[ 5.27173281e+00]
[ 1.66980028e+00]
[ 1.15057874e+00]
[ 3.71282339e-01]
[ 2.29773715e-01]
[ 5.85983880e-02]
[ 2.56161764e-02]
[ -1.47335778e-03]
[ -6.85952662e-04]
[ -1.29779210e-05]]
10次関数:
Step: 5000, Loss: 2263.479736
[[ 1.01189530e+00]
[ 2.97042310e-01]
[ 2.68756747e-01]
[ 8.43940526e-02]
[ 8.09634402e-02]
[ 2.73650903e-02]
[ 2.04845257e-02]
[ 8.72469600e-03]
[ 2.38272268e-03]
[ -4.05140279e-04]
[ -1.13759939e-04]]
Step: 10000, Loss: 1553.578125
[[ 1.83733785e+00]
[ 4.96752053e-01]
[ 4.51538861e-01]
[ 1.11230105e-01]
[ 1.25275597e-01]
[ 2.73409784e-02]
[ 2.71124728e-02]
[ 7.42600206e-03]
[ 1.07120932e-03]
[ -3.40760889e-04]
[ -7.36084112e-05]]
Step: 15000, Loss: 860.454346
[[ 2.45131707e+00]
[ 7.04376996e-01]
[ 5.79612136e-01]
[ 1.44563615e-01]
[ 1.54916033e-01]
[ 2.92531345e-02]
[ 3.12672704e-02]
[ 6.10585557e-03]
[ 1.98022972e-04]
[ -2.84481910e-04]
[ -4.43308709e-05]]
Step: 20000, Loss: 585.964172
[[ 2.91786623e+00]
[ 9.03335571e-01]
[ 6.71693385e-01]
[ 1.79319546e-01]
[ 1.75147504e-01]
[ 3.20737772e-02]
[ 3.38761806e-02]
[ 4.85530496e-03]
[ -3.96082381e-04]
[ -2.33632789e-04]
[ -2.46588024e-05]]
6次関数
[[5.014899730682373], [1.2027517557144165], [0.5883850455284119], [0.8659940361976624], [0.4924583435058594], [0.0008080779225565493], [0.00013640639372169971]]

g7

6次関数が選ばれました。本当は違うんだけど、グラフは点をしっかり大体通ってます。テストデータで確かめると、4次関数の方がいいってなるのかもしれない。今度はテストデータで確かめたり色々してみようと思います。

Python – matplotlibの使い方

matplotlibは、pythonでグラフとかかけるやつです。インストールは、ここに説明があります。ギャラリーみるとかなり色々なグラフをかけるようです。使い方のドキュメントはここです。

グラフを書いてみる

plot()でプロットできます。引数は1つだとyだけ、2つだと、x,yの順になるみたい。ylabelとかでラベルも設定できる。show()で表示することができる。

g1

参考:matplotlib入門

numpyと一緒につかってサインコサインとか簡単にかけるらしい。

g2

np.arangeで、-3から3までを0.1間隔でつくってる。np.sin(x)とやると、xに入ってる要素に応じた結果が配列で返ってくる。1次関数を簡単に書く方法はないのでしょうか?たとえば、y = 3x + 3という数式を入れたらパッと表示されるとか。できた。numpy便利だな。

1次関数

g3

2次関数

g4

3次関数

g5

4次関数

g6

散布図

散布図は、plot(x, y, ‘o’)といった感じで、第三引数に文字いれればできる。文字はなんでもいいわけではなく、決まりがある。o(オー)だと〇とか。roとやると赤い〇になる。dとか1とかも使えた。

g7

windows10 – Pythonインストール(Anaconda)

参考:Anaconda を利用した Python のインストール (Windows)

Anaconda は、Continuum Analytics 社によって提供されている、Python 本体に加え、科学技術、数学、エンジニアリング、データ分析など、よく利用される Python パッケージ(2016 年 2 月時点で 400 以上)を一括でインストール可能にしたパッケージです。面倒なセットアップ作業が効率よく行えるため、Python 開発者の間で広く利用されています。なお、Anaconda は商用目的にも利用可能です。

https://www.continuum.io/why-anaconda

windowsにpythonインストールするのは結構大変らしいのですが、anaconda使えば超簡単ということです。windowsの64bitのやつをダウンロードしております。全部で353MBあります。インストールが完了しました。

phpStormのpythonバージョンのやつを使ってみることにします。
https://www.jetbrains.com/pycharm/

Python – NumPyで画像を配列として取得する

(533, 800) uint8
[[156 159 162 …, 135 132 130]
[156 155 155 …, 133 132 133]
[155 153 155 …, 134 133 131]
…,
[ 87 88 85 …, 71 71 70]
[ 86 87 87 …, 70 72 73]
[ 89 95 95 …, 74 73 73]]

と表示される。最初の行のタプルは、(行数、列数、色数)を表してる。上記はグレースケールに変換しており、その場合は、色数は表示されない。uint8は、要素のデータ型。通常、画像は符号なし8ビット整数で符号化されるらしい。im自体を出力したら上記のような配列が表示された。

これだとグレースケール変換していないので、下記のように色数も表示される。赤、緑、青という並びなんだろうか。
(533, 800, 3) uint8

これだと、色が3色があるので、配列は下記のようになっている。

[[[150 156 178]
[153 159 181]
[154 162 183]
…,
[121 137 163]
[119 134 163]
[116 131 162]]

[[148 156 177]
[149 155 177]
[149 155 177]
…,
[119 135 161]
[118 134 160]
[119 134 165]]

[[147 155 176]
[147 153 175]
[149 155 177]
…,
[120 136 162]
[119 135 161]
[118 132 167]]

…,
[[ 88 88 86]
[ 88 89 84]
[ 86 86 84]
…,
[ 72 71 76]
[ 72 71 76]
[ 71 70 75]]

[[ 87 87 85]
[ 87 88 83]
[ 88 88 86]
…,
[ 69 70 74]
[ 71 72 76]
[ 72 73 77]]

[[ 91 90 86]
[ 97 96 92]
[ 96 95 93]
…,
[ 73 74 78]
[ 72 73 77]
[ 72 73 77]]]

色を反転させて保存する

これはhtmlでつかってる0-255の数字と一緒であります。各数値を255から引くことで色を反転させることができます。

下記のようになりました。

img2

配列から画像を作ってみる

下記のようにすると、白から黒に向けたグラデーションになる。[赤、緑、青]なので、赤を全部0にすると、青緑の薄いから濃いのグラデーションになる。

img2.jpg
img2

img3.jpg
img3

Python3 – Pillowの使い方

参考:Python3.3対応画像処理ライブラリ Pillow(PIL) の使い方

python – wheel

Python Wheels
http://pythonwheels.com/

パッケージの形態っぽい。昔はEggというのが主流の形態でしたが、古くなったのでwheelに変わったらしい。wheelパッケージのインストール方法を知りたい。あとpipというのはyumみたいな感じのやつっぽいから入れて使えるようにしてみる。wheelパッケージはpipを使えばインストールできるらしい。

pip

mac(10.10.5)を使ってますが、下記でインストールできた。

pipでwheelをインストール

You are using pip version 7.0.3, however version 7.1.2 is available.
You should consider upgrading via the ‘pip install –upgrade pip’ command.
Pillow-2.9.0-cp27-none-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl is not a supported wheel on this platform.

エラーがでた。

まだ、サポートしてないといわれている。なぜだ。python3.4だからかな。Pillow-2.9.0-cp34-cp34m-macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl (md5)か。

まだ言われる。

これでプラットフォームのタイプを取得できた。

どうも、anacondaだとダメらしい。
参考:https://github.com/Homebrew/homebrew-python/issues/172

condaというコマンドでインストールできるらしい。

pillow2.9がインストールできた。

協調フィルタリング(ピアソン相関)

結果は、下記のように表示される。

O 1.0
G 0.9808680821138367
E 0.9484536082474225
K 0.9408299662818367
H 0.8827613485576769
D 0.6252910738779192
L 0.49037436997675116
C -0.2540244987629046
F -0.2553208668685789
I -0.3101395942331776
J -0.31251695558993137
B -0.3242687382284557
M -0.5561279983200484
N -0.8262633124961081

協調フィルタリング(ユークリッド距離)

これを読んでます。集合知プログラミング

集合知プログラミング

参考:協調フィルタリングでアイテムの推薦をする

協調フィルタリングとは?

参考:協調フィルタリング

協調フィルタリング(きょうちょうフィルタリング、Collaborative Filtering、CF)は、多くのユーザの嗜好情報を蓄積し、あるユーザと嗜好の類似した他のユーザの情報を用いて自動的に推論を行う方法論である

ユークリッド距離とは?

参考:ユークリッド距離

数学におけるユークリッド距離(ユークリッドきょり、英: Euclidean distance)またはユークリッド計量(ユークリッドけいりょう、英: Euclidean metric; ユークリッド距離函数)とは、人が定規で測るような二点間の「通常の」距離のことであり、ピタゴラスの公式によって与えられる。

つまりただの2点間の距離です。ピタゴラスの定理は、直角三角形の斜辺cは、他の2辺a、bとすると、が成り立ちます。よって、となります。

ユークリッド距離で嗜好が似てる人を探す

AさんとBさんがいて、芸能人あと、芸能人いがいるとします。Aさんは、あの好き度が10で、いの好き度が5です。Bさんは、あの好き度が3で、いの好き度が3です。AさんとBさんの嗜好の類似度をユークリッド距離で計算するには、x軸にあの好き度、y軸にいの好き度をおいて、Aさん、Bさんをプロットします。Aさん座標とBさん座標の距離が短ければ嗜好が似ていることになります。好き度が完全に同じであれば距離は0になります。座標同士の距離をピタゴラスの定理で計算できます。

でもこれだと2人の芸能人に対する嗜好の類似度しか測れません。複数の場合は、それぞれの芸能人の好き度の差の2乗を全部足せばいいらしいです。平方ユークリッド距離というらしいです。

Pythonでやってみる

データを用意する。

AさんとBさんの似ている度を、あ・いを対象に計測してみる

0.12077134402462537と表示されます。

Aさんと嗜好が似ている人順に表示する

下記のように表示されます。

O 0.5
G 0.25
E 0.1
K 0.05263157894736842
D 0.022222222222222223
H 0.02
L 0.012987012987012988
B 0.010638297872340425
M 0.01
J 0.009174311926605505
I 0.008849557522123894
C 0.008333333333333333
N 0.008130081300813009
F 0.007751937984496124

MacでPythonを使って機械学習をやってみる

参考:MacでPythonの機械学習環境構築(2015年2月版)

brewが動かない。

参考:Yosemiteでbrewが壊れた

1行目の1.8をcurrentに変更する。

動くようになったっぽい。

pyenvをインストール

Homebrew requires Leopard or higher. For Tiger support, see:
https://github.com/mistydemeo/tigerbrew

Yosemiteだけど上記のようなエラーがでる。

参考:開発 備忘録 Mac環境とターミナルで多用するコマンド

1.8の部分をviで、Currentに直すと動くという記述を見つけたが、結局Tigerだと思われるようになり、動かなかった

rubyのバージョンは、ruby 2.0.0p481 (2014-05-08 revision 45883) [universal.x86_64-darwin14]となっていて、/System/Library/Frameworks/Ruby.framework/Versions/には、2.0とCurrentがある。brew.rbの1行目のcurrentをCurrentとか2.0にしてみたけど、ダメだった。

homebrewアンインストール

参考:Homebrewをアンインストールするには

homebrewインストール

You have not agreed to the Xcode license.
Before running the installer again please agree to the license by opening
Xcode.app or running:
sudo xcodebuild -license

というエラーみたいのになる。どうもちょうどXcodeをアップデートして、同意しなきゃいけない状態だったみたい。Xcodeを起動してAgreeして再度インストールしたらできた。

改めて、pyenvをインストール

インストールできたけど、きちんと動かない。pyenvと打っても、変なヘルプ画面が表示される。

参考:Fails to run if XAMPP is installed #394

ここと同じ画面が表示されている。.bash_profileの内容がいけてないらしい。自分のをよく見たら、結構汚い。。とりあえず綺麗にして、export PATH=”/usr/bin:/bin:/usr/sbin:/sbin:~/bin”を1行目にして、export PATH=”$PATH:/applications/xampp/xamppfiles/bin”を最後の行にした。これで、きちんと使えるようになった。試行錯誤してたからかもしれないけど、最終的には、.bash_profileに、pyenv関連のpathは追加してないけど、今のところ動いている。

python3をインストールする

python2と3で色々変わっているらしい。昔やってたときは2だったはず。でも新しい3を使ってみる。

3.5.0が最新っぽい。
anacondaというのは、python3系だと、anaconda3-2.3.0が最新っぽい。

anacondaをインストール

あとは、rehashとか、localとか、globalとかいうのをやっとくといいらしい。