sheng的學習筆記-AI-K均值算法

ai目錄:sheng的學習筆記-AI目錄-CSDN博客?

需要學習前置知識:聚類,可參考??sheng的學習筆記-聚類(Clustering)-CSDN博客

目錄

什么是k均值算法

流程

偽代碼

數據集

偽代碼?

代碼解釋

劃分示意圖

優化目標?

隨機初始化

選擇聚類數


什么是k均值算法

K-均值(K-Means Algorithm)是最普及的聚類算法,算法接受一個未標記的數據集,然后將數據聚類成不同的組。

流程

K-均值是一個迭代算法,假設我們想要將數據聚類成n個組,其方法為:

  1. 首先選擇個隨機的點,稱為聚類中心cluster centroids);
  2. 對于數據集中的每一個數據,按照距離個中心點的距離,將其與距離最近的中心點關聯起來,與同一個中心點關聯的所有點聚成一類。
  3. 計算每一個組的平均值,將該組所關聯的中心點移動到平均值的位置。
  4. 重復步驟。

示例圖如下?

迭代 1 次

迭代 3?次

迭代 10?次

偽代碼

樣本9~21的類別是“好瓜=否”,其他樣本的類別是“好瓜=是”。由于本節使用無標記樣本,因此類別標記信息未在表中給出。為避免運行時間過長,通常設置一個最大運行輪數或最小調整幅度閾值,若達到最大輪數或調整幅度小于閾值,則停止運行。下面以表9.1的西瓜數據集4.0為例來演示k均值算法的學習過程。為方便敘述,我們將編號為i的樣本為xi,這是一個包含“密度”與“含糖率”兩個屬性值的二維向量

數據集

偽代碼?

代碼解釋

算法分為兩個步驟,第一個for循環是賦值步驟,即:對于每一個樣例,計算其應該屬于的類。第二個for循環是聚類中心的移動,即:對于每一個類,重新計算該類的質心

1)假定聚類簇數k=3,算法開始時隨機選取三個樣本x6,x12,x24作為初始均值向量,即:

μ1=(0.403;0.237),μ2=(0.343;0.099),μ3=(0.478;0.437)。

2)考察樣本x1=(0.697;0.460),它與當前均值向量μ1,μ2,μ3的距離分別為0.369,0.506,0.220,因此x1將被劃入簇C3中。類似的,對數據集中的所有樣本考察一遍后,可得當前簇劃分為

C1={x3,x5,x6,x7,x8,x9,x10,x13,x14,x17,x18,x19,x20,x23};

C2={x11,x12,x16);

C3={x1,x2,x4,x15,x21,x22,x24,x25,x26,x27,x28,x29,x30};

3)于是,可從C1,C2,C3分別求出新的均值向量

4)?更新當前均值向量后,不斷重復上述過程,如圖9.3所示,第五輪迭代產生的結果與第四輪迭代相同,于是算法停止,得到最終的簇劃分

劃分示意圖

優化目標?

隨機初始化

選擇聚類數

沒有所謂最好的選擇聚類數的方法,通常是需要根據不同的問題,人工進行選擇的。選擇的時候思考我們運用K-均值算法聚類的動機是什么,然后選擇能最好服務于該目的標聚類數。

當人們在討論,選擇聚類數目的方法時,有一個可能會談及的方法叫作“肘部法則”。關于“肘部法則”,我們所需要做的是改變K值,也就是聚類類別數目的總數。我們用一個聚類來運行K均值聚類方法。這就意味著,所有的數據都會分到一個聚類里,然后計算成本函數或者計算畸變函數J。K代表聚類數字

我們可能會得到一條類似于這樣的曲線。像一個人的肘部。這就是“肘部法則”所做的,讓我們來看這樣一個圖,看起來就好像有一個很清楚的肘在那兒。好像人的手臂,如果你伸出你的胳膊,那么這就是你的肩關節、肘關節、手。這就是“肘部法則”。你會發現這種模式,它的畸變值會迅速下降,從1到2,從2到3之后,你會在3的時候達到一個肘點。在此之后,畸變值就下降的非常慢,看起來就像使用3個聚類來進行聚類是正確的,這是因為那個點是曲線的肘點,畸變值下降得很快,K=3之后就下降得很慢,那么我們就選K=3。當你應用“肘部法則”的時候,如果你得到了一個像上面這樣的圖,那么這將是一種用來選擇聚類個數的合理方法。

