Julia #1: LogisticRegression

Julia を導入
————————————
ベイズ推論による機械学習入門 須山 敦志 著 を読む
————————————
内容としては、機械学習とベイズ推論の基礎を復習するのに良かった。
あとは、本書籍のサポートサイト著者のサポートサイトを参考に進めるが、サンプルプログラムはJuliaで記述されている。というわけで、Juliaで対応してみる。以前にも経験済だが、最新のver1.2では、色々と仕様が変更されており、書籍の執筆された時点での環境との不一致か、なかなか安定した動作が期待できないのと、貼付のDockerファイルもMacではハングして達成できない。仕方無しにJulia ver 0.7にダウングレードしてみた。

https://julialang.org/からMac OX S用をダウンロードすればよいが、現時点での最新版は1.2だが、ver 0.4, 0.7から相当に改変があり、ここでは、学習プログラムを動かすためにあえて、Older Releasesからver0.7をダウンロードしてインストールする。

(注:あとから気がついたが、ver 0.6.4にして、そのままコードをjupyterに落とせば、何の問題もなく作動!)

以下のパスを.bashrc に追記

$ source .bashrc

以下のエリアスは、.bash_profileに追記

$ source .bash_profile

Jupyter Notebookでの使用は、Juliaを立ち上げ、

Out:2.4

Out: 100-element Array{Float64,1}:
-0.9624213660385834
-0.8943713704600977
-0.826321374881612
-0.7582713793031263
-0.6902213837246407
-0.6221713881461549
-0.5541213925676692
-0.48607139698918356
-0.4180214014106979
-0.34997140583221215
-0.28192141025372647
-0.21387141467524076
-0.14582141909675506
?
5.025978244868158
5.094028240446643
5.162078236025129
5.230128231603614
5.298178227182101
5.366228222760586
5.434278218339072
5.502328213917558
5.570378209496043
5.638428205074529
5.706478200653015
5.7745281962315005

Out:100-element Array{Float64,1}:
1.4716160624130428
1.4395658262082924
1.4092644768125695
1.3807120142258738
1.3539084384482056
1.3288537494795643
1.3055479473199505
1.2839910319693637
1.2641830034278045
1.2461238616952723
1.2298136067717678
1.2152522386572902
1.2024397573518402
?
5.345933981351435
5.467785784341084
5.591386474139762
5.716736050747467
5.8438345141641985
5.972681864389958
6.103278101424744
6.235623225268559
6.3697172359213985
6.505560133383267
6.643151917654164
6.782492588734086

次にパッケージLoisticRegressionを追加
Juliaを起動し、]を押してパッケージモードにしてから、

LogisticRegressionフォルダのsrcの中のLogisticRegression.jlを、ダウンロード済のLogisticRegression.jlに入れ替える。
一度Juliaを終了し、LogisticRegressionディレクトリに入ります。
Juliaを起動して]を押してパッケージモードにして、パッケージの中で利用するパッケージ、ここではDistributionsを以下のようにしてManifest.tomlに登録。

delキーを押してパッケージモードを終了した後、

ジュピターを立ち上げて、環境OKなる。

LogisticRegressionのファルダの置かれているPathに要注意して、

Out:visualize_surface (generic function with 1 method)

Out:visualize_contour (generic function with 1 method)

Out:draw_line (generic function with 1 method)

Out:2×2 Array{Float64,2}:
100.0 0.0
0.0 100.0

Out:(Bool[true, false, false, false, false, true, false, false, false, false … false, false, true, true, false, false, true, true, false, false], [23.3394, 0.0910565])

Out:([8.90405, -0.76043], [3.98836, -0.616809])