Warning: Declaration of action_plugin_wrap::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /s/bach/b/class/cs545/public_html/fall13/dokuwiki/lib/plugins/wrap/action.php on line 148

Warning: Declaration of action_plugin_tablewidth::register(&$controller) should be compatible with DokuWiki_Action_Plugin::register(Doku_Event_Handler $controller) in /s/bach/b/class/cs545/public_html/fall13/dokuwiki/lib/plugins/tablewidth/action.php on line 93
=== The perceptron === Here's the code for the perceptron classifier we discussed in class: import numpy as np from PyML.classifiers.baseClassifiers import Classifier class Perceptron (Classifier) : """An implementation of the perceptron algorithm""" attributes = {'max_iterations': 50, 'learning_rate' : 0.2} def __init__(self, arg = None, **args) : Classifier.__init__(self, arg, **args) def train(self, data, **args) : Classifier.train(self, data, **args) if data.labels.numClasses != 2 : raise ValueError, "not a binary classification problem" self.bias = 0 data.addFeature('bias', [1.0 for i in range(len(data))]) num_features = data.numFeatures self.w = np.zeros(data.numFeatures) converged = False iterations = 0 while (not converged and iterations < self.max_iterations) : converged = True for i in range(len(data)) : label = 2 * data.labels.Y[i] -1 # convert the labels from 0,1 to -1, +1 if label * self.decisionFunc(data, i) <= 0 : self.w = self.w + label * self.learning_rate * data.X[i] converged = False iterations += 1 data.eliminateFeatures([data.numFeatures -1]) self.bias = self.w[-1] self.w = self.w[:-1] self.converged = converged if converged : print 'converged in %d iterations '% iterations # this should be the last command in the train function self.log.trainingTime = self.getTrainingTime() def decisionFunc(self, data, i) : return np.dot(self.w, data.X[i]) + self.bias def classify(self, data, i) : score = self.decisionFunc(data, i) classification = 1 if score > 0 else 0 return (classification, score)