-Python- 様々な回帰モデル(4 - k-近傍法)

k-近傍法(k-nearest neighbor)はデータの近傍性に基づく手法です.未知のデータに対して最も近いk個のデータを選び出すことが基礎になります.クラス分類で使われることが多く,値の平均を使うことで回帰問題にも適用できます.なお,クラスタリング問題でよく用いられる k-means(k-平均法)は名前が似ていますが,異なる手法です.
k-近傍法の回帰問題用のクラスはになります.

 
# Import module
import math
import numpy as np
import matplotlib.pyplot as plt
from sklearn import neighbors
 
# 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 = neighbors.KNeighborsRegressor()
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.44237329912577295

f:id:HidehikoMURAO:20181015110304p:plain