-
-
Notifications
You must be signed in to change notification settings - Fork 1k
/
quadratic_time_mmd_kernel_selection.sg
43 lines (37 loc) · 1.49 KB
/
quadratic_time_mmd_kernel_selection.sg
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
CSVFile f_features_p_train("../../data/two_sample_test_gaussian.dat")
CSVFile f_features_q_train("../../data/two_sample_test_laplace.dat")
CSVFile f_features_p_test("../../data/two_sample_test_gaussian2.dat")
CSVFile f_features_q_test("../../data/two_sample_test_laplace2.dat")
#![create_features]
RealFeatures features_p_train(f_features_p_train)
RealFeatures features_q_train(f_features_q_train)
RealFeatures features_p_test(f_features_p_test)
RealFeatures features_q_test(f_features_q_test)
#![create_features]
#![create_instance]
QuadraticTimeMMD mmd(features_p_train, features_q_train)
#![create_instance]
#![add_kernels]
GaussianKernel kernel1(10, 0.1)
GaussianKernel kernel2(10, 1)
GaussianKernel kernel3(10, 10)
mmd.add_kernel(kernel1)
mmd.add_kernel(kernel2)
mmd.add_kernel(kernel3)
#![add_kernels]
#![select_kernel_single]
mmd.select_kernel(enum EKernelSelectionMethod.MAXIMIZE_MMD)
#GaussianKernel learnt_kernel_single = GaussianKernel:obtain_from_generic(mmd.get_kernel())
#Real width = learnt_kernel_single.get_width()
#![select_kernel_single]
#![select_kernel_combined]
mmd.select_kernel(enum EKernelSelectionMethod.MAXIMIZE_MMD, true)
#CombinedKernel learnt_kernel_combined = CombinedKernel:obtain_from_generic(mmd.get_kernel())
#RealVector weights = learnt_kernel_combined.get_subkernel_weights()
#![select_kernel_combined]
#![perform_test]
mmd.set_p(features_p_test)
mmd.set_q(features_q_test)
Real statistic = mmd.compute_statistic()
Real p_value = mmd.compute_p_value(statistic)
#![perform_test]