資源簡介
使用python語言編寫,在pycharm環境下測試了,能夠跑通。并且生成擬合曲線
代碼片段和文件信息
from?scipy?import?*
from?scipy.linalg?import?normpinv
from?matplotlib?import?pyplot?as?plt
class?RBF:
????def?__init__(selfindimnumCentersoutdim):
????????self.indim?=?indim
????????self.outdim?=?outdim
????????self.numCenters?=?numCenters
????????self.centers?=?[random.uniform(-11indim)?for?i?in?range(numCenters)]
????????self.beta?=?8
????????self.W?=?random.random((self.numCentersself.outdim))
????def?_basisfunc(selfcd):
????????assert?len(d)?==?self.indim
????????return?exp(-self.beta*norm(c-d)**2)
????def?_calcAct(self?X):
????????#?calculate?activations?of?RBFs
????????G?=?zeros((X.shape[0]?self.numCenters)?float)
????????for?ci?c?in?enumerate(self.centers):
????????????for?xi?x?in?enumerate(X):
????????????????G[xi?ci]?=?self._basisfunc(c?x)
????????return?G
????def?train(self?X?Y):
????????“““?X:?matrix?of?dimensions?n?x?indim
????????????y:?column?vector?of?dimension?n?x?1?“““
????????#?choose?random?center?vectors?from?training?set
????????rnd_idx?=?random.permutation(X.shape[0])[:self.numCenters]
????????self.centers?=?[X[i?:]?for?i?in?rnd_idx]
????????print
????????“center“?
評論
共有 條評論