機器學習——無監督學習(k-means算法)

1、K-Means聚類算法

K表示超參數個數,如分成幾個類別,K值就取多少。若無需求,可使用網格搜索找到最佳的K。
步驟:
1、隨機設置K個特征空間內的點作為初始聚類中心;
2、對于其他每個點計算到K個中心的距離,未知的點選擇最近的一個聚類中心點作為標記種類;
3、接著對標記的聚類中心之后,重新計算出每個聚類的中心點(平均值);
4、如果計算得出的新中心點與原中心點一樣,那么結束,否則執行第二步。
means表示尋找新的聚類中心點是采用特征平均值確定。

2、K-means圖解

具體演示視頻可查看(B站UP主:KnowingAI知智)
若我們手上有一些水果,我們希望對它們進行分類,假設分為兩類,則此時K=2。
step1:隨機選取兩個樣本點作為聚類中心點centrol
在這里插入圖片描述

step2:計算其他每個樣本與聚類中心centrol的距離,距離誰近就歸為哪類,一般采用歐氏距離。
在這里插入圖片描述

step3:根據已分類的結果,重新計算聚類中心,聚類中心是已分類的所有樣本的平均值(means)

在這里插入圖片描述
然后重復之前的步驟,重新計算距離進行劃分,直到某一次計算聚類中心點和上次相同,則聚類結束。

3、聚類算法優缺點分析

聚類算法不需要手動設置標簽,故屬于無監督學習,相比于監督學習,它更加簡單、易于理解,但是準確率方面不如監督學習。

4、K-Means()算法實現案例

API調用:

API:sklearn.cluster.KMeans(n_clusters=8, init='k=means++')
n_cluster:初始聚類中心數量,即K值
from sklearn.cluster import KMeans
import numpy as np
import matplotlib.pyplot as plt
# 生成示例數據,100個二維數據,橫坐標縱坐標都在0-1范圍內
X = np.random.rand(100, 2)
# 創建K-means模型
kmeans = KMeans(n_clusters=3)
# 訓練模型
kmeans.fit(X)
# 獲取聚類結果
labels = kmeans.labels_
# 獲取每個數據點的簇標簽。labels_是一個數組,表示每個數據點所屬的簇的索引。
centroids = kmeans.cluster_centers_
# 獲取每個簇的質心坐標。cluster_centers_是一個形狀為(n_clusters, n_features)的數組,表示每個簇的質心位置。
# 可視化結果
plt.scatter(X[:, 0], X[:, 1], c=labels, cmap='viridis')
plt.scatter(centroids[:, 0], centroids[:, 1], s=300, c='red', marker='x')
plt.show()

在這里插入圖片描述

5、聚類效果的評估(輪廓系數評估法)

內部距離最小化,外部距離最大化
輪廓系數: S C i = b i ? a i m a x ( b i , a i ) SCi=\frac{b_i-a_i}{max(b_i,a_i)} SCi=max(bi?,ai?)bi??ai??
b i b_i bi?:一個簇內某個樣本到其他簇的所有樣本距離的最小值
a i a_i ai?:一個簇內某個樣本到本身簇內所有樣本距離的平均值
b i > > a i b_i>>a_i bi?>>ai? 此時 S C i ≈ 1 SCi≈1 SCi1 效果好
b i < < a i b_i<<a_i bi?<<ai? 此時 S C i ≈ ? 1 SCi≈-1 SCi?1 效果差
輪廓系數取值范圍在 ( ? 1 , 1 ) (-1,1) (?1,1),越接近 1 1 1,聚類效果越好,越接近 ? 1 -1 ?1,聚類效果越差

from sklearn.metrics import silhouette_score  #計算輪廓系數,傳入樣本點和分類標簽

如上例中,加上如下代碼

from sklearn.metrics import silhouette_score
score = silhouette_score(X,labels)
print(f"輪廓系數為{score}")

