Suport Vector Regression
RBFカーネル法を用いたSVMをモデルとした回帰
特徴量に対して明示的な変換を行わなくても、多項式回帰と同じような複雑な予測をすることができる。
結果(グラフ)

他の回帰と比較
Linearモデル(単回帰)と、多項式回帰を比較した。
サポートベクター回帰が柔軟なことがわかる。

ソースコード
import numpy as np
from sklearn.svm import SVR
import matplotlib.pyplot as plt
import math
import time
np.random.seed(0)
#データを作る
X = np.linspace(0, 2*math.pi, 40)
y = np.sin(X)
#サイズを合わせる
X = X.reshape(40,1)
#ノイズの入れる
y[::2] += np.random.rand(20)
#予測用データ
X_pre = np.linspace(0,4*math.pi,40)
y_pre = np.sin(X_pre)
X_pre = X_pre.reshape(40,1)
#サポートベクター回帰(SVR)
svr_rbf = SVR(kernel='rbf', C=1e3, gamma=0.05)
y_rbf = svr_rbf.fit(X, y)
y_rbf = y_rbf.predict(X_pre)
#プロット
lw = 2
plt.scatter(X_pre, y_pre, color='darkorange', label='predict')
plt.scatter(X, y, color="red", label='data')
plt.plot(X_pre, y_rbf, color='navy', lw=lw, label='RBF model')
plt.xlabel('data')
plt.ylabel('target')
plt.title('Support Vector Regression')
plt.legend()
plt.show()
参考

SVR
...

Support Vector Regression (SVR) using linear and non-linear kernels
...