From 887be26f2946df852bfe9281e7a60350a9c3248f Mon Sep 17 00:00:00 2001 From: SamuelDiai Date: Thu, 1 Apr 2021 16:31:10 +0200 Subject: [PATCH] Add animals --- animals.py | 38 ++++++++++++++++++++++++++++++++++++++ data/animals_data.npy | Bin 0 -> 13592 bytes data/animals_features.npy | Bin 0 -> 9104 bytes data/animals_name.npy | Bin 0 -> 1316 bytes 4 files changed, 38 insertions(+) create mode 100644 animals.py create mode 100644 data/animals_data.npy create mode 100644 data/animals_features.npy create mode 100644 data/animals_name.npy diff --git a/animals.py b/animals.py new file mode 100644 index 0000000..f40544a --- /dev/null +++ b/animals.py @@ -0,0 +1,38 @@ +import os +import numpy as np +import networkx as nx +import matplotlib.pyplot as plt +from sklearn.datasets import make_moons, make_blobs +from .SGL import LearnGraphTopology +plots_dir = './plots' +if not os.path.exists(plots_dir): + os.makedirs(plots_dir) + +def animals(k, n_iter, alpha, beta): + X_animals = np.load('./data/animals_data.npy') + animals_names = np.load('./data/animals_name.npy') + animals_features = np.load('./data/animals_features.npy') + #from sgll.sgl import LearnGraphTopolgy + X = np.array(X_animals) + + #SCM = np.dot((X - np.mean(X, axis = 0).reshape(1, -1)), (X - np.mean(X, axis = 0).reshape(1, -1)).T) + SCM = np.dot(X, X.T) / X.shape[0] + SCM = 1/3 * np.eye(SCM.shape[0]) + SCM + + # estimate underlying graph + sgl = LearnGraphTopolgy(SCM, n_iter=n_iter, alpha=alpha, beta = beta) + graph = sgl.learn_k_component_graph(k=k) + + A = graph['adjacency'] + G = nx.from_numpy_matrix(A) + + mapping = {} + for i in range(animals_names.shape[0]): + mapping[i] = animals_names[i, 0] + + G = nx.relabel_nodes(G, mapping) + fig = plt.figure(figsize=(15,15)) + nx.draw(G, with_labels=True, font_weight='bold') + plt.title("Learned graph for the animal dataset" % dataset) + filename = os.path.join(plots_dir, 'animals', 'graph_%s_%s_%.3f_%.3f' % (k , n_iter, alpha, beta)) + fig.savefig(filename) diff --git a/data/animals_data.npy b/data/animals_data.npy new file mode 100644 index 0000000000000000000000000000000000000000..55782b71539a5e639ee7af7c25ecc57d301aec56 GIT binary patch literal 13592 zcmbV}y=rDv7=<&fSCK9XDb%qNYdgip!b*Y@Q4nWH#74XdZ`drtV;)xCz0dhP@XcE9 z`rCo|=iBeU`R<1|SASmpb@T52@u!EIFRyRD`t^&O+v}U3-#`5EaQFL^$8X=>UVrxK=bzkO|9$=czK`BqU0wC>N&4@@L&)u~?|5`pUiY1Y zgU+7e>A7o8zcubg@|WVYgT_{FYuv_U`|ds)AU-(hM_T;OaD(g{k39S4Y_!JRm^>QY zm1ZCAt~ndl!u#i(vy~X2+a68amuK<)Y>5 z+_U=nU-s=xn*H$3aD&cIn*H5g=bY``zNhXP%{%6Ft%dh5IcxNebbO<^-;M4Mk9YB` zqk%iGGpidtxY|Q^cH&1l`{ulDE&S}yeKx@9??fX5qE9$wqFIN7(@r#c&Y7=z=ww0k z6;8QmE4_D|qjv_g;~aPI_sx4?`@UBh>+nYJgvaNHM~6E&Y1UW1H&(pgCpT?cqi5uA zYOQr{-ZJ_P>$^_pRyW(=F6T_RZ}(QZGe`Vr!+!JJ{PGUmIO);yITybAF7+fSN+RuITbJtn)Gq~zS&j&tV&;L#uK3)(WkGl~s=#QMWa5h(d z=liDT9Wr>icRsll_MUTiEA+ecoV9N~9Iy5EoNJyN4fGxwh{qj-RZ75aTLt@TYVc*aY{Ip63j+`ZurJo(j^jC0&*VEWC;vdw*jyF8weciEjhG_twP zr<;yF-f*`yyhe7&@AmCYyf?U4Z?ZAvtnK);K_1T-FW;2GdrrLkU$jo2T%+@=cgQq) zYwG&#mG2GmyyF`U#G}tXzHf7SX!Ox1bjJRU)8X&oHlFdOztbDxyB+(^nX_ljoDFN? z{3f4GaMfj_ksjNtyLZWrCzS^?B z^d^|Xv>9z;&w~l(eH}%{-%JIHC)>`*_Y?HCq8=YBY zt(#AKXvsMX2c3gAk_GYmMmMf9E8X32a^T8uotqxm`gC_TnP~pG*ZIE58redl1GYZh zWWgze)<_3j`K|YTNq@?=w!7QQ-xAF~|9zeB+gUhU+-Gsu<6Y33XSH;uto6x{w$jt} zM-H?%@zpk2@0jC*M?2(#z0=+Hr;hg~&IafWYwn_h_I8}S5x(o;kqyG}8u7_;ljC0b z)hl=n{+mf zM_cyI*$3@~U!t$FyPfI1X$K8-@2uv|S-#qy^lYMoyLYBcYra?9Z;%1~H#xV{$z_8b zb9^H?Yt5Z8?;JOo;EIzClCjpjGu|dUW#a9!cpzJ#H_h>b)|=7J+#K7%;ckiy_q|ne^Ul+wSzt(8XG}t=47IwgZALT_FH3X%AMI+^;Wt! z;g@9TfR}VH$+8c+YmN`@yeV@wpPYYe1$)Eyj*n#fL3g5| o!?{;E^v3SRpR}VM9nkqnYyT+YJiI%7lWRQ6**DKlZfo4&zcWf7s{jB1 literal 0 HcmV?d00001 diff --git a/data/animals_features.npy b/data/animals_features.npy new file mode 100644 index 0000000000000000000000000000000000000000..3f364e16432ea9efc2ed8b8d4af68c4b1c294a36 GIT binary patch literal 9104 zcmb`~L2n#I5Cvd!VAr6Q$HxQQ`I3bfb1QFt3haf=w3jQ$lt^A^Pd%Qc- z>ypaT+tdB(^{cAh^?%@4IXSr~zbS9!Z_58De_Q@@ zx%n9zam8rm@Qts_;a`@w@}J7hdG|}X_)GQ>E}rkovlot7t^7s#RXO~ZLogMycO^mo- z7FH{NY+QMROIvwL9jj^l*V@SULv2irc%~j;wsKFg)y%%08F9lGPkim&!n2m|Y{bYE>IzL|N5py`Vay8-H_|sYJLor9b$(Q}`yl>@jel1VD8t%0bH~OY` zQxC0BjGf8-AjUo$arIj`9Xjh4+$EkfJ%U?u6%E4Kyz|W1s6((}riSHEKDXEsE<8AL zWX#3e(jV5^11EZTA|UzUoeY;pxtL48AmNvy8_XU{=aG}#afw}1A8q9OMZIa|;=!T!OfK=V zuiZX#W_<94J7YcWMFF&O8s?1o?iVj-ui-&k!i5O~CN0u4HC%0L@+Jr3;M~gdTNWqZ z1J3Ck4#~xsH+|>5yCUE9c(?M@wfAuLnKg-*{NaELUf$2x8Xc?=+wT)`a@HC?Xx98* z?oP9p4#)iNt?fJO>mmB39_Zk`oNfIcTB8Ge*w!Y8hiand`&aFwpZy%x?C-QSeAQHc z?}(RLkrRD0+E~Bo0eky9Zrpe1^N5?=rKZDEF4xpo;-wG!+HCbQ`l^HE%6Xk5IoVgs z-i2HGP5;81y?blx?mmQp%a(K6yU%cQuJJzFw`a{e^&%(fVY)sBZy0JHXE}Tf%!1k7 zsp*Y<`L%Y7rDj@fO79q(PcFry*P*+-mVC5u?R%@$+u$10DYYnud>k@*2IH7|9pj9B zocjT%=rHbC^LeS?;OP~5&elhtH$8%9?p^q^w#3(+mUwiTG4&wVzAK!$m5U{Z$K)}* z;K5a=;)o~KtS#vPm$qW&eimm-4tu_IRR?m%kKx2r*Y z{YKkXj;pb_Vr{h%m&S15`Q4uXf9Nusw{V3)2bg$=^A>HwZM-M-vRZ59)`;n|@BB5^ z=S@$*gX4*JYR}vjdx)=i;hVctozR#bhqQJs7`Y2tje{fR8jMv6+3cV+H0&#f`WehW74YK;!=jjcA~ x(po*i!rM4^MR<#snrk&yz?8*$Ua`7ND04i;bAZzC=o`@?NbP1W*y_CJPuyx0H$ literal 0 HcmV?d00001 diff --git a/data/animals_name.npy b/data/animals_name.npy new file mode 100644 index 0000000000000000000000000000000000000000..829ae84f436faee8c2c807d9b831ac89db4239aa GIT binary patch literal 1316 zcmbW0PfNo<5XIxwPqDWsc#_zrR;*1;sv_d2@C*BXAp^^@x%l9v z**BA!x3k;dtI2S5zm-|4KVr&W63(!1QVek}0lgAyk$NFcB#`qN2D~*n z^nVqpfwvH667WJVa_24mp42hV)M9TTsAHa~M=wZC!%#2eyo+7?x>4+{%`sni^Znmy zP3)=FiHEq9Ko0$wa||{gJDXU}sYGhfs|$Auki&kNUkvPvJunaQVz6Gs?f$R_-~U)^ zdOeC^Oj3isp7g;pwfwWxvVni5Qz_ z#4k1Ii4T5#9BILRAbTgD9D33pAM`RG==4PAT=?!wqz?6CUL`je=xOt1KHUEhBMCM$ t^KRc*E_244&DdszZ>!7wp*~vId0i{Ue+JLgppSj8*9P1ln=?5v`~lF~W4QnT literal 0 HcmV?d00001