{"id":36447,"date":"2024-11-01T09:48:34","date_gmt":"2024-11-01T09:48:34","guid":{"rendered":"http:\/\/atmokpo.com\/w\/?p=36447"},"modified":"2024-11-01T11:53:08","modified_gmt":"2024-11-01T11:53:08","slug":"deep-learning-pytorch-course-k-means-clustering","status":"publish","type":"post","link":"https:\/\/atmokpo.com\/w\/36447\/","title":{"rendered":"Deep Learning PyTorch Course, K-Means Clustering"},"content":{"rendered":"<div class=\"post\">\n<p>The approach to data analysis has significantly changed due to the advancement of deep learning and machine learning. One of these is clustering technology. This post explains how to implement the K-means clustering algorithm in PyTorch and utilize it for data analysis.<\/p>\n<h2>1. What is K-means Clustering?<\/h2>\n<p>K-means clustering is one of the non-supervised learning algorithms that divides the given data points into K clusters. The goal of this algorithm is to minimize the average distance between each cluster&#8217;s centroid and the data points. This means that the data points within a cluster are close to each other, while the distance between clusters is maximized.<\/p>\n<h2>2. How K-means Clustering Works<\/h2>\n<ol>\n<li><strong>Initialization:<\/strong> Randomly select K cluster centroids.<\/li>\n<li><strong>Assignment Step:<\/strong> Assign each data point to the nearest cluster centroid.<\/li>\n<li><strong>Update Step:<\/strong> Update the centroid of each cluster to the mean of the data points belonging to that cluster.<\/li>\n<li><strong>Convergence Check:<\/strong> If the change in cluster centroids is minimal or none, terminate the algorithm.<\/li>\n<\/ol>\n<p>This process is repeated to find the optimal clusters.<\/p>\n<h2>3. Advantages and Disadvantages of K-means Clustering<\/h2>\n<h3>Advantages<\/h3>\n<ul>\n<li>Simple to implement and understand.<\/li>\n<li>Efficient with a fast convergence rate.<\/li>\n<\/ul>\n<h3>Disadvantages<\/h3>\n<ul>\n<li>The K value (number of clusters) must be specified in advance.<\/li>\n<li>Does not perform well with non-spherical clusters.<\/li>\n<li>Can be sensitive to outliers.<\/li>\n<\/ul>\n<h2>4. Implementing K-means Clustering in PyTorch<\/h2>\n<p>Now, let&#8217;s implement K-means clustering in PyTorch. In this example, we will generate 2D data for clustering.<\/p>\n<h3>4.1. Installing Required Libraries<\/h3>\n<p>First, we install and import the necessary libraries.<\/p>\n<pre><code>python\nimport torch\nimport numpy as np\nimport matplotlib.pyplot as plt\n    <\/code><\/pre>\n<h3>4.2. Generating Data<\/h3>\n<p>We will generate random 2D data.<\/p>\n<pre><code>python\n# Generate data\nnp.random.seed(42)\nnum_samples_per_cluster = 100\nC1 = np.random.randn(num_samples_per_cluster, 2) + np.array([0, 0])\nC2 = np.random.randn(num_samples_per_cluster, 2) + np.array([5, 5])\nC3 = np.random.randn(num_samples_per_cluster, 2) + np.array([1, 8])\n\ndata = np.vstack((C1, C2, C3))\nplt.scatter(data[:, 0], data[:, 1])\nplt.title(\"Generated Data\")\nplt.show()\n    <\/code><\/pre>\n<h3>4.3. Implementing the K-means Algorithm<\/h3>\n<p>Now, we will implement the K-means algorithm.<\/p>\n<pre><code>python\n# K-Mean implementation\ndef k_means(X, k, num_iters=100):\n    # Initialize the centroids of each cluster\n    centroids = X[np.random.choice(X.shape[0], k, replace=False)]\n    \n    for _ in range(num_iters):\n        # Assign each data point to the nearest centroid\n        distances = torch.cdist(torch.tensor(X, dtype=torch.float32), torch.tensor(centroids, dtype=torch.float32))\n        labels = torch.argmin(distances, dim=1)\n\n        # Calculate new centroids\n        new_centroids = torch.zeros_like(centroids)\n        for i in range(k):\n            if torch.any(labels == i):\n                new_centroids[i, :] = X[labels.numpy() == i].mean(axis=0)\n        \n        centroids = new_centroids\n\n    return labels.numpy(), centroids.numpy()\n    <\/code><\/pre>\n<h3>4.4. Running the Algorithm<\/h3>\n<p>We will perform K-means clustering and visualize the results.<\/p>\n<pre><code>python\n# Run K-means\nk = 3\nlabels, centroids = k_means(data, k)\n\n# Visualize the results\nplt.scatter(data[:, 0], data[:, 1], c=labels, cmap='viridis')\nplt.scatter(centroids[:, 0], centroids[:, 1], s=200, c='red', marker='X')  # Mark centroids\nplt.title(\"K-Means Clustering\")\nplt.show()\n    <\/code><\/pre>\n<h2>5. Applications of K-means Clustering<\/h2>\n<p>K-means clustering is used in various fields such as customer segmentation, image compression, and recommendation systems. It also becomes a useful tool for data analysts to understand the structure of data and to discover patterns.<\/p>\n<h2>6. Conclusion<\/h2>\n<p>K-means clustering is an easy-to-understand clustering algorithm that shows strong performance on suitable data. By implementing it with PyTorch, we have learned the basics of advanced deep learning and machine learning. I hope this course helps you understand the concept of data clustering and familiarize yourself with the structure of PyTorch.<\/p>\n<p>I hope you felt the fun and possibilities of deep learning through all the code and examples. We will cover various topics related to data analysis and deep learning in the future, so please stay tuned. Thank you!<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>The approach to data analysis has significantly changed due to the advancement of deep learning and machine learning. One of these is clustering technology. This post explains how to implement the K-means clustering algorithm in PyTorch and utilize it for data analysis. 1. What is K-means Clustering? K-means clustering is one of the non-supervised learning &hellip; <a href=\"https:\/\/atmokpo.com\/w\/36447\/\" class=\"more-link\">\ub354 \ubcf4\uae30<span class=\"screen-reader-text\"> &#8220;Deep Learning PyTorch Course, K-Means Clustering&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[149],"tags":[],"class_list":["post-36447","post","type-post","status-publish","format-standard","hentry","category-pytorch-study"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.2 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Deep Learning PyTorch Course, K-Means Clustering - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/atmokpo.com\/w\/36447\/\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Deep Learning PyTorch Course, K-Means Clustering - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"og:description\" content=\"The approach to data analysis has significantly changed due to the advancement of deep learning and machine learning. One of these is clustering technology. This post explains how to implement the K-means clustering algorithm in PyTorch and utilize it for data analysis. 1. What is K-means Clustering? K-means clustering is one of the non-supervised learning &hellip; \ub354 \ubcf4\uae30 &quot;Deep Learning PyTorch Course, K-Means Clustering&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/atmokpo.com\/w\/36447\/\" \/>\n<meta property=\"og:site_name\" content=\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\" \/>\n<meta property=\"article:published_time\" content=\"2024-11-01T09:48:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-11-01T11:53:08+00:00\" \/>\n<meta name=\"author\" content=\"root\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:site\" content=\"@bebubo4\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"root\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"3\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/atmokpo.com\/w\/36447\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36447\/\"},\"author\":{\"name\":\"root\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\"},\"headline\":\"Deep Learning PyTorch Course, K-Means Clustering\",\"datePublished\":\"2024-11-01T09:48:34+00:00\",\"dateModified\":\"2024-11-01T11:53:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36447\/\"},\"wordCount\":411,\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"articleSection\":[\"PyTorch Study\"],\"inLanguage\":\"ko-KR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/atmokpo.com\/w\/36447\/\",\"url\":\"https:\/\/atmokpo.com\/w\/36447\/\",\"name\":\"Deep Learning PyTorch Course, K-Means Clustering - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"isPartOf\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#website\"},\"datePublished\":\"2024-11-01T09:48:34+00:00\",\"dateModified\":\"2024-11-01T11:53:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/atmokpo.com\/w\/36447\/#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/atmokpo.com\/w\/36447\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/atmokpo.com\/w\/36447\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\/\/atmokpo.com\/w\/en\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Deep Learning PyTorch Course, K-Means Clustering\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/atmokpo.com\/w\/#website\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/atmokpo.com\/w\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/atmokpo.com\/w\/#organization\",\"name\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\",\"url\":\"https:\/\/atmokpo.com\/w\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"contentUrl\":\"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png\",\"width\":400,\"height\":400,\"caption\":\"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8\"},\"image\":{\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/x.com\/bebubo4\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7\",\"name\":\"root\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ko-KR\",\"@id\":\"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g\",\"caption\":\"root\"},\"sameAs\":[\"http:\/\/atmokpo.com\/w\"],\"url\":\"https:\/\/atmokpo.com\/w\/author\/root\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Deep Learning PyTorch Course, K-Means Clustering - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","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:\/\/atmokpo.com\/w\/36447\/","og_locale":"ko_KR","og_type":"article","og_title":"Deep Learning PyTorch Course, K-Means Clustering - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","og_description":"The approach to data analysis has significantly changed due to the advancement of deep learning and machine learning. One of these is clustering technology. This post explains how to implement the K-means clustering algorithm in PyTorch and utilize it for data analysis. 1. What is K-means Clustering? K-means clustering is one of the non-supervised learning &hellip; \ub354 \ubcf4\uae30 \"Deep Learning PyTorch Course, K-Means Clustering\"","og_url":"https:\/\/atmokpo.com\/w\/36447\/","og_site_name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","article_published_time":"2024-11-01T09:48:34+00:00","article_modified_time":"2024-11-01T11:53:08+00:00","author":"root","twitter_card":"summary_large_image","twitter_creator":"@bebubo4","twitter_site":"@bebubo4","twitter_misc":{"\uae00\uc4f4\uc774":"root","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"3\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/atmokpo.com\/w\/36447\/#article","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/36447\/"},"author":{"name":"root","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7"},"headline":"Deep Learning PyTorch Course, K-Means Clustering","datePublished":"2024-11-01T09:48:34+00:00","dateModified":"2024-11-01T11:53:08+00:00","mainEntityOfPage":{"@id":"https:\/\/atmokpo.com\/w\/36447\/"},"wordCount":411,"publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"articleSection":["PyTorch Study"],"inLanguage":"ko-KR"},{"@type":"WebPage","@id":"https:\/\/atmokpo.com\/w\/36447\/","url":"https:\/\/atmokpo.com\/w\/36447\/","name":"Deep Learning PyTorch Course, K-Means Clustering - \ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","isPartOf":{"@id":"https:\/\/atmokpo.com\/w\/#website"},"datePublished":"2024-11-01T09:48:34+00:00","dateModified":"2024-11-01T11:53:08+00:00","breadcrumb":{"@id":"https:\/\/atmokpo.com\/w\/36447\/#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/atmokpo.com\/w\/36447\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/atmokpo.com\/w\/36447\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/atmokpo.com\/w\/en\/"},{"@type":"ListItem","position":2,"name":"Deep Learning PyTorch Course, K-Means Clustering"}]},{"@type":"WebSite","@id":"https:\/\/atmokpo.com\/w\/#website","url":"https:\/\/atmokpo.com\/w\/","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","description":"","publisher":{"@id":"https:\/\/atmokpo.com\/w\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/atmokpo.com\/w\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Organization","@id":"https:\/\/atmokpo.com\/w\/#organization","name":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8","url":"https:\/\/atmokpo.com\/w\/","logo":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/","url":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","contentUrl":"https:\/\/atmokpo.com\/w\/wp-content\/uploads\/2024\/11\/logo.png","width":400,"height":400,"caption":"\ub77c\uc774\ube0c\uc2a4\ub9c8\ud2b8"},"image":{"@id":"https:\/\/atmokpo.com\/w\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/bebubo4"]},{"@type":"Person","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/91b6b3b138fbba0efb4ae64b1abd81d7","name":"root","image":{"@type":"ImageObject","inLanguage":"ko-KR","@id":"https:\/\/atmokpo.com\/w\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/708197b41fc6435a7ce22d951b25d4a47e9e904270cb1f04682d4f025066f80c?s=96&d=mm&r=g","caption":"root"},"sameAs":["http:\/\/atmokpo.com\/w"],"url":"https:\/\/atmokpo.com\/w\/author\/root\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/comments?post=36447"}],"version-history":[{"count":1,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36447\/revisions"}],"predecessor-version":[{"id":36448,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/posts\/36447\/revisions\/36448"}],"wp:attachment":[{"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/media?parent=36447"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/categories?post=36447"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/atmokpo.com\/w\/wp-json\/wp\/v2\/tags?post=36447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}