diff --git a/complexity.py b/complexity.py index 69d5ba1..ff7a2cd 100644 --- a/complexity.py +++ b/complexity.py @@ -22,8 +22,15 @@ # Data pre-processing and import # from modules import mnist -from modules import mnist +from modules import mnist +from numpy.random import rand, multivariate_normal +from numpy import arange, zeros, ones +from scipy import dot +import matplotlib.pyplot as plt +from ite.cost.x_factory import co_factory +from ite.cost.x_analytical_values import analytical_value_d_mmd +from ite.cost.x_kernel import Kernel #################################################### ''' @@ -171,6 +178,83 @@ def bsda_active(datasets=[], baseline_clf=SVC(), N=100): print(baseline_clf.predict(BSDA_X_Test)) print("Classification accuracy: ", round(baseline_clf.score(BSDA_X_Test, BSDA_y_Test), 3) * 100) +def MMD(): + # !/usr/bin/env python3 + + """ Demo for maximum mean discrepancy (MMD) estimators. + + Analytical vs estimated value is illustrated for normal random variables. + + """ + + + + def main(): + # parameters: + dim = 1 # dimension of the distribution + num_of_samples_v = arange(100, 3 * 1000 + 1, 100) + cost_name = 'BDMMD_UStat' # dim >= 1 + # cost_name = 'BDMMD_VStat' # dim >= 1 + # cost_name = 'BDMMD_UStat_IChol' # dim >= 1 + # cost_name = 'BDMMD_VStat_IChol' # dim >= 1 + + # initialization: + distr = 'normal' # fixed + num_of_samples_max = num_of_samples_v[-1] + length = len(num_of_samples_v) + d_hat_v = zeros(length) # vector of estimated divergence values + + # RBF kernel (sigma = std / bandwith parameter): + kernel = Kernel({'name': 'RBF', 'sigma': 1}) + # polynomial kernel (quadratic / cubic; c = offset parameter = 1): + # kernel = Kernel({'name': 'polynomial', 'exponent': 2, 'c': 1}) + # kernel = Kernel({'name': 'polynomial', 'exponent': 3, 'c': 1}) + + co = co_factory(cost_name, mult=True, kernel=kernel) # cost object + + # distr, dim -> samples (y1< + # covariance matrix (c1,c2): + l2 = rand(dim, dim) + l1 = rand(dim, dim) + c1 = dot(l1, l1.T) + c2 = dot(l2, l2.T) + + # generate samples (y1~N(m1,c1), y2~N(m2,c2)): + y1 = multivariate_normal(m1, c1, num_of_samples_max) + y2 = multivariate_normal(m2, c2, num_of_samples_max) + + par1 = {"mean": m1, "cov": c1} + par2 = {"mean": m2, "cov": c2} + + else: + raise Exception('Distribution=?') + + d = analytical_value_d_mmd(distr, distr, kernel, par1, par2) + + # estimation: + for (tk, num_of_samples) in enumerate(num_of_samples_v): + d_hat_v[tk] = co.estimation(y1[0:num_of_samples], + y2[0:num_of_samples]) # broadcast + print("tk={0}/{1}".format(tk + 1, length)) + + # plot: + plt.plot(num_of_samples_v, d_hat_v, num_of_samples_v, ones(length) * d) + plt.xlabel('Number of samples') + plt.ylabel('MMD') + plt.legend(('estimation', 'analytical value'), loc='best') + plt.title("Estimator: " + cost_name) + plt.show() + + if __name__ == "__main__": + main() + def main(): #baseline_clfs = [SVC(), GaussianNB(), DecisionTreeClassifier(), MLPClassifier(hidden_layer_sizes=(10,10,10,10,10,10), solver='lbfgs', alpha=2, random_state=1, activation='relu')] diff --git a/ite-in-python/CHANGELOG.txt b/ite/CHANGELOG.txt similarity index 100% rename from ite-in-python/CHANGELOG.txt rename to ite/CHANGELOG.txt diff --git a/ite-in-python/LICENSE.txt b/ite/LICENSE.txt similarity index 100% rename from ite-in-python/LICENSE.txt rename to ite/LICENSE.txt diff --git a/ite-in-python/README.md b/ite/README.md similarity index 100% rename from ite-in-python/README.md rename to ite/README.md diff --git a/ite-in-python/ite/__init__.py b/ite/__init__.py similarity index 100% rename from ite-in-python/ite/__init__.py rename to ite/__init__.py diff --git a/ite-in-python/ite/cost/__init__.py b/ite/cost/__init__.py similarity index 100% rename from ite-in-python/ite/cost/__init__.py rename to ite/cost/__init__.py diff --git a/ite-in-python/ite/cost/base_a.py b/ite/cost/base_a.py similarity index 100% rename from ite-in-python/ite/cost/base_a.py rename to ite/cost/base_a.py diff --git a/ite-in-python/ite/cost/base_c.py b/ite/cost/base_c.py similarity index 100% rename from ite-in-python/ite/cost/base_c.py rename to ite/cost/base_c.py diff --git a/ite-in-python/ite/cost/base_d.py b/ite/cost/base_d.py similarity index 100% rename from ite-in-python/ite/cost/base_d.py rename to ite/cost/base_d.py diff --git a/ite-in-python/ite/cost/base_h.py b/ite/cost/base_h.py similarity index 100% rename from ite-in-python/ite/cost/base_h.py rename to ite/cost/base_h.py diff --git a/ite-in-python/ite/cost/base_i.py b/ite/cost/base_i.py similarity index 100% rename from ite-in-python/ite/cost/base_i.py rename to ite/cost/base_i.py diff --git a/ite-in-python/ite/cost/base_k.py b/ite/cost/base_k.py similarity index 100% rename from ite-in-python/ite/cost/base_k.py rename to ite/cost/base_k.py diff --git a/ite-in-python/ite/cost/meta_a.py b/ite/cost/meta_a.py similarity index 100% rename from ite-in-python/ite/cost/meta_a.py rename to ite/cost/meta_a.py diff --git a/ite-in-python/ite/cost/meta_c.py b/ite/cost/meta_c.py similarity index 100% rename from ite-in-python/ite/cost/meta_c.py rename to ite/cost/meta_c.py diff --git a/ite-in-python/ite/cost/meta_d.py b/ite/cost/meta_d.py similarity index 100% rename from ite-in-python/ite/cost/meta_d.py rename to ite/cost/meta_d.py diff --git a/ite-in-python/ite/cost/meta_h.py b/ite/cost/meta_h.py similarity index 100% rename from ite-in-python/ite/cost/meta_h.py rename to ite/cost/meta_h.py diff --git a/ite-in-python/ite/cost/meta_h_cond.py b/ite/cost/meta_h_cond.py similarity index 100% rename from ite-in-python/ite/cost/meta_h_cond.py rename to ite/cost/meta_h_cond.py diff --git a/ite-in-python/ite/cost/meta_i.py b/ite/cost/meta_i.py similarity index 100% rename from ite-in-python/ite/cost/meta_i.py rename to ite/cost/meta_i.py diff --git a/ite-in-python/ite/cost/meta_i_cond.py b/ite/cost/meta_i_cond.py similarity index 100% rename from ite-in-python/ite/cost/meta_i_cond.py rename to ite/cost/meta_i_cond.py diff --git a/ite-in-python/ite/cost/meta_k.py b/ite/cost/meta_k.py similarity index 100% rename from ite-in-python/ite/cost/meta_k.py rename to ite/cost/meta_k.py diff --git a/ite-in-python/ite/cost/x_analytical_values.py b/ite/cost/x_analytical_values.py similarity index 100% rename from ite-in-python/ite/cost/x_analytical_values.py rename to ite/cost/x_analytical_values.py diff --git a/ite-in-python/ite/cost/x_factory.py b/ite/cost/x_factory.py similarity index 100% rename from ite-in-python/ite/cost/x_factory.py rename to ite/cost/x_factory.py diff --git a/ite-in-python/ite/cost/x_initialization.py b/ite/cost/x_initialization.py similarity index 100% rename from ite-in-python/ite/cost/x_initialization.py rename to ite/cost/x_initialization.py diff --git a/ite-in-python/ite/cost/x_kernel.py b/ite/cost/x_kernel.py similarity index 100% rename from ite-in-python/ite/cost/x_kernel.py rename to ite/cost/x_kernel.py diff --git a/ite-in-python/ite/cost/x_python_to_matlab.py b/ite/cost/x_python_to_matlab.py similarity index 100% rename from ite-in-python/ite/cost/x_python_to_matlab.py rename to ite/cost/x_python_to_matlab.py diff --git a/ite-in-python/ite/cost/x_verification.py b/ite/cost/x_verification.py similarity index 100% rename from ite-in-python/ite/cost/x_verification.py rename to ite/cost/x_verification.py diff --git a/ite-in-python/demos/analytical_values/demo_c_cross_entropy.py b/ite/demos/analytical_values/demo_c_cross_entropy.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_c_cross_entropy.py rename to ite/demos/analytical_values/demo_c_cross_entropy.py diff --git a/ite-in-python/demos/analytical_values/demo_d_bregman.py b/ite/demos/analytical_values/demo_d_bregman.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_bregman.py rename to ite/demos/analytical_values/demo_d_bregman.py diff --git a/ite-in-python/demos/analytical_values/demo_d_chi_square.py b/ite/demos/analytical_values/demo_d_chi_square.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_chi_square.py rename to ite/demos/analytical_values/demo_d_chi_square.py diff --git a/ite-in-python/demos/analytical_values/demo_d_hellinger.py b/ite/demos/analytical_values/demo_d_hellinger.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_hellinger.py rename to ite/demos/analytical_values/demo_d_hellinger.py diff --git a/ite-in-python/demos/analytical_values/demo_d_jensen_renyi.py b/ite/demos/analytical_values/demo_d_jensen_renyi.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_jensen_renyi.py rename to ite/demos/analytical_values/demo_d_jensen_renyi.py diff --git a/ite-in-python/demos/analytical_values/demo_d_kullback_leibler.py b/ite/demos/analytical_values/demo_d_kullback_leibler.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_kullback_leibler.py rename to ite/demos/analytical_values/demo_d_kullback_leibler.py diff --git a/ite-in-python/demos/analytical_values/demo_d_l2.py b/ite/demos/analytical_values/demo_d_l2.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_l2.py rename to ite/demos/analytical_values/demo_d_l2.py diff --git a/ite-in-python/demos/analytical_values/demo_d_mmd.py b/ite/demos/analytical_values/demo_d_mmd.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_mmd.py rename to ite/demos/analytical_values/demo_d_mmd.py diff --git a/ite-in-python/demos/analytical_values/demo_d_renyi.py b/ite/demos/analytical_values/demo_d_renyi.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_renyi.py rename to ite/demos/analytical_values/demo_d_renyi.py diff --git a/ite-in-python/demos/analytical_values/demo_d_sharma_mittal.py b/ite/demos/analytical_values/demo_d_sharma_mittal.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_sharma_mittal.py rename to ite/demos/analytical_values/demo_d_sharma_mittal.py diff --git a/ite-in-python/demos/analytical_values/demo_d_tsallis.py b/ite/demos/analytical_values/demo_d_tsallis.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_d_tsallis.py rename to ite/demos/analytical_values/demo_d_tsallis.py diff --git a/ite-in-python/demos/analytical_values/demo_h_phi.py b/ite/demos/analytical_values/demo_h_phi.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_h_phi.py rename to ite/demos/analytical_values/demo_h_phi.py diff --git a/ite-in-python/demos/analytical_values/demo_h_renyi.py b/ite/demos/analytical_values/demo_h_renyi.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_h_renyi.py rename to ite/demos/analytical_values/demo_h_renyi.py diff --git a/ite-in-python/demos/analytical_values/demo_h_shannon.py b/ite/demos/analytical_values/demo_h_shannon.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_h_shannon.py rename to ite/demos/analytical_values/demo_h_shannon.py diff --git a/ite-in-python/demos/analytical_values/demo_h_shannon_cond.py b/ite/demos/analytical_values/demo_h_shannon_cond.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_h_shannon_cond.py rename to ite/demos/analytical_values/demo_h_shannon_cond.py diff --git a/ite-in-python/demos/analytical_values/demo_h_sharma_mittal.py b/ite/demos/analytical_values/demo_h_sharma_mittal.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_h_sharma_mittal.py rename to ite/demos/analytical_values/demo_h_sharma_mittal.py diff --git a/ite-in-python/demos/analytical_values/demo_h_tsallis.py b/ite/demos/analytical_values/demo_h_tsallis.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_h_tsallis.py rename to ite/demos/analytical_values/demo_h_tsallis.py diff --git a/ite-in-python/demos/analytical_values/demo_i_renyi.py b/ite/demos/analytical_values/demo_i_renyi.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_i_renyi.py rename to ite/demos/analytical_values/demo_i_renyi.py diff --git a/ite-in-python/demos/analytical_values/demo_i_shannon.py b/ite/demos/analytical_values/demo_i_shannon.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_i_shannon.py rename to ite/demos/analytical_values/demo_i_shannon.py diff --git a/ite-in-python/demos/analytical_values/demo_i_shannon_cond.py b/ite/demos/analytical_values/demo_i_shannon_cond.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_i_shannon_cond.py rename to ite/demos/analytical_values/demo_i_shannon_cond.py diff --git a/ite-in-python/demos/analytical_values/demo_k_ejr1.py b/ite/demos/analytical_values/demo_k_ejr1.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_k_ejr1.py rename to ite/demos/analytical_values/demo_k_ejr1.py diff --git a/ite-in-python/demos/analytical_values/demo_k_ejr2.py b/ite/demos/analytical_values/demo_k_ejr2.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_k_ejr2.py rename to ite/demos/analytical_values/demo_k_ejr2.py diff --git a/ite-in-python/demos/analytical_values/demo_k_ejt1.py b/ite/demos/analytical_values/demo_k_ejt1.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_k_ejt1.py rename to ite/demos/analytical_values/demo_k_ejt1.py diff --git a/ite-in-python/demos/analytical_values/demo_k_ejt2.py b/ite/demos/analytical_values/demo_k_ejt2.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_k_ejt2.py rename to ite/demos/analytical_values/demo_k_ejt2.py diff --git a/ite-in-python/demos/analytical_values/demo_k_expected.py b/ite/demos/analytical_values/demo_k_expected.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_k_expected.py rename to ite/demos/analytical_values/demo_k_expected.py diff --git a/ite-in-python/demos/analytical_values/demo_k_prob_product.py b/ite/demos/analytical_values/demo_k_prob_product.py similarity index 100% rename from ite-in-python/demos/analytical_values/demo_k_prob_product.py rename to ite/demos/analytical_values/demo_k_prob_product.py diff --git a/ite-in-python/demos/other/demo_a_independence.py b/ite/demos/other/demo_a_independence.py similarity index 100% rename from ite-in-python/demos/other/demo_a_independence.py rename to ite/demos/other/demo_a_independence.py diff --git a/ite-in-python/demos/other/demo_d_equality.py b/ite/demos/other/demo_d_equality.py similarity index 100% rename from ite-in-python/demos/other/demo_d_equality.py rename to ite/demos/other/demo_d_equality.py diff --git a/ite-in-python/demos/other/demo_i_independence.py b/ite/demos/other/demo_i_independence.py similarity index 100% rename from ite-in-python/demos/other/demo_i_independence.py rename to ite/demos/other/demo_i_independence.py diff --git a/ite-in-python/demos/other/demo_incomplete_cholesky.py b/ite/demos/other/demo_incomplete_cholesky.py similarity index 100% rename from ite-in-python/demos/other/demo_incomplete_cholesky.py rename to ite/demos/other/demo_incomplete_cholesky.py diff --git a/ite-in-python/demos/other/demo_k_positive_semidefinite.py b/ite/demos/other/demo_k_positive_semidefinite.py similarity index 100% rename from ite-in-python/demos/other/demo_k_positive_semidefinite.py rename to ite/demos/other/demo_k_positive_semidefinite.py diff --git a/ite-in-python/doc/ite_documentation.txt b/ite/doc/ite_documentation.txt similarity index 100% rename from ite-in-python/doc/ite_documentation.txt rename to ite/doc/ite_documentation.txt diff --git a/ite-in-python/ite/shared.py b/ite/shared.py similarity index 100% rename from ite-in-python/ite/shared.py rename to ite/shared.py