機器學習-聚類問題

前言

聚類算法又叫做”無監督分類“,目標是通過對無標記訓練樣本來揭示數據的內在性質及 規律,為進一步的數據分析提供基礎。

Kmeans

作為聚類算法的典型代表,Kmeans可以說是最簡單的聚類算法,沒有之一,那她是怎么完成聚類的呢?

  1. 算法接受參數k
  2. 給定樣本集 D = { x 1 , x 2 , . . . , x n } D=\{x_1,x_2,...,x_n\} D={x1?,x2?,...,xn?}
  3. 隨機選點k個中心(質心)
  4. 遍歷樣本集,先取距離最近的質心,從而根據質心分解樣本集D簇劃分 C = { C 1 , C 2 , . . . , C k } C=\{C_1,C_2,...,C_k\} C={C1?,C2?,...,Ck?}
  5. 最小化平方誤差在這里插入圖片描述
  6. 利用簇中均值等方法更新該簇類的中心k個;
  7. 重覆4-6的步驟,直至E不再更新

Kmeans中用的是歐式距離

kmeans的計算過程

  1. 現在有4組數據,每組數據有2個維度,對其進行聚類分為2類,將其可視化一下。
    在這里插入圖片描述
  2. 通過比較,將其進行歸類。并使用平均法更新中心位置。在這里插入圖片描述
  3. 再次計算每個點與更新后的位置中心的距離,直到上一次的類別標記無變化,即可停止
import matplotlib.pyplot as plt
from sklearn.cluster import  KMeans
from sklearn.datasets import make_blobs## 創建數據集
X, _ = make_blobs(n_samples=10000, centers=2, random_state=0)## kmeans超參數值列表
n_clusters_list = [4, 8, 16]# 圖的框架
fig, axs = plt.subplots(1, len(n_clusters_list), figsize=(12, 5)
)
axs = axs.T
for j, n_clusters in enumerate(n_clusters_list):## 創建模型algo = KMeans(n_clusters=n_clusters, random_state=random_state, n_init=3)algo.fit(X)centers = algo.cluster_centers_axs[j].scatter(X[:, 0], X[:, 1], s=10, c=algo.labels_)## 畫質心axs[j].scatter(centers[:, 0], centers[:, 1], c="r", s=20)axs[j].set_title(f"{n_clusters} clusters")
for ax in axs.flat:ax.label_outer()ax.set_xticks([])ax.set_yticks([])
plt.show()

聚類算法用于降維

K-Means聚類最重要的應用之一是非結構數據(圖像,聲音)上的矢量量化(VQ)。非結構化數據往往占用比較多的儲存空間,文件本身也會比較大,運算非常緩慢,我們希望能夠在保證數據質量的前提下,盡量地縮小非結構化數據的大小,或者簡化非結構化數據的結構。

  1. 一組40個樣本的數據,分別含有40組不同的信息(x1,x2)。
  2. 將代表所有樣本點聚成4類,找出四個質心.這些點和他們所屬的質心非常相似,因此他們所承載的信息就約等于他們所在的簇的質心所承載的信息。
  3. 使用每個樣本所在的簇的質心來覆蓋原有的樣本,有點類似四舍五入的感覺,類似于用1來代替0.9和0.8。

這樣,40個樣本帶有的40種取值,就被我們壓縮了4組取值,雖然樣本量還是40個,但是這40個樣本所帶的取值其實只有4個,就是分出來的四個簇的質心。查看官方用例

主要參考

《機器學習理論(十三)Kmeans聚類》

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

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

相關文章

MySQL為何偏愛B+樹索引

一、MySQL、B樹概念 MySQL是一種關系型數據庫,它使用SQL語言來操作數據。SQL語言可以實現對數據的增刪改查等操作,但是如果數據量很大,那么這些操作的效率就會很低。為了提高效率,MySQL引入了索引的概念。 索引是一種數據結構&am…

人體關鍵點檢測1:人體姿勢估計數據集

人體關鍵點檢測1:人體姿勢估計數據集 目錄 人體關鍵點檢測1:人體姿勢估計數據集 1.人體姿態估計 2.人體姿勢估計數據集 (1)COCO數據集 (2)MPII數據集 (3)Human3.6M &#xf…

PostgreSQL 主鍵和唯一鍵的區別

主鍵和唯一鍵的區別 主鍵(Primary Key): 主鍵是用于唯一標識表中的每一條記錄的鍵。主鍵必須是唯一的,不允許為空。一個表只能有一個主鍵。主鍵可以由一個或多個字段組成。主鍵的值在整個表中必須是唯一的,用于確保數據…

編譯器:swc 究竟比 babel 快在哪里?

前言 swc 與 babel 都是 JavaScript 編譯器,它們的主要功能是將 ES2015 以及 TypeScript, Flow, JSX 等語法轉換為瀏覽器或環境中的向后兼容的 JavaScript 代碼。 哪里快了? 1. 開發語言的優勢 swc 是用 Rust 語言開發的,而 babel 是用 Java…

MS5228/5248/5268:2.7V 到 5.5V、 12/14/16Bit、內置基準、八通道數模轉換器

MS5228/MS5248/MS5268 是一款 12/14/16bit 八通道輸出的電壓型 DAC ,內部集成上電復位電路、可選內部基準、接口采用四線串口模式, 最高工作頻率可以到 40MHz ,可以兼容 SPI 、 QSPI 、 DSP 接口和 Microwire 串口。輸出接到一個 …

