国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)

這篇具有很好參考價值的文章主要介紹了【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

1 前言

1.1 K-means的介紹

K均值(K-means)是一種基于距離度量的聚類算法,其主要思想是將數(shù)據(jù)集劃分為k個不同的簇,每個簇代表一個相似度較高的數(shù)據(jù)組。該算法通過迭代優(yōu)化來最小化所有數(shù)據(jù)點與其所屬簇的歐氏距離之和,從而找到最佳的簇劃分。

需要區(qū)分一下,K-means和KNN是兩種不同的機器學習算法,K-means和KNN都是基于距離度量的算法,但前者用于聚類問題,而后者用于分類問題

  • K-means是一種聚類算法,它旨在將數(shù)據(jù)集分成k個不同的簇,每個簇代表一個相似度較高的數(shù)據(jù)組。該算法通過迭代優(yōu)化來最小化所有數(shù)據(jù)點與其所屬簇的歐氏距離之和,從而找到最佳的簇劃分。
  • KNN(K-Nearest Neighbors)是一種分類算法,它將新樣本與訓練集中所有樣本進行比較,并將其歸為最接近的K個鄰居中出現(xiàn)最多的類別。KNN算法使用歐氏距離或曼哈頓距離等計算相似性,然后根據(jù)K值確定鄰居的數(shù)量。

優(yōu)點:

  • 簡單易用:算法的實現(xiàn)十分簡單,也容易理解。
  • 可擴展性:在處理大規(guī)模數(shù)據(jù)時表現(xiàn)優(yōu)秀,可以通過并行化等方法加速計算過程。
  • 效率高:算法的迭代次數(shù)通常較少,因此計算速度很快。

缺點:

  • 對初始值敏感:由于K-means算法是基于隨機初始值進行迭代的,因此其結(jié)果很大程度上取決于初始中心點的選擇。
  • 容易陷入局部最優(yōu):容易陷入局部最優(yōu)解,無法保證找到全局最優(yōu)解。
  • 簇數(shù)需要預先確定:需要預先確定簇的數(shù)量k,而實際應用中往往并不知道應該將數(shù)據(jù)劃分成多少個簇。

1.2 K-means的應用

  1. 自然語言處理:K-means算法可用于文本聚類、主題建模和情感分析等自然語言處理任務。例如,將大量新聞文章聚類成不同的主題簇。

  2. 圖像處理:K-means算法可用于圖像分割、圖像壓縮和特征提取等圖像處理任務。例如,使用K-means算法將圖像像素分類為具有相似顏色和紋理的區(qū)域。

  3. 生物信息學:K-means算法可用于DNA序列和蛋白質(zhì)序列的聚類和分類。例如,將蛋白質(zhì)序列聚類到具有相似結(jié)構或功能的族群中。

  4. 金融風險管理:K-means算法可用于檢測潛在的投資風險。例如,將投資組合分為不同的風險等級,并確定與每個等級相關的風險因素。

  5. 市場細分:K-means算法可用于市場細分和客戶細分。例如,將消費者分成具有相似需求和偏好的不同類別,以便制定更有效的市場營銷策略。

  6. 醫(yī)療診斷:K-means算法可用于分類和預測疾病。例如,將患有相似癥狀的患者分成具有類似病情的子組。

2 demo實戰(zhàn)演示

2.1 導入函數(shù)

import matplotlib.pyplot as plt
from kneed import KneeLocator
from sklearn.datasets import make_blobs
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score
from sklearn.preprocessing import StandardScaler

2.2 創(chuàng)建數(shù)據(jù)

#n_samples是要生成的樣本總數(shù),centers是要生成的中心數(shù),cluster_std是標準偏差
features, true_labels = make_blobs(
     n_samples=200,
     centers=3,
     cluster_std=2.75,
     random_state=42
 )

查看數(shù)據(jù)

features[:5]

true_labels[:5]

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)

縮放

scaler = StandardScaler()
scaled_features = scaler.fit_transform(features)
scaled_features[:5]

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)