輪廓系數為0.3873688462341751,分類效果一般。可以加一個循環找到一定范圍內最優的K值,此處用輪廓系數衡量

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
import numpy as np
import matplotlib.pyplot as plt
# 生成示例數據,100個二維數據,橫坐標縱坐標都在0-1范圍內
X = np.random.rand(100, 2)
# 創建K-means模型
best_score=0
for k in range(2,11):kmeans = KMeans(n_clusters=k)# 訓練模型kmeans.fit(X)# 獲取聚類結果labels = kmeans.labels_# 獲取每個數據點的簇標簽。labels_是一個數組,表示每個數據點所屬的簇的索引。centroids = kmeans.cluster_centers_score = silhouette_score(X,labels)if score > best_score:best_score = scorebest_k = k
print(f'最佳簇數: {best_k}, 輪廓系數: {best_score}')
# 最佳簇數: 4, 輪廓系數: 0.42684837185343705

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

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

相關文章

蕎面打造的甜蜜魔法:甜甜圈

食家巷蕎面甜甜圈是一款具有特色的美食。它以蕎面為主要原料&#xff0c;相較于普通面粉&#xff0c;蕎面具有更高的營養價值&#xff0c;富含膳食纖維、維生素和礦物質。蕎面甜甜圈的口感可能會更加扎實和有嚼勁&#xff0c;同時帶著蕎面特有的谷物香氣。在制作過程中&#xf…

FlutterWeb渲染模式及提速

背景 在使用Flutter Web開發的網站過程中&#xff0c;常常會遇到不同瀏覽器之間的兼容性問題。例如&#xff0c;在Google瀏覽器中動畫和交互都非常流暢&#xff0c;但在360瀏覽器中卻會出現卡頓現象&#xff1b;在Google瀏覽器中動態設置圖標顏色正常顯示&#xff0c;而在Safa…

8-阿里云服務器 ECS配置R及Studio Server

目錄 查看服務器系統 關于linux系統 安裝R 1,查看官方教程 2,安裝R ①修改sources.list文件 ②安裝R:點擊Y ③更新最新版R ④安裝 RStudio(省略此步驟) ?編輯 ⑤安裝 RStudio Server 登錄rstudio-server 1,添加賬號(root賬號不能登錄) 2,開啟8787端口訪…

SpringBoot+OSS實現文件上傳

創建spring boot項目 pom依賴 <dependency><groupId>com.aliyun.oss</groupId><artifactId>aliyun-sdk-oss</artifactId><version>3.17.4</version></dependency><dependency><groupId>javax.xml.bind</groupI…

SpringBoot項目練習

文章目錄 SpringBootVue后臺管理系統所需軟件下載、安裝、版本查詢Vue搭建一個簡單的Vue項目 Spring項目1項目架構 SpringBootVue后臺管理系統 學習視頻&#xff1a; https://www.bilibili.com/video/BV1U44y1W77D/?spm_id_from333.337.search-card.all.click&vd_sourcec…

深入Laravel事件系統:創建與使用事件的指南

Laravel的事件系統是一種強大的機制&#xff0c;它允許你將應用程序的行為封裝成事件&#xff0c;然后在適當的時候觸發這些事件。這不僅有助于代碼的解耦&#xff0c;還提高了應用程序的可維護性和可擴展性。本文將詳細介紹如何在Laravel中創建和使用事件&#xff0c;包括事件…

2024年7月6日隨筆

期末考試全部結束了&#xff0c;這個月是真累啊&#xff0c;一堆事&#xff0c;好在都熬過來了&#xff0c;上次參加的那個碼題杯自己居然進國賽了&#xff0c;我看了一下職業賽道和本科賽道的題&#xff0c;本科賽道的感覺要難上不少&#xff0c;比賽時間是一周后&#xff0c;…

Pytorch(筆記7損失函數類型)

前言 損失函數&#xff08;Loss Function&#xff09;&#xff1a;是定義在單個樣本上的&#xff0c;是指一個樣本的誤差&#xff0c;度量模型一次預測的好壞。 代價函數&#xff08;Cost Function&#xff09;成本函數經驗風險&#xff1a;是定義在整個訓練集上的&#xff0c…

集成學習(三)GBDT 梯度提升樹

前面學習了&#xff1a;集成學習&#xff08;二&#xff09;Boosting-CSDN博客 梯度提升樹&#xff1a;GBDT-Gradient Boosting Decision Tree 一、介紹 作為當代眾多經典算法的基礎&#xff0c;GBDT的求解過程可謂十分精妙&#xff0c;它不僅開創性地舍棄了使用原始標簽進行…

