清華《數據挖掘算法與應用》K-means聚類算法

使用k均值聚類算法對表4.1中的數據進行聚類。代碼參考P281。

創建一個名為 testSet.txt?的文本文件,將以下內容復制粘貼進去保存即可:

0	0
1	2
3	1
8	8
9	10
10	7

4.1

# -*- coding: utf-8 -*-
"""
Created on Thu Apr 17 16:59:58 2025@author: 破無差
"""
import matplotlib.pyplot as plt
import numpy as npdef loadDataSet(fileName):dataMat = []fr = open(fileName)for line in fr.readlines():curLine = line.strip().split('\t')fitLine = list(map(float, curLine))dataMat.append(fitLine)return dataMatdef distEclud(vecA, vecB):return np.sqrt(np.sum(np.power(vecA - vecB, 2)))def randCent(dataSet, k):n = np.shape(dataSet)[1]centroids = np.mat(np.zeros((k, n)))for j in range(n):minJ = np.min(dataSet[:, j])maxJ = np.max(dataSet[:, j])rangeJ = float(maxJ - minJ)centroids[:, j] = minJ + rangeJ * np.random.rand(k, 1)return centroidsdef kMeans(dataSet, k, distMeas=distEclud, createCent=randCent):m = np.shape(dataSet)[0]clusterAssment = np.mat(np.zeros((m, 2)))centroids = createCent(dataSet, k)clusterChanged = Truewhile clusterChanged:clusterChanged = Falsefor i in range(m):minDist = float('inf')minIndex = -1for j in range(k):distJI = distMeas(centroids[j, :], dataSet[i, :])if distJI < minDist:minDist = distJIminIndex = jif clusterAssment[i, 0] != minIndex:clusterChanged = TrueclusterAssment[i, :] = minIndex, minDist ** 2for cent in range(k):ptsInClust = dataSet[np.nonzero(clusterAssment[:, 0].A == cent)[0]]centroids[cent, :] = np.mean(ptsInClust, axis=0)return centroids, clusterAssmentdef plotDataSet(filename):datMat = np.mat(loadDataSet(filename))myCentroids, clustAssing = kMeans(datMat, 4)clustAssing = clustAssing.tolist()myCentroids = myCentroids.tolist()xcord = [[], [], [], []]ycord = [[], [], [], []]datMat = datMat.tolist()m = len(clustAssing)for i in range(m):if int(clustAssing[i][0]) == 0:xcord[0].append(datMat[i][0])ycord[0].append(datMat[i][1])elif int(clustAssing[i][0]) == 1:xcord[1].append(datMat[i][0])ycord[1].append(datMat[i][1])elif int(clustAssing[i][0]) == 2:xcord[2].append(datMat[i][0])ycord[2].append(datMat[i][1])elif int(clustAssing[i][0]) == 3:xcord[3].append(datMat[i][0])ycord[3].append(datMat[i][1])fig = plt.figure()ax = fig.add_subplot(111)ax.scatter(xcord[0], ycord[0], s=20, c='b', marker='*', alpha=.5)ax.scatter(xcord[1], ycord[1], s=20, c='r', marker='D', alpha=.5)ax.scatter(xcord[2], ycord[2], s=20, c='c', marker='>', alpha=.5)ax.scatter(xcord[3], ycord[3], s=20, c='k', marker='o', alpha=.5)ax.scatter(myCentroids[0][0], myCentroids[0][1], s=100, c='k', marker='+')ax.scatter(myCentroids[1][0], myCentroids[1][1], s=100, c='k', marker='+')ax.scatter(myCentroids[2][0], myCentroids[2][1], s=100, c='k', marker='+')ax.scatter(myCentroids[3][0], myCentroids[3][1], s=100, c='k', marker='+')ax.set_xlabel('X')ax.set_ylabel('Y')ax.set_title('DataSet')plt.show()if __name__ == '__main__':
plotDataSet('testSet.txt')

聲明:文章僅供學習使用。著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

運行結果:

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/76473.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/76473.shtml
英文地址,請注明出處:http://en.pswp.cn/web/76473.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

HarmonyOS-ArkUI V2工具類:AppStorageV2:應用全局UI狀態存儲

