mixture = ot.Mixture(dists) # 3-d test R1 = ot.CovarianceMatrix(3) R1[2, 1] = -0.25 R2 = ot.CovarianceMatrix(3) R2[1, 0] = 0.5 R2[2, 1] = -0.3 R2[0, 0] = 1.3 print(R2) dists = [ot.Normal([1.0, -2.0, 3.0], R1), ot.Normal([-1.0, 2.0, -2.0], R2)] mixture = ot.Mixture(dists, [2.0 / 3.0, 1.0 / 3.0]) sample = mixture.getSample(1000) distribution = ot.KernelSmoothing().build(sample) algo = ot.MinimumVolumeClassifier(distribution, 0.8) threshold = algo.getThreshold() print("threshold=", threshold) assert m.fabs(threshold - 0.0012555) < 1e-3, "wrong threshold" cls_ref = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1 ] for i in range(35): x = sample[i] cls = algo.classify(x) pdf = mixture.computePDF(x) print(i, x, cls, pdf - threshold) assert cls == cls_ref[i], "wrong class" graph1 = algo.drawSample(sample, [0])
mixture = ot.Mixture(dists) # 3-d test R1 = ot.CovarianceMatrix(3) R1[2, 1] = -0.25 R2 = ot.CovarianceMatrix(3) R2[1, 0] = 0.5 R2[2, 1] = -0.3 R2[0, 0] = 1.3 print(R2) dists = [ot.Normal([1.0, -2.0, 3.0], R1), ot.Normal([-1.0, 2.0, -2.0], R2)] mixture = ot.Mixture(dists, [2.0 / 3.0, 1.0 / 3.0]) sample = mixture.getSample(1000) distribution = ot.KernelSmoothing().build(sample) algo = ot.MinimumVolumeClassifier(distribution, [0.8]) threshold = algo.getThreshold() print("threshold=", threshold) assert m.fabs(threshold[0] - 0.0012555) < 1e-3, "wrong threshold" cls_ref = [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1 ] for i in range(35): x = sample[i] cls = algo.classify(x) pdf = mixture.computePDF(x) print(i, x, cls, pdf - threshold[0]) assert cls == 1 - cls_ref[i], "wrong class" graph1 = algo.drawSample(sample, [0])