def statistics_kmm (n,d):
	from modshogun import RealFeatures
	from modshogun import DataGenerator
	from modshogun import GaussianKernel, MSG_DEBUG
	from modshogun import KernelMeanMatching
	from modshogun import Math

	# init seed for reproducability
	Math.init_random(1)
	random.seed(1);

	data = random.randn(d,n)

	# create shogun feature representation
	features=RealFeatures(data)

	# use a kernel width of sigma=2, which is 8 in SHOGUN's parametrization
	# which is k(x,y)=exp(-||x-y||^2 / tau), in constrast to the standard
	# k(x,y)=exp(-||x-y||^2 / (2*sigma^2)), so tau=2*sigma^2
	kernel=GaussianKernel(10,8)
	kernel.init(features,features)

	kmm = KernelMeanMatching(kernel,array([0,1,2,3,7,8,9],dtype=int32),array([4,5,6],dtype=int32))
	w = kmm.compute_weights()
	#print w
	return w
Exemple #2
0
def statistics_kmm(n, d):
    from modshogun import RealFeatures
    from modshogun import DataGenerator
    from modshogun import GaussianKernel, MSG_DEBUG
    from modshogun import KernelMeanMatching
    from modshogun import Math

    # init seed for reproducability
    Math.init_random(1)
    random.seed(1)

    data = random.randn(d, n)

    # create shogun feature representation
    features = RealFeatures(data)

    # use a kernel width of sigma=2, which is 8 in SHOGUN's parametrization
    # which is k(x,y)=exp(-||x-y||^2 / tau), in constrast to the standard
    # k(x,y)=exp(-||x-y||^2 / (2*sigma^2)), so tau=2*sigma^2
    kernel = GaussianKernel(10, 8)
    kernel.init(features, features)

    kmm = KernelMeanMatching(kernel, array([0, 1, 2, 3, 7, 8, 9], dtype=int32),
                             array([4, 5, 6], dtype=int32))
    w = kmm.compute_weights()
    #print w
    return w
    def train_kmm(self):

        width = float(self.sigma.text())
        degree = int(self.degree.text())

        self.axes.clear()
        self.axes.grid(True)
        self.axes.plot(self.data.x1_test, self.data.x2_test, 'ro')
        self.axes.plot(self.data.x1_train, self.data.x2_train, 'bo')

        # train kmm
        labels = self.data.get_labels()
        lab = BinaryLabels(labels)
        features = self.data.get_examples()
        train = RealFeatures(features)

        nTrain=len(self.data.x1_train);
        nTest=len(self.data.x1_test);
        trainI=numpy.array(range(nTrain), dtype=numpy.int32)
        testI=numpy.array(range(nTrain,nTest+nTrain),dtype=numpy.int32)


        kernel_name = self.kernel_combo.currentText()
        print "current kernel is %s" % (kernel_name)

        if kernel_name == "LinearKernel":
            gk = LinearKernel(train, train)
            gk.set_normalizer(IdentityKernelNormalizer())
        elif kernel_name == "PolynomialKernel":
            gk = PolyKernel(train, train, degree, True)
            gk.set_normalizer(IdentityKernelNormalizer())
        elif kernel_name == "GaussianKernel":
            gk = GaussianKernel(train, train, width)

        kmm = KernelMeanMatching(gk, trainI, testI)
        w = kmm.compute_weights()
        print 'Weights'
        print w

        self.axes.clear()
        self.axes.grid(True)
        self.axes.plot(self.data.x1_test, self.data.x2_test, 'ro')
        m_size=numpy.array(w*1000, dtype=numpy.int32)
        self.axes.scatter(self.data.x1_train, self.data.x2_train, s=m_size)
        self.axes.set_xlim((-5,5))
        self.axes.set_ylim((-5,5))
        self.canvas.draw()
    def train_kmm(self):

        width = float(self.sigma.text())
        degree = int(self.degree.text())

        self.axes.clear()
        self.axes.grid(True)
        self.axes.plot(self.data.x1_test, self.data.x2_test, 'ro')
        self.axes.plot(self.data.x1_train, self.data.x2_train, 'bo')

        # train kmm
        labels = self.data.get_labels()
        lab = BinaryLabels(labels)
        features = self.data.get_examples()
        train = RealFeatures(features)

        nTrain = len(self.data.x1_train)
        nTest = len(self.data.x1_test)
        trainI = numpy.array(range(nTrain), dtype=numpy.int32)
        testI = numpy.array(range(nTrain, nTest + nTrain), dtype=numpy.int32)

        kernel_name = self.kernel_combo.currentText()
        print "current kernel is %s" % (kernel_name)

        if kernel_name == "LinearKernel":
            gk = LinearKernel(train, train)
            gk.set_normalizer(IdentityKernelNormalizer())
        elif kernel_name == "PolynomialKernel":
            gk = PolyKernel(train, train, degree, True)
            gk.set_normalizer(IdentityKernelNormalizer())
        elif kernel_name == "GaussianKernel":
            gk = GaussianKernel(train, train, width)

        kmm = KernelMeanMatching(gk, trainI, testI)
        w = kmm.compute_weights()
        print 'Weights'
        print w

        self.axes.clear()
        self.axes.grid(True)
        self.axes.plot(self.data.x1_test, self.data.x2_test, 'ro')
        m_size = numpy.array(w * 1000, dtype=numpy.int32)
        self.axes.scatter(self.data.x1_train, self.data.x2_train, s=m_size)
        self.axes.set_xlim((-5, 5))
        self.axes.set_ylim((-5, 5))
        self.canvas.draw()