最初Excelのグラフでやってみたが、ありえない事に気づきOctaveに方針変更。それでも、コードと結果を見くらべながら試行錯誤しにくかったので、最終的に@__youki__氏に教えてもらったiPython notebookに落ちついた。
iPython notebookはiPythonのWebクライアント。グラフを試行錯誤しながらガンガンプロットして保存しておける。セットアップは若干面倒だがそのうちfabricのfabファイルとか出てきそう。結果はnbconverterでHTMLに変換できる。コード、結果の共有はもちろん、ブラウザから実行できるので一度サーバーを立ててしまえばどこでも使えて便利。
変換したHTMLを貼りつけたのが以下。
In [4]:
import numpy as np
In [79]:
x = linspace(-1, 1, num=100)
for i in xrange(1,12):
plot(x, x**i)
ret = title('Basis function')
In [80]:
x = linspace(-1, 1, num=100)
y = np.zeros(100)
x_prime = -0.4
for i in xrange(1,12):
v = (x ** i)
y += reduce(lambda x,y :x+y, [v * (x_prime ** i)])
plot(x, y)
ret = title(u'Karnel function')
In [26]:
def gaussian(x, mean, sigma):
return 0.5/np.sqrt(2.0*np.pi)/sigma * np.exp(-((x-mean)/sigma)**2/2)
In [73]:
x = linspace(-1, 1, num=100)
SIGMA = 0.2
for i in xrange(0, 11):
mean = -1 + (float(i) / 5)
plot(x, map(lambda x:gaussian(x, mean, SIGMA), x))
ret = title('Basis function')
In [77]:
SIGMA = 0.2
x = linspace(-1, 1, num=100)
y = np.zeros(100)
x_prime = 0.0
for i in xrange(0,11):
mean = -1 + (float(i) / 5)
v = np.array(map(lambda x:gaussian(x, mean, SIGMA), x))
y += reduce(lambda x,y :x+y, [v * gaussian(x_prime, mean, SIGMA)])
plot(x, y)
ret = title(u'Karnel function')
In [68]:
def logistic_sigmoid(x):
return 1 / (1 + np.exp(-1 * x * 10))
In [70]:
x = linspace(-1, 1, num=100)
for i in linspace(-1, 1, num=11):
plot(x, map(lambda x:logistic_sigmoid(x - i), x))
ret = title('Basis function')
In [82]:
x = linspace(-1, 1, num=100)
x_prime = 0.0;
y = np.zeros(100)
for i in linspace(-1, 1, num=11):
v = np.array(map(lambda x:logicstic_sigmoid(x - i), x))
y += reduce(lambda x, y: x + y, [v * logistic_sigmoid(x_prime - i)])
plot(x, y)
ret = title('Karnel function')