Esempio n. 1
0
def cluster(algorithm, filename, options = ''):
    reader = BufferedReader(FileReader(filename))
    data = Instances(reader)
    reader.close()
    cl = algorithm()
    cl.setOptions(options.split())
    cl.buildClusterer(data)
    returnData = []
    for instance in data.enumerateInstances(): returnData.append(cl.clusterInstance(instance))
    print returnData
Esempio n. 2
0
def cluster(algorithm, filename, options=''):
    reader = BufferedReader(FileReader(filename))
    data = Instances(reader)
    reader.close()
    cl = algorithm()
    cl.setOptions(options.split())
    cl.buildClusterer(data)
    returnData = []
    for instance in data.enumerateInstances():
        returnData.append(cl.clusterInstance(instance))
    print returnData
Esempio n. 3
0
    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
Esempio n. 4
0
    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