def train(self, features, labels): labels,names = normaliselabels(labels) if self.auto_weighting: nlabels = labels.max() + 1 self.param.nr_weight = int(nlabels) self.param.weight_label = range(nlabels) self.param.weight = [(labels != i).mean() for i in xrange(nlabels)] problem = libsvm.svm_problem(labels.astype(float), features) model = libsvm.svm_model(problem, self.param) return libsvmModel(model, names, self.output_probability)
def test_normaliselabels(): np.random.seed(22) labels = np.zeros(120, np.uint8) labels[40:] += 1 labels[65:] += 1 reorder = np.argsort(np.random.rand(len(labels))) labels = labels[reorder] labels2, names = normaliselabels(labels) for new_n, old_n in enumerate(names): assert np.all((labels == old_n) == (labels2 == new_n))
def train(self, features, labels): labels, names = normaliselabels(labels) if self.auto_weighting: nlabels = labels.max() + 1 self.param.nr_weight = int(nlabels) self.param.weight_label = list(range(nlabels)) self.param.weight = [(labels != i).mean() for i in range(nlabels)] problem = libsvm.svm_problem(labels.astype(float), features) model = libsvm.svm_model(problem, self.param) return libsvmModel(model, names, self.output_probability)
def test_normaliselabels(): np.random.seed(22) labels = np.zeros(120, np.uint8) labels[40:] += 1 labels[65:] += 1 reorder = np.argsort(np.random.rand(len(labels))) labels = labels[reorder] labels2,names = normaliselabels(labels) for new_n,old_n in enumerate(names): assert np.all( (labels == old_n) == (labels2 == new_n) )