2.3 擬合聚類

kmeans = KMeans(
    init="random",
    n_clusters=3,
    n_init=10,
    max_iter=300,
    random_state=42
)
kmeans.fit(scaled_features)

2.4 查看結(jié)果

# 最低的SSE值
kmeans.inertia_

# 質(zhì)心的最終位置
kmeans.cluster_centers_

# 收斂所需的迭代次數(shù)
kmeans.n_iter_

一般有兩種常見的方法評估聚類數(shù):

  • 拐點法
  • 輪廓系數(shù)
# 選擇合適的簇,注意這里把n_clusters改了,運行多個值并且記錄結(jié)果
kmeans_kwargs = {
    "init": "random",
    "n_init": 10,
    "max_iter": 300,
    "random_state": 42,
}

sse = []
for k in range(1, 11):
    kmeans = KMeans(n_clusters=k, **kmeans_kwargs)
    kmeans.fit(scaled_features)
    sse.append(kmeans.inertia_)

# 可視化
 plt.style.use("fivethirtyeight")
 plt.plot(range(1, 11), sse)
 plt.xticks(range(1, 11))
 plt.xlabel("Number of Clusters")
 plt.ylabel("SSE")
 plt.show()

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)

如圖,這里很明顯肉眼可見拐點是3,如果難以辨別可以通過kned識別

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)

查看輪廓系數(shù),輪廓系數(shù)是集群凝聚力和分離度的度量。它基于兩個因素量化數(shù)據(jù)點與其分配的集群的匹配程度:輪廓系數(shù)值介于-1和之間1。較大的數(shù)字表示樣本離它們的集群比離其他集群更近。

silhouette_coefficients = []

# 從輪廓系數(shù)的第2個集群開始
for k in range(2, 11):
    kmeans = KMeans(n_clusters=k, **kmeans_kwargs)
    kmeans.fit(scaled_features)
    score = silhouette_score(scaled_features, kmeans.labels_)
    silhouette_coefficients.append(score)
    
# 選最高分k值
plt.style.use("fivethirtyeight")
plt.plot(range(2, 11), silhouette_coefficients)
plt.xticks(range(2, 11))
plt.xlabel("Number of Clusters")
plt.ylabel("Silhouette Coefficient")
plt.show()

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)
根據(jù)結(jié)果取最高分的點,這里依然是3

3 使用高級技術評估集群性能*

為了應付數(shù)據(jù)導致失真的情況,這是除了拐點法和輪廓系數(shù)外的一種高級方法

3.1 導入函數(shù)

from sklearn.cluster import DBSCAN
from sklearn.datasets import make_moons
from sklearn.metrics import adjusted_rand_score

3.2 整合數(shù)據(jù)

函數(shù)如其名,整合成新月數(shù)據(jù)

features, true_labels = make_moons(
    n_samples=250, noise=0.05, random_state=42
)
scaled_features = scaler.fit_transform(features)

3.3 計算

分別用k均值算法和DBSCAN算法進行計算對比,

# Instantiate k-means and dbscan algorithms
kmeans = KMeans(n_clusters=2)
dbscan = DBSCAN(eps=0.3)

# Fit the algorithms to the features
kmeans.fit(scaled_features)
dbscan.fit(scaled_features)

# Compute the silhouette scores for each algorithm
kmeans_silhouette = silhouette_score(
    scaled_features, kmeans.labels_
).round(2)
dbscan_silhouette = silhouette_score(
   scaled_features, dbscan.labels_
).round (2)

kmeans_silhouette

dbscan_silhouette

可視化結(jié)果:

# 繪制數(shù)據(jù)和集群輪廓比較
fig, (ax1, ax2) = plt.subplots(
    1, 2, figsize=(8, 6), sharex=True, sharey=True
)
fig.suptitle(f"Clustering Algorithm Comparison: Crescents", fontsize=16)
fte_colors = {
    0: "#008fd5",
    1: "#fc4f30",
}
# k-means
km_colors = [fte_colors[label] for label in kmeans.labels_]
ax1.scatter(scaled_features[:, 0], scaled_features[:, 1], c=km_colors)
ax1.set_title(
    f"k-means\nSilhouette: {kmeans_silhouette}", fontdict={"fontsize": 12}
)