例如,我們的 T-恤制造例子中,我們要將用戶按照身材聚類,我們可以分成3個尺寸:S,M,L,也可以分成5個尺寸XS,S,M,L,XL,這樣的選擇是建立在回答“聚類后我們制造的T-恤是否能較好地適合我們的客戶”這個問題的基礎上作出的。

參考文章:

吳恩達機器學習

書:機器學習? ?周志華

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

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

相關文章

工作目錄問題,明明有該文件卻import錯誤?

背景 最近在進行多模塊集成的時候,出現了import錯誤的現象,雖然直接用絕對目錄解決了,但是顯然不優雅,在復習了有關工作目錄的知識后,了解到了問題所在。故寫此博客,希望對讀者有所幫助。 場景說明 有兩…

Interposer, 基板,轉接板

2. 結構與材料 3. 應用領域 4. 總結 Interposer、基板和轉接板在電子封裝和連接技術中各自扮演著不同的角色,以下是對它們之間區別的清晰解釋: 1. 定義與功能 Interposer: 定義:Interposer是一種中介層技術,用于實現芯片之間的水平互連和垂直互連。功能:通常是一個薄型的…

鴻蒙期末項目(3)

服務器搭建完成之后,編寫了諸多api用于數據傳輸工作(略) 編寫完成之后,回到鴻蒙開發工具,開始編寫搜索頁面的代碼。 打開搜索頁面時,先會展示歷史搜索記錄(如果有的話),…

Kafka入門到精通(四)-SpringBoot+Kafka

一丶IDEA創建一個空項目 二丶添加相關依賴 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springf…

SQL 查詢中 (+) 符號的含義

您已經很好地解釋了 SQL 查詢中 () 符號的含義&#xff0c;它確實用于表示左外連接&#xff08;LEFT OUTER JOIN&#xff09;&#xff0c;這是 SQL 中的一種連接操作。以下是對您提供的信息的補充和完善&#xff1a; ### 左外連接&#xff08;LEFT OUTER JOIN&#xff09;&…

hudi系列-schema evolution(一)

hudi+flink在非schema on read模式下也表現出了支持一部分的schema evolution功能,本篇中測試一下在非schema on read模式下,發生各種列變更情況時數據寫入與讀取情況。 flink 1.14.5hudi 0.13.1mor表思路: 選擇mor表是因為它的數據文件有avro和parquet兩種格式,能覆蓋得更…

java中常用集合(邊補充)

java中開發常用集合&#xff08;邊補充&#xff09; 一、單列集合Collection1.1List接口1.1.1 ArrayList1.1.2 LinkedList1.1.3 Vector&#xff08;線程安全&#xff09;1.1.4 CopyOnWriteArrayList&#xff08;線程安全&#xff09; 1.2 Set接口1.2.1 HashSet1.2.2 LinkedHash…

用戶訂單管理API:輕松管理,購物無憂

在當今數字化時代&#xff0c;電子商務已經成為人們購物的首選方式。與傳統的實體店相比&#xff0c;電商的優勢在于便捷、快速、多樣化等特點&#xff0c;使得更多的消費者選擇了通過網絡購物。而作為電商平臺&#xff0c;如何提供更好的購物體驗&#xff0c;是每個平臺都需要…

企業工程項目管理系統源碼:Java版源碼解析

一、項目概述 鴻鵠工程項目管理系統是基于Spring Cloud、Spring Boot、Mybatis、Vue和ElementUI技術棧&#xff0c;采用前后端分離架構構建的工程管理軟件。它旨在應對企業快速發展中的管理挑戰&#xff0c;提升工程管理效率&#xff0c;減輕工作負擔&#xff0c;加速信息處理…

一次關于k8s的node節點NotReady的故障排查

master現象 分析 kubectl get nodes -A 看了下pod的狀態&#xff0c;好多CrashLoopBackOff kubectl get nodes -o wide 定位到那個具體node的IP地址&#xff0c;登錄對應的IP去查看為什么會這樣 node節點 journalctl -xe -f -u kubelet 查看此節點的 kubelet 服務&#xff…

基于SpringBoot的藏區特產銷售平臺

