From 68e491c4a22035e3722193902afc8a7b463a7e93 Mon Sep 17 00:00:00 2001 From: Christos Choutouridis Date: Sat, 5 Jul 2025 19:40:31 +0300 Subject: [PATCH] HW03: implementation of demo1 and 2 --- .gitmodules | 3 + HW03/.gitignore | 5 + HW03/dip-2025-hw3-v0.1.pdf | Bin 0 -> 147068 bytes HW03/report/AUThReport | 1 + HW03/scripts/demo1.py | 55 ++++++ HW03/scripts/demo2.py | 79 +++++++++ HW03/scripts/dip_hw_3.mat | Bin 0 -> 121464 bytes HW03/scripts/image_to_graph.py | 128 ++++++++++++++ HW03/scripts/plots/demo1_k2.png | Bin 0 -> 10468 bytes HW03/scripts/plots/demo1_k3.png | Bin 0 -> 11605 bytes HW03/scripts/plots/demo1_k4.png | Bin 0 -> 12842 bytes .../scripts/plots/demo2_d2a_k2_Normalized.png | Bin 0 -> 6674 bytes .../plots/demo2_d2a_k2_Unnormalized.png | Bin 0 -> 6674 bytes .../scripts/plots/demo2_d2a_k3_Normalized.png | Bin 0 -> 6726 bytes .../plots/demo2_d2a_k3_Unnormalized.png | Bin 0 -> 6726 bytes .../scripts/plots/demo2_d2a_k4_Normalized.png | Bin 0 -> 7946 bytes .../plots/demo2_d2a_k4_Unnormalized.png | Bin 0 -> 7027 bytes .../scripts/plots/demo2_d2b_k2_Normalized.png | Bin 0 -> 6961 bytes .../plots/demo2_d2b_k2_Unnormalized.png | Bin 0 -> 6773 bytes .../scripts/plots/demo2_d2b_k3_Normalized.png | Bin 0 -> 7360 bytes .../plots/demo2_d2b_k3_Unnormalized.png | Bin 0 -> 7188 bytes .../scripts/plots/demo2_d2b_k4_Normalized.png | Bin 0 -> 7592 bytes .../plots/demo2_d2b_k4_Unnormalized.png | Bin 0 -> 7122 bytes HW03/scripts/requirements.txt | 5 + HW03/scripts/spectral_clustering.py | 164 ++++++++++++++++++ 25 files changed, 440 insertions(+) create mode 100644 HW03/.gitignore create mode 100644 HW03/dip-2025-hw3-v0.1.pdf create mode 160000 HW03/report/AUThReport create mode 100644 HW03/scripts/demo1.py create mode 100644 HW03/scripts/demo2.py create mode 100644 HW03/scripts/dip_hw_3.mat create mode 100644 HW03/scripts/image_to_graph.py create mode 100644 HW03/scripts/plots/demo1_k2.png create mode 100644 HW03/scripts/plots/demo1_k3.png create mode 100644 HW03/scripts/plots/demo1_k4.png create mode 100644 HW03/scripts/plots/demo2_d2a_k2_Normalized.png create mode 100644 HW03/scripts/plots/demo2_d2a_k2_Unnormalized.png create mode 100644 HW03/scripts/plots/demo2_d2a_k3_Normalized.png create mode 100644 HW03/scripts/plots/demo2_d2a_k3_Unnormalized.png create mode 100644 HW03/scripts/plots/demo2_d2a_k4_Normalized.png create mode 100644 HW03/scripts/plots/demo2_d2a_k4_Unnormalized.png create mode 100644 HW03/scripts/plots/demo2_d2b_k2_Normalized.png create mode 100644 HW03/scripts/plots/demo2_d2b_k2_Unnormalized.png create mode 100644 HW03/scripts/plots/demo2_d2b_k3_Normalized.png create mode 100644 HW03/scripts/plots/demo2_d2b_k3_Unnormalized.png create mode 100644 HW03/scripts/plots/demo2_d2b_k4_Normalized.png create mode 100644 HW03/scripts/plots/demo2_d2b_k4_Unnormalized.png create mode 100644 HW03/scripts/requirements.txt create mode 100644 HW03/scripts/spectral_clustering.py diff --git a/.gitmodules b/.gitmodules index cf6262b..72119e7 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "HW01/report/AUThReport"] path = HW01/report/AUThReport url = ssh://git@git.hoo2.net:222/hoo2/AUThReport.git +[submodule "HW03/report/AUThReport"] + path = HW03/report/AUThReport + url = https://git.hoo2.net/hoo2/AUThReport.git diff --git a/HW03/.gitignore b/HW03/.gitignore new file mode 100644 index 0000000..303b4a8 --- /dev/null +++ b/HW03/.gitignore @@ -0,0 +1,5 @@ +# Python execution related +__pycache__/ + +# IDE files +.idea/ diff --git a/HW03/dip-2025-hw3-v0.1.pdf b/HW03/dip-2025-hw3-v0.1.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3d11825512e0243473b46514bd9ec033f138e01f GIT binary patch literal 147068 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 +# date: 05/07/2025 +# + +try: + # Testing requirements + import numpy as np + from scipy.io import loadmat + import matplotlib.pyplot + # Project imports + from spectral_clustering import * +except ImportError as e: + print("Missing package:", e) + print("Run: pip install -r requirements.txt") + exit(1) + + +def run_demo1(): + data = loadmat("dip_hw_3.mat") + A = data["d1a"] + print("Loaded affinity matrix d1a with shape:", A.shape) + + for k in [2, 3, 4]: + print(f"\n=== Spectral Clustering on d1a with k={k} ===") + + labels = spectral_clustering(A, k) + print("Cluster labels:") + print(labels) + + # Optional: Visualize cluster assignment as bar + matplotlib.pyplot.figure(figsize=(6, 1.5)) + matplotlib.pyplot.title(f"Cluster assignments (k={k})") + matplotlib.pyplot.plot(labels, 'o-', markersize=8, label='cluster id') + matplotlib.pyplot.yticks(np.arange(k)) + matplotlib.pyplot.xlabel("Node index") + matplotlib.pyplot.tight_layout() + matplotlib.pyplot.savefig(f"plots/demo1_k{k}.png") + print(f"Saved: plots/demo1_k{k}.png") + + +if __name__ == '__main__': + run_demo1() + # Uncomment to compare with sklearn.cluster.spectral_clustering -- With normalized Laplacian btw! + #print("") + #for k in [2, 3, 4]: + # compare_with_sklearn(k, False) \ No newline at end of file diff --git a/HW03/scripts/demo2.py b/HW03/scripts/demo2.py new file mode 100644 index 0000000..5c09bdc --- /dev/null +++ b/HW03/scripts/demo2.py @@ -0,0 +1,79 @@ +# +# Demo 2: Spectral clustering on RGB images (d2a, d2b) +# +# Combines image_to_graph + spectral_clustering +# +# author: Christos Choutouridis +# date: 05/07/2025 +# + +try: + import numpy as np + import matplotlib.pyplot as plt + from scipy.io import loadmat + from image_to_graph import image_to_graph + from spectral_clustering import spectral_clustering +except ImportError as e: + print("Missing package:", e) + exit(1) + + +def plot_clusters_on_image(image: np.ndarray, cluster_idx: np.ndarray, k: int, title: str, fname: str): + """ + Overlays clustering result on the image using a colormap. + + Parameters: + ----------- + image : np.ndarray of shape (M, N, 3) + Original RGB image. + + cluster_idx : np.ndarray of shape (M*N,) + Flattened array of cluster labels. + k : int + Number of clusters. + title : str + Title for the plot. + fname : str + Output filename to save. + """ + M, N, _ = image.shape + clustered_img = cluster_idx.reshape(M, N) + + plt.figure(figsize=(4, 4)) + plt.imshow(clustered_img, cmap='tab10', vmin=0, vmax=k-1) + plt.title(title) + plt.axis('off') + plt.tight_layout() + plt.savefig(fname) + print(f"Saved: {fname}") + plt.close() + + +def run_demo2(normalized: bool = False): + data = loadmat("dip_hw_3.mat") + # Select string + normalized_str = "Normalized" if normalized else "Unnormalized" + + for name in ["d2a", "d2b"]: + img = data[name] + print(f"\n=== {normalized_str} test for Image {name} - shape: {img.shape} ===") + + affinity_mat = image_to_graph(img) + print("Affinity matrix computed.") + + for k in [2, 3, 4]: + print(f" Clustering with k={k}...") + labels = spectral_clustering(affinity_mat, k=k, normalized=normalized) + + plot_clusters_on_image( + img, + labels, + k, + title=f"{name} spectral clustering (k={k})", + fname=f"plots/demo2_{name}_k{k}_{normalized_str}.png" + ) + + +if __name__ == '__main__': + run_demo2(False) + run_demo2(True) diff --git a/HW03/scripts/dip_hw_3.mat b/HW03/scripts/dip_hw_3.mat new file mode 100644 index 0000000000000000000000000000000000000000..781bbb74a9edd2ef924b0ad1dac94397fee3eb15 GIT binary patch literal 121464 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 SmjeQKb3dE>Vo`qt@BagOug#PI literal 0 HcmV?d00001 diff --git a/HW03/scripts/image_to_graph.py b/HW03/scripts/image_to_graph.py new file mode 100644 index 0000000..42f7c5c --- /dev/null +++ b/HW03/scripts/image_to_graph.py @@ -0,0 +1,128 @@ +# +# Image to graph utility +# +# For the given data we have: +# dip_hw_3.mat["d1a"] # [MN x MN] affinity matrix +# dip_hw_3.mat["d2a"] # [M x N x 3] RGB image +# dip_hw_3.mat["d2b"] # [M x N x 3] RGB image +# +# +# author: Christos Choutouridis +# date: 05/07/2025 +# + +try: + import numpy as np + from numpy._typing import NDArray + from sklearn.metrics import pairwise_distances + + # Testing requirements + import matplotlib.pyplot + from scipy.io import loadmat +except ImportError as e: + print("Missing package: ", e) + print("Run: pip install -r requirements.txt to install.") + exit(1) + +def image_to_graph( + img_array: NDArray[np.floating] +) -> NDArray[np.float64]: + """ + Converts an input image into a fully connected graph represented + by an affinity matrix. + + Parameters: + ---------- + img_array : np.ndarray of shape (M, N, C), dtype=float + The input image with C channels (e.g., 3 for RGB), + with values normalized in [0, 1]. + + Returns: + ------- + affinity_mat : np.ndarray of shape (M*N, M*N), dtype=float + Symmetric affinity matrix representing the fully connected graph. + A(i, j) = 1 / ||pixel_i - pixel_j||_2 + """ + if not np.issubdtype(img_array.dtype, np.floating): + raise ValueError("img_array must be of float type with values in [0, 1].") + + M, N, C = img_array.shape + pixels = img_array.reshape(-1, C) # shape (M*N, C) + + # Compute Euclidean distances between all pixel vectors + distances = pairwise_distances(pixels, metric='euclidean') # shape (MN, MN) + + # Avoid division by zero on the diagonal + np.fill_diagonal(distances, 1e-10) + + # Affinity = 1 / e^d(i,j) + affinity_mat = 1.0 / np.exp(distances) + + return affinity_mat + + + +def _test_1(plot : bool = False): + """ + Test image_to_graph() with a small 4x4 RGB random value array + """ + print(f" === Test 1 === ") + print(f"") + # Small 4x4 RGB with random values at [0, 1] + img_array = np.random.rand(4, 4, 3).astype(np.float32) + + # affinity matrix calculation + A = image_to_graph(img_array) + + # Print specs + print("Shape of affinity matrix:", A.shape) # (16, 16) + print("Is symmetric:", np.allclose(A, A.T)) # True + print("Max value:", np.max(A)) + print("Min value:", np.min(A)) + + if plot: + matplotlib.use("TkAgg") + matplotlib.pyplot.imshow(A, cmap='hot') + matplotlib.pyplot.colorbar() + matplotlib.pyplot.title("Affinity Matrix Heatmap") + matplotlib.pyplot.show() + + +def _test_2(plot : bool = False): + """ + Test image_to_graph() with d2b matrix + """ + print(f" === Test 2 === ") + print(f"") + + data = loadmat("dip_hw_3.mat") + img_array = data["d2b"] # shape (M, N, 3), dtype float, values in [0, 1] + + # Check shape and type + print("Input image shape:", img_array.shape) + print("dtype:", img_array.dtype) + + # affinity matrix calculation + A = image_to_graph(img_array) + + # Print specs + print("Affinity matrix shape:", A.shape) + print("Is symmetric:", np.allclose(A, A.T)) + print("Max value:", np.max(A)) + print("Min value:", np.min(A)) + + if plot: + matplotlib.use("TkAgg") + matplotlib.pyplot.imshow(A, cmap='hot') + matplotlib.pyplot.title("Affinity Matrix Heatmap") + matplotlib.pyplot.colorbar() + matplotlib.pyplot.show() + + +if __name__ == '__main__': + # If you have TkAgg you can pass True, otherwise pass False + _test_1(True) + _test_2(True) + + + diff --git a/HW03/scripts/plots/demo1_k2.png b/HW03/scripts/plots/demo1_k2.png new file mode 100644 index 0000000000000000000000000000000000000000..3fac95b7c5171dcb58bad494357036d855151c43 GIT binary patch literal 10468 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 literal 0 HcmV?d00001 diff --git a/HW03/scripts/plots/demo1_k4.png b/HW03/scripts/plots/demo1_k4.png new file mode 100644 index 0000000000000000000000000000000000000000..039936932c4e4b4fb4378bdce940e9eae03bc740 GIT binary patch literal 12842 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 kO8)3&2r(n( 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 GNB;{fj@54f literal 0 HcmV?d00001 diff --git a/HW03/scripts/plots/demo2_d2a_k2_Unnormalized.png b/HW03/scripts/plots/demo2_d2a_k2_Unnormalized.png new file mode 100644 index 0000000000000000000000000000000000000000..303b34af759466a8ca4829cc42af070875c82038 GIT binary patch literal 6674 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 GNB;{fj@54f literal 0 HcmV?d00001 diff --git a/HW03/scripts/plots/demo2_d2a_k3_Normalized.png b/HW03/scripts/plots/demo2_d2a_k3_Normalized.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5b644f454175c24ca4fcb6ef1b15fc6565b4b3 GIT binary patch literal 6726 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 z%0A~2Wwn8yQ?H;>6xsBYn1;m1dUrSanJ@EX7$4a;&8mlFzR~BMA_Vn1W(fJ4?*EWG ztzq)RsB*{L=v&rsqaIehZOl&$vMbuFZpfrfvs$C4w=HkIQe(o>bM4Mre%ogjW?1Vw z*{5Da^^e@xl8wG{ptjtOc{jO!4irYLsxgW2(0{K2|C68Cy_+gCklPXJbsztaRJy@t ZI_JOMGx-DlA%;NcY8sv|*7)t_zX7d=2Lb>9 literal 0 HcmV?d00001 diff --git a/HW03/scripts/plots/demo2_d2b_k2_Unnormalized.png b/HW03/scripts/plots/demo2_d2b_k2_Unnormalized.png new file mode 100644 index 0000000000000000000000000000000000000000..56e3cccc25d81f1618c02f8736f1262b088010be GIT binary patch literal 6773 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 literal 0 HcmV?d00001 diff --git a/HW03/scripts/plots/demo2_d2b_k4_Unnormalized.png b/HW03/scripts/plots/demo2_d2b_k4_Unnormalized.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4338a3b6dc299a65238415e42abcd4550e4fa9 GIT binary patch literal 7122 zcmbtZcTm&&vkeF;qH-jv^H{b7mcF#F`c5_cx`@)WGyxR~6#14&% z=k*Z?mWRyO*3IxvV3S-c{84mQzwB<{Y~zl#aTckQsJwX2(*vy-&c ziQ`hz#}40gcfaMPh(tR6_Z3pkuC_=U;fip$3&*XCSKJT?E-U7XB~K;S4uLqJta1LV zq1V$HqW3MM3Hm##P7;EH?Ofo++mb?T)&{Rb!ZVKqo?{IU?iLys*8gzO#`R>bimstCkUwylWfy9gFU;$Mdmh&`-q zh^yxU5eTiVe<1=nes@t8>kS(laZ%Ct<&MV2@wac^F88Oea1Iv^wz-WgejhL>8Z6jW zQc}Wu^2Wuu8OA7Mz3QBrT7~C~DW&v~lFwwg1U|1++5605|8??U1;z-QNjR)3{^GH; z?ff97SWH3T%83&v?E9am;~Q7(+Y(Qxv9q%q5gSl*-^)7esbg=9h>_w|?o;~KHa5l{ z^5U)CIx0nYi#qbkba8Psoibcwke;6Y1|1g3ciQ-XoWrLr{C>K^xI)LR4^huCeNvIU zvZ!_irL`ZglH?qd#>U2EuD#w$#E#;a&rl0obC~MNPCDgsEx4k|aY(L#`t|@f!T)e5 z7eC>Nb7TIOSD_{!)`jhct6jEnaEL8dOite1@%M4n?wm`7U(vnVY!`*YqM`^nm!8DN z#AI^pIV!58WI<_SG$pxWM@B#W7U zGP?E;969{KgTB_s(sY6y;n`zF&+n5}Yw*B0AxC0uFQr1-ww)Qur6+Pmng2w(cPP;& z`%A88FOojLxP#Kv>_!GGYxWkJ=s@myk6#V!ps)4!UtXB*(`iXSnvmL)xp{dDcJe7s z(rKeK3}uNr&U@PPng2qeWj?yW$G$r!G9_T$n|t5Bm1icGFXttoeKbta-q}!iZf@>u zW!#FF^AR?7_9-~F&s>{4_ujo(X=#TkIG+ybOi8oK$*LxLk$|9JTwAw~dq2V5rh@;q@LJw&A0qqIvy8 z+UlwDUneH)#$Mm6{a)I#7ovt*h@Uv2r=Xw^opnSlWU`_UJy$ukOcgzLtOvsBExCRn zI3%RNd+r-bM~CK1QKDFRdRErDPh~uRew;!O#Wl7>zGxCMZ}S*3&6oLk(Ri2a3_KKwQ=E~E!>q9vgaNK!kE zuZvAhwIr`(e`smxPCRj4#-{b}H}BphRHKX04MG~4@y8S>IP~{$ep0%Yoa12D*RMC! z)z!tMr45#smp{ILuRHgxt)-m);?5Rf`oZJskp~s@BM-FF~0H>%Gft+LE%{p2$x}AR9%oB`@Db9_TGHlLu;Cconk4z`@~} z=j?EP6GY|n?Xm60USpS&($cclANNv9QqFkmPxlq~C0P3Bk2Ls70NPh+6ccUjC4xN);1MJY)cSNl)Y!F*7QzPfg1DuA-&crzzG6e?WKp+7A)b}xNt{6Y31 zUo<)e@S6+b^SsAHW$lL=(d8WHXSKNpFdyK=(@K@BsL+zguDpc^*2)osKR zkn}U?G$}ed+8pYL8!5}6AHz#(NWsU78z7eDgWX0Z786d5%ijWVUX$se;dJ`t2A_(U zuix69kjnf9O0E4{lqg?Hty@qtF(faa1@eU3)A6^FZjgpqkfU}5(#}I?CeNKaH{2Yw z2{+i%+Ug!1j-#|!Tz|Jy}CRh$9=2K&i&7=lue#+DKDi#Q04AZUAu?2gJ2PBJrOOrjWwe8Ntx$? zWC9YGW^&I6-W@ws9}*nw%~%5%lHWfPtX&+$2y0mSFIztziud<#uCwnIXSOwE$`$Wb zo{NwwrWQ)0{ zZT=IGNmwJ*@8><>w=6Wv)EQufQO=@L6}OkBjqkXWB%>iubT=rO-s>oT=8QQ&l%?s3E;LFd#@ZaOihq5QyfYpH@S(3P zbSu$@Gocr!dJL7@jnmS-mnRZ5qrr_Z--JWk!}-I*!^J%VMsc*{tkjmHX5}~2k6ucO z?XM~gi-?#r^PHd5yY%#w9;JRR3L9_;NFi#nni87By^On?o9b`6Y4i3^6A6}h34HZA z+{%0>8W&0shX_*zKBBsE+mPE8R=8YX*6>OuiIJBa+RlL?Ye}n zite3QXDnXVtHV+VlmLeB4qlmy#q~c?CDTGeLb2W|hb;Z5!A#Wz5qOP!$hts1XCY(W z3dSWqE-w25KhE$~C|6&MjPk!65jM^K)fD25~D>xwR|g!j@iR zE30%L+UyLrg7k&sDd)s+XUGM6`vPUgn%kws<7bmkV~xGMs-cDU=IZb_ZCN%-pQL#K zKg-=n+LBjF&qLquvt+E8(3d*`2-C$)XmYO$+)}FM>u%8JVmRq$Z#d~+9d02RsFh}9 zG4xrK{=Ll6#KgbfyncNXY?Nt}e*^Tc_S=Bd{$CV-ZL)IEF=h8R$S$;q#fH zD$Qt`m9L*)JydU^$dseJ>HBvFJ|!QS&!SoNCVpVhxr|yq&5}L%m2HHsBvuDRNx*Bn-ebZfP!i75=;q+|%QtKNGK#b@7< zB-@h9YyI{<&&Q4qlhH<;=I}RglK#CXA$+D2_g|S3Nu7Xh+LxgoQ6He<{WELCXIj!@ zc6h+IP6EsrV~wN|p_DTI?t!l+(z%K5sXz*+yAIcwQ~}0+tcD&8BZb#Ya{sL9wVc=m zhA=Bjs4Yclh@>Rp#IFwi$2WD^s}-VfX45aPKLuoW94x0QFyO-vg__(RB_$Pr>VhDA zaAtrHnoz{@~*>j0}AiSc}I|oWj@HTn`=9ewt_95}yz9$9v-1 zT~NJ+j}pasfJ>$`#WsL!76dTXp=)&UVTaQ}Oqa^L^9@9re81Xur1VD0kL30A7y@W7 z1uVB%#wI4_t34PQcRBXVzu3Z`XW8TrBURY$-Miga=ItOs8k7cF3RB|XSo!ee+SS>* zg`X`*33>TGUthZgaxZzHEEoKW*c54Xh(BPhWPLtYB_9$H9udKL3aJN!Kx}Mm7I+wO zBvJ=Fdwx995zx3@o@)8(cSun{BOJfn_(WWNw zotY5PWaa~9eK3n3Wo{pYaV5oTj3XKRA6Q*+&t%Aln25-Qd-v{`Z(ja(@)(-{pKR8 z+CX*sDjm&eJq9}L4uxrH%}OhinfNPZHh7p>q=bdv%=DMMD!$?Q^XrFMF!L@jad^Um zn6b}3woRd)HUT8L!aybkOM&7nEM#2j$dMN?8r1+cY9)&6yOe&u7j$B*(?>kcP^?@~ z;^UI0UF78k^O9@9I-@B*WU>8xd^0a!z8u~mKm57UiAaXwoD3jClWUaRCm(WhaJaaU z+83_)JMk2QLZ3F*(z=g<nsghvdwjtRq3o+EW2zobOvr7p8O9nA_*&zxG54c&S|vKqR^xme|IFV14b(D{rhu)kfFQYvo}ls zg+Qk)m$y%Nf9uJ-@Ze+xR6E^cny{=zLR)C1DqFyKEBwVJ=*M=pz`i<4BU6@%?%kJ| zRtko48L+>?A|eUiK8qmm@pj~xf*-?f9Y!Ae?YUXm0!?zYllSi4oxvO*zJ7=q*)km? zqJt;n(|N~um>U_}e{EyLXO658JZB^@CZueN>U!}F#GBQdRQ`fmPV269GX`U#T;MqC z?{_%)<@s6#20X~@T7wUk@ zIPPc?qdBZw$DXvKLcm6EN6%4veE8D+p}FBU!fY(3;P01RG4>}8AnkJ_YS@NM$2fb0 zHVRI3JUFXaxJvZUM0Iuli4E$JexD|AE?+8;^WLrvwr|$;756I)t29w+-Ja8B4BJ7x zfT8DO*9>j+4>=XnwJqJAt=sPxG;iHtWp@&Nv0%-0IKtcJD#}C8Y@=kQ->(X(O>DWU zc`cc*&qr#LC3KZ_Ofm z=Q;LZ)HLkX52{@Xuw>!-=U*WIHy&fDWA!~D`oxcK71SJGYx3m^Hk4Bk`Oe1WdU)RZSm4j=ze(8t zYPD)JuAWcGdt`UoW{KTie&Yk3i*7KiDjnK>x6~@l^-plqAF!^7ll(;08{;(h+8D%d z)Pr`9CbgLQx38K~|4`DM{F3WxM%Z*i+!pOZvJ_&%c$c)gL9N9fKIglO!?5=9fbauu zy-E!`n>K4Y@qF*KjS|P>tiYBuRe7|v=fFklgl2tL&K|#wkI|sY8nm2^hvrDAbjBS+6KQ7J7sH}MeLY|%xmPPn?5CXOi$kHzTFyNa+)Gd^WbJPZ@@MBF>~E{4x&$e|Q#M@--EE0s%n;_t z23IzMQ~qKZb+h>OviK!dRqN7tvN3iem=?Tos1IUG%9npQXezfQ&8Hx&``JLAFL6 +# date: 05/07/2025 +# + +try: + import numpy as np + from numpy.typing import NDArray + from scipy.sparse.linalg import eigs + from sklearn.cluster import KMeans + + # Testing requirements + from scipy.io import loadmat + import matplotlib.pyplot + from sklearn.cluster import spectral_clustering as sk_spectral + from sklearn.metrics import adjusted_rand_score +except ImportError as e: + print("Missing package:", e) + print("Run: pip install -r requirements.txt") + exit(1) + + +def spectral_clustering( + affinity_mat: NDArray[np.floating], + k: int, + normalized: bool = False +) -> NDArray[np.int32]: + """ + Performs spectral clustering on a given affinity matrix. + + Parameters: + ---------- + affinity_mat : np.ndarray of shape (n, n), dtype=float + The symmetric affinity matrix representing a graph. + k : int + The number of clusters. + normalized : bool, optional (default=False) + Whether to use the normalized Laplacian (L_sym = I - D^(-1/2) A D^(-1/2)) + !note: Don't miss-interpret this with normalized-cuts implementation!! + + Returns: + ------- + cluster_idx : np.ndarray of shape (n,), dtype=int + An array of cluster labels for each node. + """ + # Degree matrix + D = np.diag(affinity_mat.sum(axis=1)) + + if normalized: + with np.errstate(divide='ignore'): + D_inv_sqrt = np.diag(1.0 / np.sqrt(np.diag(D))) + D_inv_sqrt[np.isinf(D_inv_sqrt)] = 0.0 + # L = I - D^(-1/2) A D^(-1/2) + L = np.eye(affinity_mat.shape[0]) - D_inv_sqrt @ affinity_mat @ D_inv_sqrt + else: + L = D - affinity_mat + + # Compute k smallest eigenvectors (use eigsh if L is symmetric positive-definite) + eigvals, eigvecs = eigs(L, k=k, which='SR') # 'SR' = Smallest Real part + + # Form matrix U with eigenvectors as columns + # Convert complex -> real (imaginary parts should be negligible) + U = np.real(eigvecs) + + # Each row is a vector to be clustered + # random_state parameter to 1, to ensure reproducibility across experiments. + kmeans = KMeans(n_clusters=k, random_state=1) + kmeans.fit(U) + + # obtain the cluster labels for each input data point + return kmeans.labels_.astype(np.int32) + + +def _test_d1a(k: int, plot :bool = False): + """ + Runs spectral clustering on d1a from dip_hw_3.mat for a given k. + """ + print(f"=== Spectral clustering test on d1a (k={k}) ===") + print(f"") + + data = loadmat("dip_hw_3.mat") + A = data["d1a"] + print("Loaded d1a affinity matrix with shape:", A.shape) + + labels = spectral_clustering(A, k) + + print("Cluster labels:") + print(labels) + print("Unique clusters:", np.unique(labels)) + + if plot: + D = np.diag(A.sum(axis=1)) + L = D - A + eigvals, eigvecs = eigs(L, k=k, which='SR') + eigvecs = np.real(eigvecs) + + # Plot first 2 dimensions + matplotlib.use("TkAgg") + matplotlib.pyplot.figure() + matplotlib.pyplot.scatter(eigvecs[:, 0], eigvecs[:, 1], c=labels, cmap='tab10', s=100, edgecolors='k') + matplotlib.pyplot.title(f"Spectral Clustering (k={k}) on d1a") + matplotlib.pyplot.xlabel("Eigenvector 1") + matplotlib.pyplot.ylabel("Eigenvector 2") + matplotlib.pyplot.grid(True) + matplotlib.pyplot.tight_layout() + matplotlib.pyplot.show() + #matplotlib.pyplot.savefig(f"spectral_d1a_k{k}.png") + + +def compare_with_sklearn(k: int, plot: bool = False): + print(f"=== Comparing with sklearn spectral_clustering (k={k}) ===") + print(f"") + + data = loadmat("dip_hw_3.mat") + A = data["d1a"] + + # Your implementation + labels_own = spectral_clustering(A, k, True) + + # sklearn implementation (uses normalized Laplacian) + labels_sklearn = sk_spectral( + affinity=A, + n_clusters=k, + assign_labels="kmeans", + random_state=1 + ) + + # Compare clustering assignments using ARI + ari = adjusted_rand_score(labels_own, labels_sklearn) + + print(f"Labels (own): {labels_own}") + print(f"Labels (sklearn): {labels_sklearn}") + print(f"Adjusted Rand Index (ARI): {ari:.4f}") + + # Optional: bar plot to compare visually + if plot: + matplotlib.use("TkAgg") + matplotlib.pyplot.figure(figsize=(6, 1.5)) + matplotlib.pyplot.title(f"Cluster comparison (k={k})") + matplotlib.pyplot.plot(labels_own, 'o-', label='own', markersize=8) + matplotlib.pyplot.plot(labels_sklearn, 'x--', label='sklearn', markersize=6) + matplotlib.pyplot.yticks(range(k)) + matplotlib.pyplot.xlabel("Node index") + matplotlib.pyplot.legend() + matplotlib.pyplot.tight_layout() + matplotlib.pyplot.show() + # matplotlib.pyplot.savefig(f"compare_k{k}.png") + # print(f"Saved plot: compare_k{k}.png") + + + +if __name__ == '__main__': + for k in [2, 3, 4]: + # If you have TkAgg you can pass plot=True, otherwise pass False + _test_d1a(k, plot=False) + compare_with_sklearn(k, plot=False)