# dbscan
db_colors = [fte_colors[label] for label in dbscan.labels_]
ax2.scatter(scaled_features[:, 0], scaled_features[:, 1], c=db_colors)
ax2.set_title(
    f"DBSCAN\nSilhouette: {dbscan_silhouette}", fontdict={"fontsize": 12}
)
plt.show()

【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)

也可以參考調(diào)整蘭特指數(shù) (ARI,adjusted rand index),ARI一般介于-1到1之間:

  • 當ARI等于1時,表示兩個聚類結(jié)果完全一致,即兩個聚類結(jié)果中所有樣本都被分配到了同一個簇中,或者兩個聚類結(jié)果中所有的不同簇的元素都是相同的。因此,ARI等于1時,表示聚類結(jié)果非常好。

  • 當ARI等于0時,表示兩個聚類結(jié)果之間的一致性與隨機模型的預期一致性相同。這意味著,兩個聚類結(jié)果沒有更多的關聯(lián)比隨機分配的情況要好,也就是說,聚類算法表現(xiàn)不佳。

  • 當ARI小于0時,表示兩個聚類結(jié)果之間的一致性比隨機模型還差。這通常出現(xiàn)在聚類結(jié)果的標簽彼此之間毫無關系或者是完全相反的情況下,例如,兩個聚類結(jié)果之間的標簽是完全不同的情況下。

ari_kmeans = adjusted_rand_score(true_labels, kmeans.labels_)
ari_dbscan = adjusted_rand_score(true_labels, dbscan.labels_)

round(ari_kmeans, 2)

round(ari_dbscan, 2)

這里算到結(jié)果是0.471.0,ARI 表明,與k均值相比,DBSCAN 是合成新月示例的最佳選擇

4 討論

K-means總體來說不難,且有多個指標來衡量聚類的質(zhì)量。下次出一波番外篇,記錄如何構建Pineline處理TCGA的數(shù)據(jù)。文章來源地址http://www.zghlxwxcb.cn/news/detail-463722.html