AppStorageV2是一個能夠跨界面存儲數據,管理數據的類。開發者可以使用AppStorageV2來存儲全局UI狀態變量數據。它提供的是應用級的全局共享能力,開發者可以通過connect綁定同一個key,進行跨ability數據共享。 概述 AppStorageV2是一個單例,創建時間是應用UI啟動時。其目的…

打靶日記 zico2: 1

一、探測靶機IP&#xff08;進行信息收集&#xff09; 主機發現 arp-scan -lnmap -sS -sV -T5 -p- 192.168.10.20 -A二、進行目錄枚舉 發現dbadmin目錄下有個test_db.php 進入后發現是一個登錄界面&#xff0c;嘗試弱口令&#xff0c;結果是admin&#xff0c;一試就出 得到加…

使用Java基于Geotools的SLD文件編程式創建與磁盤生成實戰

前言 在地理信息系統&#xff08;GIS&#xff09;領域&#xff0c;地圖的可視化呈現至關重要&#xff0c;而樣式定義語言&#xff08;SLD&#xff09;文件為地圖元素的樣式配置提供了強大的支持。SLD 能夠精確地定義地圖圖層中各類要素&#xff08;如點、線、面、文本等&#x…

kubernetes》》k8s》》Service

Kubernetes 中的 Service 是用于暴露應用服務的核心抽象&#xff0c;為 Pod 提供穩定的訪問入口、負載均衡和服務發現機制。Service在Kubernetes中代表了一組Pod的邏輯集合&#xff0c;通過創建一個Service&#xff0c;可以為一組具有相同功能的容器應用提供一個統一的入口地址…

【HDFS】EC重構過程中的校驗功能:DecodingValidator

一、動機 DecodingValidator是在HDFS-15759中引入的一個用于校驗EC數據重構正確性的組件。 先說下引入DecodingValidator的動機,據很多已知的ISSUE(如HDFS-14768, HDFS-15186, HDFS-15240,這些目前都已經fix了)反饋, EC在重構的時候可能會有各種各樣的問題,導致數據錯誤…

現代c++獲取linux系統架構

現代c獲取linux系統架構 前言一、使用命令獲取系統架構二、使用c代碼獲取系統架構三、驗證四、總結 前言 本文介紹一種使用c獲取linux系統架構的方法。 一、使用命令獲取系統架構 linux系統中可以使用arch或者uname -m命令來獲取當前系統架構&#xff0c;如下圖所示 archuna…

didFinishLaunching 與「主線程首次 idle」, 哪個是更優的啟動結束時間點 ?

結論先行 在這兩個候選時間點里—— application:didFinishLaunchingWithOptions: 執行結束主線程第一次進入 idle&#xff08;RunLoop kCFRunLoopBeforeWaiting&#xff09; 若你只能二選一&#xff0c;以「主線程首次 idle」作為 啟動結束 更合理。它比 didFinishLaunchin…

Vue3 + TypeScript中defineEmits 類型定義解析

TypeScript 中 Vue 3 的 defineEmits 函數的類型定義&#xff0c;用于聲明組件可以觸發的事件。以下是分步解釋&#xff1a; 1. 泛型定義 ts <"closeDialog" | "getApplySampleAndItemX"> 作用&#xff1a;定義允許的事件名稱集合&#xff0c;即組…

樹莓派超全系列教程文檔--(34)樹莓派配置GPIO

配置GPIO GPIO控制gpio 文章來源&#xff1a; http://raspberry.dns8844.cn/documentation 原文網址 GPIO控制 gpio 通過 gpio 指令&#xff0c;可以在啟動時將 GPIO 引腳設置為特定模式和值&#xff0c;而以前需要自定義 dt-blob.bin 文件。每一行都對一組引腳應用相同的設…

AladdinEdu(H卡GPU算力平臺)使用教程: 1)注冊與開通流程 2)插件使用流程

一、注冊與開通流程 首先進入AladdinEdu官網&#xff1a;AladdinEdu-同學們用得起的H卡算力平臺-高效做AI就上Aladdin 完成注冊&#xff0c;并進行學生認證&#xff1a;學生認證賬戶&#xff0c;認證期間享受教育優惠價。 登錄官網進入控制臺 二、插件使用流程 VScode中…

