キンサクプログラマー

お金儲けと技術のメモ

scikit-learnで3分間機械学習

ちょい前のrebuild fmでscikit-learnの話があったので、どんなものか触ってみることにした。
rebuild.fm


scikit-learn: machine learning in Python — scikit-learn 0.18.1 documentation
よく知らないライブラリに触れるとなると大抵一つのチュートリアルをやって心が折れることが多い(
(tensorflowなんかまさにそれ)が、scikit-learnはインストールしてちょっと使い方を読んで、サンプルを動かすまで3分もかからなかった。

>>> X = np.sort(5 * np.random.rand(40, 1), axis=0)
>>> y = np.sin(X).ravel()
>>> y[::5] += 3 * (0.5 - np.random.rand(8))
>>> svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.1)
>>> svr_lin = SVR(kernel='linear', C=1e3)
>>> svr_poly = SVR(kernel='poly', C=1e3, degree=2)
>>> y_rbf = svr_rbf.fit(X, y).predict(X)
>>> y_lin = svr_lin.fit(X, y).predict(X)
>>> y_poly = svr_poly.fit(X, y).predict(X)
>>> lw = 2
>>> plt.scatter(X, y, color='darkorange', label='data')
<matplotlib.collections.PathCollection object at 0x1007987b8>
>>> plt.hold('on')
>>> plt.plot(X, y_rbf, color='navy', lw=lw, label='RBF model')
[<matplotlib.lines.Line2D object at 0x100798f28>]
>>> plt.plot(X, y_lin, color='c', lw=lw, label='Linear model')
[<matplotlib.lines.Line2D object at 0x105bc2278>]
>>> plt.plot(X, y_poly, color='cornflowerblue', lw=lw, label='Polynomial model')
[<matplotlib.lines.Line2D object at 0x10079ec88>]
>>> plt.xlabel('data')
<matplotlib.text.Text object at 0x10aac9e48>
>>> plt.ylabel('target')
<matplotlib.text.Text object at 0x10ac0f860>
>>> plt.title('Support Vector Regression')
<matplotlib.text.Text object at 0x1007779b0>
>>> plt.legend()
<matplotlib.legend.Legend object at 0x10121db00>
>>> plt.show()

f:id:pikurusux:20170303080157p:plain
サンプルそのままだが、
単純なサポートベクターマシンの学習だったらデータ変えてすぐに使えそう。
svmの分類処理自体は

 y_poly = svr_poly.fit(X, y).predict(X)

だけ。すげぇ