IP地址/16或者/24的意義

IP地址/16或者/24的意義 2023-04-26 16:54 獵手家園 閱讀(533) 評論(0) 編輯 收藏 舉報 當創建VPC專有網絡時,許多人會遇到填寫IPv4地址的情況,通常使用的格式是xxx.xxx.xxx.xxx/16或者xxx.xxx.xxx.xxx/24。那么這個斜杠后面的數字代表什么意思呢&#…

<習題集><LeetCode><鏈表><2/19/21/23/24>

目錄 2. 兩數相加 19. 刪除鏈表的倒數第 N 個結點 21. 合并兩個有序鏈表 23. 合并 K 個升序鏈表 24. 兩兩交換鏈表中的節點 2. 兩數相加 https://leetcode.cn/problems/add-two-numbers/ public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//head是cur鏈表頭節點…

pdf轉png的兩種方法

背景:pdf在一般公司,沒有辦公系統,又不是word/wps/Office系統,讀不出來,識別不了,只能將其轉化為圖片png,因此在小公司或者一般公司就需要pdf轉png的功能。本文將詳細展開。 1、fitz庫(也就是PyMuPDF) 直接pip安裝PyMuPDF即可使用,直接使用fitz操作,無需其他庫。 …

Go語言實現深度學習的正向傳播和反向傳播

文章目錄 開發前言開發理論圖解理論數據類型數學函數數據節點統一抽象變量數據節點常量數據節點單目運算封裝雙目運算封裝算子節點統一抽象基礎算子加法算子減法算子乘法算子除法算子指數算子對數算子正切算子正弦算子余弦算子數據流圖正向傳播反向傳播正向訓練反向訓練運行示例…

我的記事本

url uniform resource locator. 統一資源定位符 請求狀態碼 1XX:信息響應 2XX:成功響應 3XX:重定向消息 4XX:客戶端錯誤響應 5XX:服務器端錯誤響應 IP地址分類 本機回環IP地址:127.0.0.1 ~ 127.255.255.254 局域網IP(私網IP) 192.168.0.0 &am…

船舶機電設備振動數據采集監控系統解決方案

船舶運行中,通常需要通過振動數據采集系統對船舶的各個機電設備運行進行監控,有助于在設備故障時快速預警,進行診斷、分析和維護,保證船舶機電設備正常工作,從而確保工作人員及船舶的安全。 船舶各種機電設備會產生大…

vLLM介紹

簡介 vLLM 工程github地址 Paged attention論文地址 vLLM開發者介紹 Woosuk Kwon vLLM: A high-throughput and memory-efficient inference and serving engine for LLMs. SkyPilot: A framework for easily and cost effectively running machine learning workloads on …

【模型量化】神經網絡量化基礎及代碼學習總結

1 量化的介紹 量化是減少神經網絡計算時間和能耗的最有效的方法之一。在神經網絡量化中,權重和激活張量存儲在比訓練時通常使用的16-bit或32-bit更低的比特精度。當從32-bit降低到8-bit,存儲張量的內存開銷減少了4倍,矩陣乘法的計算成本則二…

ALNS算法中隨機化重要性的評價

文章概述 本研究分析了在海上提貨和交付問題中使用的ALNS元啟發式算法中的隨機化成分。研究者提出了簡單的確定性替代方案,并通過實驗比較了隨機化和確定性成分的性能。結果表明,初始實現的簡單確定性替代方案能夠與隨機化成分的性能相匹配。這項研究為…

IDEA使用git從遠程倉庫獲取項目

將地址填入url中 然后直接clone就行

《Easy3d+Qt+VTK》學習

《Easy3dQtVTK》學習-1、編譯與配置 一、編譯二、配置注 一、編譯 1、 資源下載:easy3d giuhub 2、解壓縮 3、用qt打開CMakeLists.txt即可 4、點擊項目,選擇debug或者release,圖中3處可自行選擇,因為我的qt版本是6&#xff0c…

Java集合大總結——Collections工具類

簡單闡述 參考操作數組的工具類:Arrays,Collections 是一個操作 Set、List 和 Map 等集合的工具類。 常用方法 Collections 中提供了一系列靜態的方法對集合元素進行排序、查詢和修改等操作,還提供了對集合對象設置不可變、對集合對象實現…

jdbc4.MySQLSyntaxErrorException: Query was empty

出現這種異常的原因,有幾個要點 檢查sql語句是否正確檢查你的條件是否真的被sql使用 背景 delete sql在xml中,賦值list對象,計劃進行批量刪除的sql,這時出現了異常,檢查后,發現這個list竟然是空&#xff…

Linux下的軟硬鏈接

Linux下的軟硬鏈接 Linux下的硬鏈接和軟鏈接是一種文件系統級別的鏈接方式,它們允許你在不同的目錄中創建指向同一個文件的引用。硬鏈接和軟鏈接的主要區別在于它們的實現方式和刪除方式。 硬鏈接(Hard Link): 硬鏈接是指向同一…

在linux上如何運用虛擬數據優化器VDO

本章主要介紹虛擬化數據優化器。 什么是虛擬數據優化器VDO 創建VDO設備以節約硬盤空間 16.1 了解什么是VDO VDO全稱是Virtual Data Optimize(虛擬數據優化),主要是為了節省硬盤空間。 現在假設有兩個文件file1和 file2,大小都是10G。file…