import numpy as np
import random
import sklearn.linear_model as lm
import matplotlib.pyplot as plt
def clustered_x():
# データ数
n_tr1 = 10
n_tr2 = 5
x_max = 5.0 # xの範囲 [0, x_max]
x = np.random.randn(n_tr1)*0.3
x1 = np.random.randn(n_tr2)*0.8 + 1.8
return np.hstack([x,x1])
x = clustered_x()
f_cos = lambda x: np.cos(2.0*x) # サンプルデータを作るためのベース関数
y = f_cos(x) + np.random.randn(len(x))*0.3
# データの描画
plt.plot(x, y, "ob", ms=8)
from sklearn import svm
# svrの利用
svr = svm.SVR(kernel='rbf')
svr.fit(x[:, np.newaxis], y)
# 回帰曲線用データ
x_plot = np.linspace(-0.5, np.pi, 1000)
y_plot = svr.predict(x_plot[:, np.newaxis])
#グラフにプロットする。
plt.scatter(x, y)
plt.plot(x_plot, y_plot, label="SVR prediction")
x_curve = np.linspace(-0.3, np.pi, 100)
plt.plot(x_curve, f_cos(x_curve), label="cos(x)")
plt.legend()
plt.show()