def updatePlot(self, event=None):
"""Draw the BMU plot.
"""
# get EEG data from current source
cap = self.src.getEEGSecs(self.width, copy=False)
data = cap.timeEmbed(lags=self.lags)
if (time.time() - self.lastTrainTime) > self.retrainDelay:
progressDialog = wx.ProgressDialog('Training Classifier',
'Training', maximum=self.maxIter // 50 + 1,
style=wx.PD_ELAPSED_TIME | wx.PD_SMOOTH)
def updateProgressDialog(iteration, weights, learningRate, radius):
if not (iteration % 50):
progressDialog.Update(updateProgressDialog.i, 'Training')
updateProgressDialog.i += 1
updateProgressDialog.i = 0
if self.som is None:
self.som = ml.SOM(data, latticeSize=self.latticeSize,
maxIter=self.maxIter, distMetric=self.distMetric,
learningRate=self.learningRate,
learningRateFinal=self.learningRateFinal,
radius=self.radius, radiusFinal=self.radiusFinal,
callback=updateProgressDialog, verbose=False)
else:
self.som.callback = updateProgressDialog
self.som.train(data)
progressDialog.Destroy()
self.lastTrainTime = time.time()
if self.som is not None:
points = self.som.getBMUIndices(data[-self.nPoints:,:])
else:
pointsX = np.round(np.random.uniform(0, self.latticeSize[0]-1, size=self.nPoints))
pointsY = np.round(np.random.uniform(0, self.latticeSize[1]-1, size=self.nPoints))
points = np.vstack((pointsX,pointsY)).T
self.plot.draw(points, latticeSize=self.latticeSize)
评论列表
文章目录