-Python- 様々な回帰モデル(2 - サポートベクターマシン)

サポートベクターマシンは分類問題でも,回帰問題でも使用することができます.回帰用のクラスはsklearn.svm.SVRです.
# Import module

import math
import numpy as np
import matplotlib.pyplot as plt
from sklearn import svm
 
# Generate random number
x = np.random.rand(1000, 1)     # Make 1000 random numbers from 0 to 1
x = x * 20 - 10                 # Change the value range from -10 to 10
 
# Generate random number
y = np.array([math.sin(v) for v in x]) # Sine wave curve
# Add a random number with SND(average 0, standard deviation 1)
y += np.random.randn(1000)
 
# Learning
model = svm.SVR()
model.fit(x, y)
 
# Display results
print(model.score(x, y))
 
# Display Graph
plt.scatter(x, y, marker='+')
plt.scatter(x, model.predict(x), marker='o')
 
plt.show()
 
実行結果は以下のようになります.
0.33981002188258425

f:id:HidehikoMURAO:20181015101246p:plain

 R^2 決定係数の数値は良くないのですが,若干,いびつながら,正弦波の分布をなぞるような予測値になっています.