virtualbox窗口和win10窗口的切換

1、問題&#xff1a; 從windows切換到虛擬機可以用快捷鍵 ALTTAB&#xff0c;但是從虛擬機到windows使用 ALTTAB 無法成功切換 2、解決方法&#xff1a; 按下圖操作 按上面步驟設置之后&#xff0c;每次要從虛擬機窗口切換到windows窗口 只需要先按 CtrlAlt 跳出虛擬機窗口&…

【已解決】“import ... =“ 只能在 TypeScript 文件中使用

現象 在使用 import 語法的時候&#xff0c;代碼報紅&#xff0c;提示&#xff1a;“import ... “ 只能在 TypeScript 文件中使用 原因 代碼被 VSCode 解析成 TypeScript 語法 解決方案&#xff1a; 關閉 JavaScript 的驗證啟用即可。 mac 快捷方式&#xff1a;comman s…

微機原理與單片機 知識體系梳理

單片機筆記分享 我個人感覺單片機要記的東西很多&#xff0c;也很瑣碎&#xff0c;特別是一些位、寄存器以及相關作用等&#xff0c;非常難以記憶。因此復習時將知識點整理在了一起做成思維導圖&#xff0c;希望對大家有所幫助。內容不是很多&#xff0c;可能有些沒覆蓋全&…

vue-tabs標簽頁引入其他頁面

tabs頁面 <template> <div class"app-container"> <el-tabs v-model"activeName" type"card" tab-click"handleClick"> <el-tab-pane label"套餐用戶列表" name"first"> <user-list r…

VMware CentOS7 Linux 網絡配置

本文主要描述VMware虛擬機的網絡配置。 如上所示&#xff0c;在CentOS Linux虛擬機中設置網絡連接使用橋接模式&#xff0c;該模式對接主機物理網絡&#xff0c;直接由主機的物理網絡的DHCP服務器動態分配IP地址&#xff0c;或者在CentOS Linux的操作系統的網絡配置中設置靜態的…

HACCP體系認證:守護食品安全的黃金標準

在食品生產過程中&#xff0c;食品安全始終是重中之重。為了確保食品的安全性和質量&#xff0c;越來越多的企業開始采用HACCP&#xff08;危害分析關鍵控制點&#xff09;體系認證。這個體系不僅能幫助企業預防食品安全問題&#xff0c;還能顯著提升產品質量和市場競爭力。 HA…

android新聞app(二)

新聞詳細頁&#xff1a; 歷史瀏覽記錄SQList&#xff1a; 分類&#xff1a; 歷史瀏覽記錄主體UI和詳細&#xff1a; 側邊欄&#xff1a; 參考&#xff1a;浩宇開發

如何給gitlab其他訪問者創建賬號并增加權限

嗨&#xff0c;今天創建了項目之后&#xff0c;我想把項目鏈接發送給其他人&#xff0c;讓他下載這個項目&#xff0c;結果發現對方打開顯示登錄的界面&#xff0c;沒錯&#xff0c;他要想使用這個git下載項目&#xff0c;首先他的有一個git賬號 接下來我找有權限的相關人員給他…

網絡“ping不通”,如何排查和解決呢?

網絡問題往往復雜且難以預測&#xff0c;其中“ping不通”是常見的網絡故障之一。 1. 確認問題現象 首先&#xff0c;明確問題是完全無法ping通(無響應)還是ping通但有高延遲或丟包。這有助于縮小問題范圍。 2. 本地檢查 網絡接口狀態&#xff1a;使用ifconfig(Linux)或ipc…

認識并理解webSocket

今天逛牛客&#xff0c;看到有大佬分享說前端面試的時候遇到了關于webSocket的問題&#xff0c;一看自己都沒見過這個知識點&#xff0c;趕緊學習一下&#xff0c;在此記錄&#xff01; WebSocket 是一種網絡通信協議&#xff0c;提供了全雙工通信渠道&#xff0c;即客戶端和服…

策略為王股票軟件源代碼-----如何修改為自己軟件61----資訊菜單修改-----舉例---------調用同花順網頁------

http://stock.sina.com.cn 將原來的新浪行情,修改為同花順, 搜索 stock.sina.com.cn... StkUI\View\InfoView.cpp(58):char