
414
5
章 機械学習
図5-59 非線形境界に対して十分に機能しない線形分類器
このデータを線形に分離できないことは明らかです。しかし、「5.6 詳細:線形回帰」基底関数
回帰で学んだように、線形分類器が扱えるようデータを高い次元に投影する方法が考えられます。
例えば、中央の集団を中心とする放射基底関数を使用するのが単純な解の
1
つです。
In[12]: r = np.exp(-(X ** 2).sum(1))
3
次元プロットを使って、追加した次元を可視化しましょう。
Jupyter notebook
を使用している
なら、スライダーを動かしてプロットを回転できます(図 5-60)
In[13]: from mpl_toolkits import mplot3d
def plot_3D(elev=30, azim=30, X=X, y=y):
ax = plt.subplot(projection
='3d')
ax.scatter3D(X[:, 0], X[:, 1], r, c=y, s=50, cmap='autumn')
ax.view_init(elev=elev, azim=azim)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.set_zlabel('r')
interact(plot_3D, elev=[30, 60], azip=(-180, 180),
X=fixed(X), y=fixed(y));