你好呀&#xff0c;我是計算機學姐碼農小野&#xff01;如果有相關需求&#xff0c;可以私信聯系我。 開發語言&#xff1a; Java 數據庫&#xff1a; MySQL 技術&#xff1a; SpringBoot框架 工具&#xff1a; MyEclipse 系統展示 首頁 個人中心 特產信息管理 訂單管…

華寬通中標長沙市政務共性能力建設項目,助力智慧政務建設新飛躍

在數字化浪潮的推動下&#xff0c;長沙市政府正積極擁抱智慧城市建設&#xff0c;以科技力量提升政務服務效能。華寬通憑借其卓越的技術實力與豐富的項目經驗&#xff0c;成功中標長沙市政務共性能力建設項目&#xff0c;這無疑是對華寬通在智慧城市領域實力的高度認可。 華寬…

huggingface_hub 設置國內鏡像

要設置HuggingFace Hub的國內鏡像&#xff0c;你可以按照以下步驟進行操作&#xff0c;以確保從國內鏡像站點下載Hugging Face模型和數據集。 1. 安裝依賴 首先&#xff0c;確保你已經安裝了huggingface_hub庫。如果沒有&#xff0c;可以通過pip進行安裝&#xff1a; bash復制…

背部筋膜炎最有效的治療方法

背部筋膜炎的引起原因可以歸結為多個方面&#xff0c;以下是詳細的分點表示和歸納&#xff1a; 1、慢性勞損&#xff1a;長時間使用背部&#xff0c;如經常按摩背部&#xff0c;會導致筋膜老化、發炎&#xff0c;進而引發背部筋膜炎。癥狀可能包括背部疼痛、痙攣、肌肉無力感等…

Python 判斷for循環最后一次的6種方法

在Python中&#xff0c;通常我們不會直接判斷for循環是否正在執行最后一次迭代&#xff0c;因為Python的for循環是基于可迭代對象的&#xff0c;它不知道也不關心迭代的內部狀態&#xff08;比如當前是第幾次迭代&#xff09;。但是&#xff0c;我們可以使用一些技巧來間接地實…

uboot環境變量操作命令setenv和saveenv

uboot啟動的時候會將環境變量從flash讀取到DRAM中,使用命令 setenv修改的是DRAM中環境變量,修改以后要使用saveenv命令將修改 后的環境變量保存到flash中,否則的話uboot下一次重啟會繼續使用以前的環境變量值.setenv setenv - set environment variables Usage: setenv seten…

LeetCode.295數據流的中位數詳解

問題描述 中位數是有序整數列表中的中間值。如果列表的大小是偶數&#xff0c;則沒有中間值&#xff0c;中位數是兩個中間值的平均值。 例如 arr [2,3,4] 的中位數是 3 。例如 arr [2,3] 的中位數是 (2 3) / 2 2.5 。 實現 MedianFinder 類: MedianFinder() 初始化 Medi…

Advantest 93000測試機中CLOCK DOMAIN 詳解

愛德萬測試&#xff08;Advantest&#xff09;的V93000系列測試系統是一個高度模塊化和可擴展的平臺&#xff0c;專為復雜和高性能的半導體器件測試而設計&#xff0c;包括系統級芯片&#xff08;SoC&#xff09;、存儲器、射頻&#xff08;RF&#xff09;和混合信號器件等。在…

剪畫小程序:從失業到自媒體:37歲的勇敢轉身!

37歲啦&#xff0c;按說這年紀工作該穩穩當當&#xff0c;家庭也和和美美。可誰能想到&#xff0c;我竟然失業了&#xff01;當時啊&#xff0c;心里頭那叫一個迷茫、焦慮&#xff0c;感覺天都要塌下來了。 可日子還得過呀&#xff0c;總不能就這么被生活給打倒&#xff01;現在…

白敬亭章若楠甜度報表的難哄大師

#白敬亭章若楠&#xff0c;甜度爆表的難哄大師#&#x1f389;&#x1f389;&#x1f389;各位小伙伴們&#xff0c;你們還記得那個讓我們心跳加速、嘴角上揚的CP組合嗎&#xff1f;沒錯&#xff0c;就是白敬亭和章若楠&#xff01;他們可是憑借一部新劇&#xff0c;再次讓我們感…