こちらを実行したい
授業で講談社の「機械学習のための連続最適化」を輪講していて、14章のSVMの理解を深めたいと考え検索していた。
何件か理論とその実装の記事が見つかりコードも記載してあった。今回は線形SVMの理論と実装にあるコードを実行する。
出たエラー
最適化問題を解くのに便利なcvxoptライブラリについてimportがまだだった。
Q = cvxopt.matrix(_Q)
p = cvxopt.matrix(-np.ones(N))
G = cvxopt.matrix(-np.eye(N))
h = cvxopt.matrix(np.zeros(N))
A = cvxopt.matrix(y[np.newaxis], (1, N), 'd')
b = cvxopt.matrix(0.0)
solution = cvxopt.solvers.qp(Q, p, G, h, A, b)
jupyterを起動し貼っつけてみると以下のように出る。
ModuleNotFoundError Traceback (most recent call last)
in ()
1 import numpy as np
2 import sys
----> 3 import cvxopt
4 import matplotlib.pyplot as plt
5 import sklearn.datasets
ModuleNotFoundError: No module named 'cvxopt'
対処
対処はこちらを参考にさせていただいた。凄くシンプル。検索は[No module named]で。
cvxoptのインストール
ちなみにModuleNotFoundErrorで検索するとModuleNotFoundError解決方法といった記事が紹介されたが今回は関係なさそう。
結果
AnacondaでもJupyterでも動作確認でき、記事と同じ実行結果となった。一安心。
pcost dcost gap pres dres
0: -8.2406e+00 -1.4586e+01 3e+02 1e+01 2e+00
1: -7.6844e+00 -2.4040e+00 3e+01 2e+00 2e-01
2: -4.7478e-01 -5.7972e-01 1e+00 5e-02 6e-03
3: -3.5402e-01 -4.3247e-01 9e-02 7e-04 8e-05
4: -4.1264e-01 -4.3173e-01 2e-02 8e-05 1e-05
5: -4.2931e-01 -4.2951e-01 2e-04 9e-07 1e-07
6: -4.2949e-01 -4.2949e-01 2e-06 9e-09 1e-09
7: -4.2949e-01 -4.2949e-01 2e-08 9e-11 1e-11
Optimal solution found.
感想
二次計画問題について先に学習していたため、今まで学んでいたことにつながっていくのが面白いと思う。以下などを参照しながら最適化アルゴリズムの実装につなげたい。
機械学習の数理 Advent Calendar 2018
Pythonの数理最適化用ライブラリCVXOPTの使用例