{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/n2dnot-too-deep-clustering-via-clustering-the","title":"N2D: (Not Too) Deep Clustering via Clustering the Local Manifold of an Autoencoded Embedding","arxiv_id":"1908.05968","date":"2019-08-16","proceeding":null,"authors":["Ryan McConville","Raul Santos-Rodriguez","Robert J. Piechocki","Ian Craddock"],"abstract":"Deep clustering has increasingly been demonstrating superiority over conventional shallow clustering algorithms. Deep clustering algorithms usually combine representation learning with deep neural networks to achieve this performance, typically optimizing a clustering and non-clustering loss. In such cases, an autoencoder is typically connected with a clustering network, and the final clustering is jointly learned by both the autoencoder and clustering network. Instead, we propose to learn an autoencoded embedding and then search this further for the underlying manifold. For simplicity, we then cluster this with a shallow clustering algorithm, rather than a deeper network. We study a number of local and global manifold learning methods on both the raw data and autoencoded embedding, concluding that UMAP in our framework is best able to find the most clusterable manifold in the embedding, suggesting local manifold learning on an autoencoded embedding is effective for discovering higher quality discovering clusters. We quantitatively show across a range of image and time-series datasets that our method has competitive performance against the latest deep clustering algorithms, including out-performing current state-of-the-art on several. We postulate that these results show a promising research direction for deep clustering. The code can be found at https://github.com/rymc/n2d","url_abs":"https://arxiv.org/abs/1908.05968v6","url_pdf":"https://arxiv.org/pdf/1908.05968v6.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"n2dnot-too-deep-clustering-via-clustering-the","repo_url":"https://github.com/rymc/n2d","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"n2dnot-too-deep-clustering-via-clustering-the","repo_url":"https://github.com/josephsdavid/N2D","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"n2dnot-too-deep-clustering-via-clustering-the","repo_url":"https://github.com/shyhyawJou/N2D-Pytorch","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"n2dnot-too-deep-clustering-via-clustering-the","repo_url":"https://github.com/talwiener/ds_hw3","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"GPL-3.0"}},{"paper_slug":"n2dnot-too-deep-clustering-via-clustering-the","repo_url":"https://github.com/talwiener/n2d","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok"}}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"deep-clustering","task_name":"Deep Clustering"},{"task_slug":"image-clustering","task_name":"Image Clustering"},{"task_slug":"representation-learning","task_name":"Representation Learning"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"time-series-clustering","task_name":"Time Series Clustering"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/image-clustering-on-fashion-mnist","task":"Image Clustering","dataset":"Fashion-MNIST","model":"N2D (UMAP)","rank_in_archive_order":4,"of":13,"metrics":{"Accuracy":"0.672","NMI":"0.684"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-har","task":"Image Clustering","dataset":"HAR","model":"N2D (UMAP)","rank_in_archive_order":2,"of":3,"metrics":{"Accuracy":"0.801","NMI":"0.683"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-mnist-full","task":"Image Clustering","dataset":"MNIST-full","model":"N2D (UMAP)","rank_in_archive_order":3,"of":16,"metrics":{"Accuracy":"0.987","NMI":"0.964"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-mnist-test","task":"Image Clustering","dataset":"MNIST-test","model":"N2D (UMAP)","rank_in_archive_order":9,"of":11,"metrics":{"Accuracy":"0.948","NMI":"0.882"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-usps","task":"Image Clustering","dataset":"USPS","model":"N2D (UMAP)","rank_in_archive_order":10,"of":16,"metrics":{"Accuracy":"0.958","NMI":"0.901"},"uses_additional_data":false},{"leaderboard":"/sota/image-clustering-on-pendigits","task":"Image Clustering","dataset":"pendigits","model":"N2D (UMAP)","rank_in_archive_order":1,"of":2,"metrics":{"Accuracy":"0.885","NMI":"0.863"},"uses_additional_data":false}],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=1908.05968","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1908.05968"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/josephsdavid/N2D","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/shyhyawJou/N2D-Pytorch","reach":{"status":"ok","spdx":"GPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/talwiener/n2d","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/rymc/n2d","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/talwiener/ds_hw3","reach":{"status":"ok","spdx":"GPL-3.0"}}],"summary":{"ran_draft_wrong":2,"unverified":2},"by_repo_kind":{"official":{"samples":2,"ran":2,"repositories":1},"listed":{"samples":2,"ran":0,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":2,"samples":[{"code_sha256_prefix":"29b317a560e0783f","entry":"load_pendigits","repo":"rymc/n2d","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/rymc/n2d/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"29b317a560e0783f"}},{"code_sha256_prefix":"dcfc17065b8e6966","entry":"load_usps","repo":"rymc/n2d","repo_kind":"official","path":"datasets.py","file_url":"https://github.com/rymc/n2d/blob/HEAD/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"GPL-3.0","inline_ok":false,"mcp_get_code":{"code_sha256":"dcfc17065b8e6966"}},{"code_sha256_prefix":"59c55deb36829817","entry":"best_cluster_fit","repo":"josephsdavid/N2D","repo_kind":"listed","path":"n2d/N2D.py","file_url":"https://github.com/josephsdavid/N2D/blob/HEAD/n2d/N2D.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"59c55deb36829817"}},{"code_sha256_prefix":"4efdad7e624a3c0d","entry":"cluster_acc","repo":"josephsdavid/N2D","repo_kind":"listed","path":"n2d/N2D.py","file_url":"https://github.com/josephsdavid/N2D/blob/HEAD/n2d/N2D.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4efdad7e624a3c0d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}