def buildClassifier(self, instances): """ builds the ZeroR classifier with the given data Parameter(s): 'instances' -- the data to build the classifier from """ self.getCapabilities().testWithFail(instances) # remove instances with missing class instances = Instances(instances) instances.deleteWithMissingClass() sumOfWeights = 0 self.__Class = instances.classAttribute() self.__ClassValue = 0 self.__Counts = None if (instances.classAttribute().isNumeric()): self.__Counts = None elif (instances.classAttribute().isNominal()): self.__Counts = jarray.zeros(instances.numClasses(), 'd') for i in range(len(self.__Counts)): self.__Counts[i] = 1 sumOfWeights = instances.numClasses() enu = instances.enumerateInstances() while (enu.hasMoreElements()): instance = enu.nextElement() if (not instance.classIsMissing()): if (instances.classAttribute().isNominal()): self.__Counts[int( instance.classValue())] += instance.weight() else: self.__ClassValue += instance.weight( ) * instance.classValue() sumOfWeights += instance.weight() if (instances.classAttribute().isNumeric()): if (Utils.gr(sumOfWeights, 0)): self.__ClassValue /= sumOfWeights else: self.__ClassValue = Utils.maxIndex(self.__Counts) Utils.normalize(self.__Counts, sumOfWeights) return
def buildClassifier(self, instances): """ builds the ZeroR classifier with the given data Parameter(s): 'instances' -- the data to build the classifier from """ self.getCapabilities().testWithFail(instances) # remove instances with missing class instances = Instances(instances) instances.deleteWithMissingClass() sumOfWeights = 0 self.__Class = instances.classAttribute() self.__ClassValue = 0 self.__Counts = None if (instances.classAttribute().isNumeric()): self.__Counts = None elif (instances.classAttribute().isNominal()): self.__Counts = jarray.zeros(instances.numClasses(), 'd') for i in range(len(self.__Counts)): self.__Counts[i] = 1 sumOfWeights = instances.numClasses() enu = instances.enumerateInstances() while (enu.hasMoreElements()): instance = enu.nextElement() if (not instance.classIsMissing()): if (instances.classAttribute().isNominal()): self.__Counts[int(instance.classValue())] += instance.weight() else: self.__ClassValue += instance.weight() * instance.classValue() sumOfWeights += instance.weight() if (instances.classAttribute().isNumeric()): if (Utils.gr(sumOfWeights, 0)): self.__ClassValue /= sumOfWeights else: self.__ClassValue = Utils.maxIndex(self.__Counts) Utils.normalize(self.__Counts, sumOfWeights) return