Julia #4: Nonnegative Matrix Factorization

————————————
ベイズ推論による機械学習入門 須山 敦志 著 を読む
————————————
NMF:nonnegative matrix factorization
————————————
まずは、Anacondaでscipyをインストールしておこう。
organ.wavという学習用データファイルを使用するので、ここではパスを間違えないように絶対パスで記載する。

まずは、NMFモジュールとして、NMF.jlのコードを一気にJupyterへドンと実行。

Out: NMF

次にdemo_NMF.jlを、動作を確認しながら、少しずつ入力実行していく。その歳、moduleのソースコードや、データファイルのパスには要注意(ここでは絶対パスにした)。

Out: (44100, Int16[0 0; 0 0; … ; 0 0; 0 0])
WAVファイルの情報はPyObject Arrayであるdataに取り込まれている、
scipyのspecgram()でフーリエ変換。ここのdata[10000:318000,2]が、Julia ver 0.7ではにっちもさっちもブルドッグ。ver.0.6.4に下げて、直接、Jupyterで入力すれば何のことはない。


Out: (0, 22000)

Out: NMF.NMFModel([1.0 1.0; 1.0 1.0; … ; 1.0 1.0; 1.0 1.0], [1.0 1.0; 1.0 1.0; … ; 1.0 1.0; 1.0 1.0], 1.0, 100.0)

Out:129×1203 Array{Float64,2}:
0.758165 0.345822 1.55558 … 0.547368 0.315923 1.79641
4.70464 2.14591 9.65305 3.3964 1.95962 11.1472
1.88055 0.857836 3.85757 1.35844 0.786708 4.4563
0.119958 0.062215 0.132823 0.181609 0.444062 0.344534
0.0132027 0.00667184 0.0172718 0.0177633 0.0396456 0.0365076
0.00425499 0.00212669 0.00592189 … 0.0054267 0.0115406 0.0115765
0.0341117 0.0180025 0.0330729 0.0555813 0.142612 0.100473
1.39303 0.738848 1.2951 2.31633 6.01692 4.13258
2.1343 1.13212 1.98252 3.55037 9.22472 6.33255
1.16528 0.617831 1.08671 1.93482 5.02155 3.45515
0.38544 0.204349 0.359622 … 0.639837 1.66039 1.14277
0.563663 0.299005 0.523379 0.937812 2.43693 1.67252
0.520796 0.276265 0.483573 0.866491 2.2516 1.54532
? ? ?
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 … 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 … 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6
1.01537e-6 5.35847e-7 9.84728e-7 1.65421e-6 4.24402e-6 2.99053e-6