到了這里,關于【機器學習實戰(zhàn)】Python基于K均值K-means進行聚類(九)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • python機器學習——聚類評估方法 & K-Means聚類 & 神經(jīng)網(wǎng)絡模型基礎

    python機器學習——聚類評估方法 & K-Means聚類 & 神經(jīng)網(wǎng)絡模型基礎

    1、隨機設置K個特征空間內(nèi)的點作為初始的聚類中心 2、對于其他每個點計算到K個中心的距離,未知的點選擇最近的一個聚類中心點作為標記類別 3、接著對著標記的聚類中心之后,重新計算出每個聚類的新中心點(平均值) 4、如果計算得出的新中心點與原中心點一樣,那么

    2024年02月12日
    瀏覽(21)
  • 機器學習(八) — K-means

    機器學習(八) — K-means

    1 definition randomly initialize K cluster centroids μ 1 , μ 2 , ? mu_1, mu_2, cdots μ 1 ? , μ 2 ? , ? repeat: assign each point to its closest centroid μ mu μ recompute the centroids(average of the closest point) 2 optimazation objective c ( i ) c^{(i)} c ( i ) = index of cluster to which example x ( i ) x^{(i)} x ( i ) is currently assign

    2024年01月21日
    瀏覽(22)
  • 【機器學習】十大算法之一 “K-means”

    【機器學習】十大算法之一 “K-means”

    ? 作者主頁: 愛笑的男孩。的博客_CSDN博客-深度學習,活動,python領域博主 愛笑的男孩。擅長深度學習,活動,python,等方面的知識,愛笑的男孩。關注算法,python,計算機視覺,圖像處理,深度學習,pytorch,神經(jīng)網(wǎng)絡,opencv領域. https://blog.csdn.net/Code_and516?type=blog 個人簡介:打工人。 持續(xù)分

    2024年02月10日
    瀏覽(18)
  • 機器學習第十一課--K-Means聚類

    機器學習第十一課--K-Means聚類

    K-Means算法是最經(jīng)典的聚類算法,幾乎所有的聚類分析場景,你都可以使用K-Means,而且在營銷場景上,它就是\\\"King\\\",所以不管從事數(shù)據(jù)分析師甚至是AI工程師,不知道K-Means是”不可原諒“的一件事情。在面試中,面試官也經(jīng)常問關于K-Means的問題。雖然算法簡單,但也有一些需

    2024年02月07日
    瀏覽(26)
  • 機器學習——K-Means算法優(yōu)化(一)代價函數(shù)

    機器學習——K-Means算法優(yōu)化(一)代價函數(shù)

    在K-Means算法中,對K個質(zhì)心的選擇,容易陷入局部最小值,從而每次聚類得到不同的結(jié)果。 使用多次的隨機初始化,并計算每一次建模得到的代價函數(shù)值,選取最小的代價函數(shù)值作為聚類結(jié)果,代價函數(shù)公式如下 J ( c ( 1 ) , … , c ( m ) , μ 1 , … , μ K ) = 1 m ∑ i = 1 m ∣ ∣ x (

    2024年02月02日
    瀏覽(23)
  • 傳統(tǒng)機器學習(三)聚類算法K-means(一)

    傳統(tǒng)機器學習(三)聚類算法K-means(一)

    K-Means算法是無監(jiān)督的聚類算法,它實現(xiàn)起來比較簡單,聚類效果也不錯,因此應用很廣泛。K-Means基于歐式距離認為兩個目標距離越近,相似度越大。 1.1.1 算法流程 (1)圖a表達了初始的數(shù)據(jù)集, 假設k=2; (2)在圖b中,隨機選擇兩個k類的對應的類別質(zhì)心,即圖中的紅色質(zhì)

    2023年04月15日
    瀏覽(17)
  • 【機器學習】K-means聚類算法:原理、應用與優(yōu)化

    【機器學習】K-means聚類算法:原理、應用與優(yōu)化

    一、引言 1、簡述聚類分析的重要性及其在機器學習中的應用 ??聚類分析,作為機器學習領域中的一種無監(jiān)督學習方法,在數(shù)據(jù)探索與知識發(fā)現(xiàn)過程中扮演著舉足輕重的角色。它能夠在沒有先驗知識或標簽信息的情況下,通過挖掘數(shù)據(jù)中的內(nèi)在結(jié)構和規(guī)律,將數(shù)據(jù)對象自動

    2024年04月13日
    瀏覽(37)
  • 吳恩達471機器學習入門課程3第1周——K-means

    吳恩達471機器學習入門課程3第1周——K-means

    實現(xiàn) K-means 算法,并將其用于圖像壓縮。 您將從一個樣本數(shù)據(jù)集開始,幫助您獲得 K-means 算法的工作概述 然后,您將使用 K-means 算法進行圖像壓縮,將出現(xiàn)在圖像中的顏色數(shù)量減少到僅包括那些在該圖像中最常見的顏色。 K-means 算法是一種自動將相似數(shù)據(jù)點聚合在一起的方

    2024年02月11日
    瀏覽(26)
  • [機器學習]K-means算法詳解:原理、優(yōu)缺點、代碼實現(xiàn)、變體及實際應用

    文章首發(fā)于若綰 [機器學習]K-means算法詳解:原理、優(yōu)缺點、代碼實現(xiàn)、變體及實際應用,轉(zhuǎn)載請注明出處。 K-means算法是一種非常流行的無監(jiān)督學習方法,主要應用于聚類問題。本篇博客將詳細介紹K-means算法的原理、優(yōu)缺點及實際應用場景。 K-means算法的核心思想是將數(shù)據(jù)劃分

    2024年02月08日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包