From 7eb50adc342a5d2757cd209b3a8f2f297a4ad2fe Mon Sep 17 00:00:00 2001 From: MathieuCarriere Date: Mon, 4 Nov 2019 11:27:19 -0500 Subject: fixes of Marc's comments --- src/python/example/ex_diagrams.py | 57 ++++++++++++++++++++++++++++----------- 1 file changed, 41 insertions(+), 16 deletions(-) (limited to 'src/python/example') diff --git a/src/python/example/ex_diagrams.py b/src/python/example/ex_diagrams.py index a3efbac9..f12304bd 100755 --- a/src/python/example/ex_diagrams.py +++ b/src/python/example/ex_diagrams.py @@ -3,25 +3,33 @@ import matplotlib.pyplot as plt import numpy as np from sklearn.kernel_approximation import RBFSampler +from sklearn.preprocessing import MinMaxScaler -from gudhi.sktda import Landscape, Silhouette, BettiCurve, ComplexPolynomial,\ +from gudhi.sktda import DiagramSelector, Clamping, Landscape, Silhouette, BettiCurve, ComplexPolynomial,\ TopologicalVector, DiagramScaler, BirthPersistenceTransform,\ - PersistenceImage, PersistenceWeightedGaussianKernel,\ + PersistenceImage, PersistenceWeightedGaussianKernel, Entropy, \ PersistenceScaleSpaceKernel, SlicedWassersteinDistance,\ SlicedWassersteinKernel, BottleneckDistance, PersistenceFisherKernel -D = np.array([[0.,4.],[1.,2.],[3.,8.],[6.,8.]]) +D = np.array([[0.,4.],[1.,2.],[3.,8.],[6.,8.], [0., np.inf], [5., np.inf]]) +diags = [D] + +diags = DiagramSelector(use=True, point_type="finite").fit_transform(diags) +diags = DiagramScaler(use=True, scalers=[([0,1], MinMaxScaler())]).fit_transform(diags) +diags = DiagramScaler(use=True, scalers=[([1], Clamping(limit=.9))]).fit_transform(diags) + +D = diags[0] plt.scatter(D[:,0],D[:,1]) -plt.plot([0.,10.],[0.,10.]) +plt.plot([0.,1.],[0.,1.]) +plt.title("Test Persistence Diagram for vector methods") plt.show() -diags = [D] - -LS = Landscape(resolution = 1000) +LS = Landscape(resolution=1000) L = LS.fit_transform(diags) plt.plot(L[0][:1000]) plt.plot(L[0][1000:2000]) plt.plot(L[0][2000:3000]) +plt.title("Landscape") plt.show() def pow(n): @@ -30,11 +38,13 @@ def pow(n): SH = Silhouette(resolution=1000, weight=pow(2)) sh = SH.fit_transform(diags) plt.plot(sh[0]) +plt.title("Silhouette") plt.show() BC = BettiCurve(resolution=1000) bc = BC.fit_transform(diags) plt.plot(bc[0]) +plt.title("Betti Curve") plt.show() CP = ComplexPolynomial(threshold=-1, F="T") @@ -45,20 +55,35 @@ TV = TopologicalVector(threshold=-1) tv = TV.fit_transform(diags) print("Topological vector is " + str(tv[0,:])) -#diagsT = DiagramPreprocessor(use=True, scalers=[([0,1], BirthPersistenceTransform())]).fit_transform(diags) -#PI = PersistenceImage(bandwidth=1., weight=lambda x: x[1], im_range=[0,10,0,10], resolution=[100,100]) -#pi = PI.fit_transform(diagsT) -#plt.imshow(np.flip(np.reshape(pi[0], [100,100]), 0)) -#plt.show() +PI = PersistenceImage(bandwidth=.1, weight=lambda x: x[1], im_range=[0,1,0,1], resolution=[100,100]) +pi = PI.fit_transform(diags) +plt.imshow(np.flip(np.reshape(pi[0], [100,100]), 0)) +plt.title("Persistence Image") +plt.show() -plt.scatter(D[:,0],D[:,1]) -D = np.array([[1.,5.],[3.,6.],[2.,7.]]) -plt.scatter(D[:,0],D[:,1]) -plt.plot([0.,10.],[0.,10.]) +ET = Entropy(mode="scalar") +et = ET.fit_transform(diags) +print("Entropy statistic is " + str(et[0,:])) + +ET = Entropy(mode="vector", normalized=False) +et = ET.fit_transform(diags) +plt.plot(et[0]) +plt.title("Entropy function") plt.show() +D = np.array([[1.,5.],[3.,6.],[2.,7.]]) diags2 = [D] +diags2 = DiagramScaler(use=True, scalers=[([0,1], MinMaxScaler())]).fit_transform(diags2) + +D = diags[0] +plt.scatter(D[:,0],D[:,1]) +D = diags2[0] +plt.scatter(D[:,0],D[:,1]) +plt.plot([0.,1.],[0.,1.]) +plt.title("Test Persistence Diagrams for kernel methods") +plt.show() + def arctan(C,p): return lambda x: C*np.arctan(np.power(x[1], p)) -- cgit v1.2.3