精益數據分析(6/126):深入理解精益分析的核心要點

精益數據分析&#xff08;6/126&#xff09;&#xff1a;深入理解精益分析的核心要點 在創業和數據驅動的時代浪潮中&#xff0c;我們都在不斷探索如何更好地利用數據推動業務發展。我希望通過和大家分享對《精益數據分析》的學習心得&#xff0c;一起在這個充滿挑戰和機遇的領…

2.深入剖析 Rust+Axum 類型安全路由系統

摘要 詳細解讀 RustAxum 路由系統的關鍵設計原理&#xff0c;涵蓋基于 Rust 類型系統的路由匹配機制、動態路徑參數與正則表達式驗證以及嵌套路由與模塊化組織等多種特性。 一、引言 在現代 Web 開發中&#xff0c;路由系統是構建 Web 應用的核心組件之一&#xff0c;它負責…

運籌學之模擬退火

目錄 一、歷史二、精髓思想三、案例與代碼實現 一、歷史 問&#xff1a;誰在什么時候提出模擬退火&#xff1f;答&#xff1a;模擬退火算法&#xff08;Simulated Annealing&#xff0c;SA&#xff09;是由斯圖爾特柯爾斯基&#xff08;Scott Kirkpatrick&#xff09; 等人在 …

android測試依賴

Android 項目中常用的測試相關庫 1. androidx.arch.core:core-testing:2.2.0 作用&#xff1a; 提供與 Android Architecture Components&#xff08;如 LiveData、ViewModel&#xff09;相關的測試工具。主要用于測試基于 LiveData 的異步操作。 常見功能&#xff1a; 即時…

stack,queue和priority_queue

1. stack 1.1 stack 的介紹 棧是一種容器適配器&#xff0c;專門設計用于LIFO環境&#xff08;后進先出&#xff09;&#xff0c;其中元素僅從容器的一端插入和提取。 容器適配器&#xff0c;也就是使用特定容器類的封裝對象作為其底層容器&#xff0c;提供一組特定的成員函…

MinnowBoard MAX單板UEFI BIOS代碼編譯教程

此教程用于UEFI EDK2代碼的研究&#xff0c;雖然EDK2框架代碼開源&#xff0c;但是都是在模擬器上跑仿真&#xff0c;差點意思&#xff0c;搞過嵌入式的應該有一個共識&#xff0c;是騾子是馬&#xff0c;你得把板子點亮啊。MinnowBoard MAX單板是intel10多年前發布的軟硬件全部…

AI Transformers 架構體系 權重文件類型 safeterson和gguf格式轉換【2-1】

模型權重文件&#xff1a;存儲訓練好的模型參數,也就是w和b&#xff0c;是模型推理和微調的基礎 .pt、.ckpt、.safetensors、gguf 配置文件&#xff1a;確保模型架構的一致性&#xff0c;使得權重文件能夠正確加載 config.json、generation_config.json 詞匯表文件&#xff1a;…

K8S微服務部署及模擬故障觀測

概述 本文介紹了如何在 Kubernetes (K8S) 集群中部署微服務&#xff0c;并模擬常見的故障場景&#xff08;如 Pod 故障、節點故障、網絡故障&#xff09;以測試系統的容錯能力。通過本實驗&#xff0c;了解 Kubernetes 的自動恢復機制以及如何通過監控和日志分析快速定位和解決…

OpenStack Yoga版安裝筆記(23)Swift安裝

一、官方文檔 Object Storage Install Guide — Swift 2.29.3.dev5 documentation 二、環境準備 之前的實驗&#xff0c;已經有controller, compute1, block1節點&#xff0c;并已經完成Keystone、Glance、Nova、Neutron、Cinder等主要OpenStack Service的安裝。 此處新增…

06-libVLC的視頻播放器:推流RTMP

創建媒體對象 libvlc_media_t* m = libvlc_media_new_path(m_pInstance, inputPath.toStdString().c_str()); if (!m) return -1; // 創建失敗返回錯誤 libvlc_media_new_path:根據文件路徑創建媒體對象。注意:toStdString().c_str() 在Qt中可能存在臨時字符串析構問題,建議…