{"id":4506,"date":"2024-03-14T01:33:14","date_gmt":"2024-03-14T01:33:14","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/"},"modified":"2025-07-31T08:54:21","modified_gmt":"2025-07-31T08:54:21","slug":"how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/","title":{"rendered":"Cluster Analysis in R: Optimal Clusters Guide"},"content":{"rendered":"<p>In R language, you can perform cluster analysis and select the number of clusters using some common packages, such as cluster and factoextra. Here is a simple example code demonstrating how to conduct cluster analysis and select the number of clusters.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-comment\"># \u5bfc\u5165\u6570\u636e<\/span>\r\ndata <span class=\"hljs-operator\">&lt;-<\/span> read.csv<span class=\"hljs-punctuation\">(<\/span><span class=\"hljs-string\">\"data.csv\"<\/span><span class=\"hljs-punctuation\">)<\/span>\r\n\r\n<span class=\"hljs-comment\"># \u8fdb\u884c\u805a\u7c7b\u5206\u6790<\/span>\r\ncluster <span class=\"hljs-operator\">&lt;-<\/span> kmeans<span class=\"hljs-punctuation\">(<\/span>data<span class=\"hljs-punctuation\">,<\/span> centers <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">3<\/span><span class=\"hljs-punctuation\">)<\/span>  <span class=\"hljs-comment\"># \u9009\u62e9\u7c07\u6570\u4e3a3<\/span>\r\n\r\n<span class=\"hljs-comment\"># \u53ef\u89c6\u5316\u805a\u7c7b\u7ed3\u679c<\/span>\r\nlibrary<span class=\"hljs-punctuation\">(<\/span>factoextra<span class=\"hljs-punctuation\">)<\/span>\r\nfviz_cluster<span class=\"hljs-punctuation\">(<\/span>cluster<span class=\"hljs-punctuation\">,<\/span> data <span class=\"hljs-operator\">=<\/span> data<span class=\"hljs-punctuation\">)<\/span>\r\n\r\n<span class=\"hljs-comment\"># \u9009\u62e9\u6700\u4f18\u7c07\u6570<\/span>\r\nlibrary<span class=\"hljs-punctuation\">(<\/span>NbClust<span class=\"hljs-punctuation\">)<\/span>\r\nnb <span class=\"hljs-operator\">&lt;-<\/span> NbClust<span class=\"hljs-punctuation\">(<\/span>data<span class=\"hljs-punctuation\">,<\/span> distance <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-string\">\"euclidean\"<\/span><span class=\"hljs-punctuation\">,<\/span> min.nc <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">2<\/span><span class=\"hljs-punctuation\">,<\/span> max.nc <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-number\">10<\/span><span class=\"hljs-punctuation\">,<\/span> method <span class=\"hljs-operator\">=<\/span> <span class=\"hljs-string\">\"kmeans\"<\/span><span class=\"hljs-punctuation\">)<\/span>\r\nprint<span class=\"hljs-punctuation\">(<\/span>nb<span class=\"hljs-punctuation\">)<\/span>\r\n<\/code><\/pre>\n<p>In the code above, data is first imported, then kmeans function is used for cluster analysis with a cluster number of 3 selected. Next, the fviz_cluster function from the factoextra package is used to visualize the clustering results. Finally, the NbClust package is used for cluster number selection by setting the minimum and maximum cluster number range with min.nc and max.nc parameters, and specifying the clustering method with the method parameter, choosing the kmeans method here. The optimal cluster number can then be printed and selected.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In R language, you can perform cluster analysis and select the number of clusters using some common packages, such as cluster and factoextra. Here is a simple example code demonstrating how to conduct cluster analysis and select the number of clusters. # \u5bfc\u5165\u6570\u636e data &lt;- read.csv(&#8220;data.csv&#8221;) # \u8fdb\u884c\u805a\u7c7b\u5206\u6790 cluster &lt;- kmeans(data, centers = 3) # [&hellip;]<\/p>\n","protected":false},"author":11,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[4176,4178,4177,4179,65],"class_list":["post-4506","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-cluster-analysis","tag-data-clustering","tag-k-means","tag-r-machine-learning","tag-r-programming"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Cluster Analysis in R: Optimal Clusters Guide - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn R cluster analysis with kmeans, factoextra &amp; NbClust. Determine optimal clusters step-by-step.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Cluster Analysis in R: Optimal Clusters Guide\" \/>\n<meta property=\"og:description\" content=\"Learn R cluster analysis with kmeans, factoextra &amp; NbClust. Determine optimal clusters step-by-step.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T01:33:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T08:54:21+00:00\" \/>\n<meta name=\"author\" content=\"Olivia Parker\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Olivia Parker\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\"},\"author\":{\"name\":\"Olivia Parker\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\"},\"headline\":\"Cluster Analysis in R: Optimal Clusters Guide\",\"datePublished\":\"2024-03-14T01:33:14+00:00\",\"dateModified\":\"2025-07-31T08:54:21+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\"},\"wordCount\":136,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Cluster Analysis\",\"Data Clustering\",\"K-means\",\"R Machine Learning\",\"R programming\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\",\"name\":\"Cluster Analysis in R: Optimal Clusters Guide - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T01:33:14+00:00\",\"dateModified\":\"2025-07-31T08:54:21+00:00\",\"description\":\"Learn R cluster analysis with kmeans, factoextra & NbClust. Determine optimal clusters step-by-step.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cluster Analysis in R: Optimal Clusters Guide\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9\",\"name\":\"Olivia Parker\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g\",\"caption\":\"Olivia Parker\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Cluster Analysis in R: Optimal Clusters Guide - Blog - Silicon Cloud","description":"Learn R cluster analysis with kmeans, factoextra & NbClust. Determine optimal clusters step-by-step.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/","og_locale":"en_US","og_type":"article","og_title":"Cluster Analysis in R: Optimal Clusters Guide","og_description":"Learn R cluster analysis with kmeans, factoextra & NbClust. Determine optimal clusters step-by-step.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T01:33:14+00:00","article_modified_time":"2025-07-31T08:54:21+00:00","author":"Olivia Parker","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Olivia Parker","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/"},"author":{"name":"Olivia Parker","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9"},"headline":"Cluster Analysis in R: Optimal Clusters Guide","datePublished":"2024-03-14T01:33:14+00:00","dateModified":"2025-07-31T08:54:21+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/"},"wordCount":136,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Cluster Analysis","Data Clustering","K-means","R Machine Learning","R programming"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/","name":"Cluster Analysis in R: Optimal Clusters Guide - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T01:33:14+00:00","dateModified":"2025-07-31T08:54:21+00:00","description":"Learn R cluster analysis with kmeans, factoextra & NbClust. Determine optimal clusters step-by-step.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-perform-cluster-analysis-and-select-the-number-of-clusters-in-r-language\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Cluster Analysis in R: Optimal Clusters Guide"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/3ff7b3da0e45ac5dbbef2502f3cea8d9","name":"Olivia Parker","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/56c66f189ba32a6f9eb50f31a38fe774e2a725c213d4070835ccc51b8fbbc54b?s=96&d=mm&r=g","caption":"Olivia Parker"},"url":"https:\/\/www.silicloud.com\/blog\/author\/oliviaparker\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4506","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/11"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=4506"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4506\/revisions"}],"predecessor-version":[{"id":149173,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4506\/revisions\/149173"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=4506"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=4506"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=4506"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}