k-means聚類簡介

2021-02-13 Python程式設計師

Python部落(python.freelycode.com)組織翻譯,禁止轉載,歡迎轉發。 前提條件

特定領域的經驗要求:無

專業經驗要求:無行業經驗

不需要機器學習的知識,但是讀者應該熟悉基本的數據分析(如,描述性分析)。為了實踐該示例,讀者也應該熟悉Python。

K-means聚類簡介

K-means聚類是一種無監督學習,用於有未標記的數據時(例如,數據沒有定義類別或組)。該算法的目標是在數據中找到分組,變量K代表分組的個數。該算法迭代地分配每個數據點到提供特徵的K分組中的一個。數據點基於特徵相似性聚集。K-means聚類算法的結果是:

1. K聚類的質心,它可以用來標記新數據

2. 訓練數據標記(每個數據點被分配到一個單一的集群 )

聚類允許你發現和分析有機形成的組,而不是在查看數據之前定義組。下面例子中「選擇K」的步驟描述如何確定組的數目。

集群的每個質心都是特徵值的集合,它定義所產生的組。檢查質心特徵權重可以用來定性解釋每個集群代表什麼樣的組。

這篇K-means聚類算法涵蓋了:

使用K-means的常見商業案例

運行該算法所涉及的步驟

使用一個配送車隊數據的Python示例

商業用途

K-means聚類算法用來查找那些包含沒有明確標記數據的組。這可以用於確定商業假設,存在什麼類型的分組或為複雜的數據集確定未知組。一旦該算法已運行並定義分組,任何新數據可以很容易地分配到正確的組。

這是一個通用算法,可以用於任何類型的分組。用例的一些例子是:

行為細分

根據購買歷史細分

根據應用程式、網站或平臺上的活動細分

定義基於利益的角色

基於活動監視創建圖表

庫存分類

傳感器測量數據分類

檢測運動傳感器中的活動類型

圖片分組

分離音頻

健康檢測中的分組

檢測機器人或異常

來自機器人的單獨有效活動組

清理孤立點檢測的有效活動組

此外,監測是否一個被跟蹤的數據點隨著時間在組之間切換,這可以用來檢測數據有意義的變化。

算法

Κ-means聚類算法使用迭代細化來產生最終的結果。該算法的輸入是聚類的數目Κ和數據集。數據集是每個數據點特徵的集合。該算法從為K質點初始估計開始,它可以隨機生成或從數據集中隨機選擇。然後該算法在以下兩步之間迭代:

1. 數據分配步驟

每個質點定義一個聚類。在本步驟中,每個數據點被分配到離它最近的質心,基於歐氏距離的平方。更準確地說,如果ci是集合C質心的集合,然後每個數據點x被分配到一個聚類,基於


dist( · )是標準(L2)歐氏距離。數據點集分配每個ith聚類質心Si。

2. 質心更新步驟:

在本步驟中,質心被重新計算。這通過分配所有數據點的平均值到質心的聚類來實現。


該算法在步驟1和步驟2之間迭代直到滿足停止標準(如,沒有數據點改變聚類,距離之和最小化,或者達到了最大的迭代次數)。

該算法保證收斂到一個結果。其結果可能是一個局部最優(例如,不一定是最好的結果),意思是使用隨機開始質心評估多個運行的算法可能給出更好的結果。

選擇K

上述算法查找聚類和一個特定的預先選定K的帶標記的數據。為了查找數據中的聚類個數,用戶需要為在K值範圍內運行K-means聚類算法並比較結果。總體而言,目前還沒有確定K精確值的方法,但可以使用以下技術獲得準確的估計。

通常用於比較不同K值結果的度量之一是數據點和它們聚類質心的平均距離。由於增加聚類的數量總是會減少數據點的距離,增加K總

是會降低這個度量,當k與數據點數相同時達到極值。因此,這個度量不能作為唯一的指標。相反,平均距離到質心作為一個函數的K

被繪製並且急劇下降率的地方「肘點」,可用於大致確定K。

有許多其它技術確認K,包括交叉驗證、信息標準、信息理論跳法、影像法和G-means算法。另外,監測數據點跨組分布可以深入了解

該算法如何為每個k分割數據。


示例:應用K-Means聚類到配送車隊數據

舉例來說,我們將展示K-means算法如何處理配送車隊司機數據的樣本數據集。簡單起見,我們只會看兩個司機特徵:平均每天駕駛距離和一個司機>5mph以上速度限制的平均時間百分比。總

體而言,該算法可以用於任何數量的特徵,只要數據樣本的個數比特徵的數量大的多。

步驟1:清潔和改造數據

在本例中,我們已經清理並完成了一些簡單的數據轉換。數據樣本作為pandas DataFrame如下所示。


下面的圖表顯示了4,000個司機的數據集,x軸表示距離特徵,y軸表示加速特徵。


步驟2: 選擇K並運行該算法

首先選擇K=2。對於本例,使用Python包scikit-learn和NumPy進行計算,如下所示:


類別標記以kmeans.labels_返回。

步驟3:審查結果 

結果如下所示。你可以看到K-means算法基於距離特徵分成兩組。每個聚類質心用一顆星標記。

組1的質心 = (49.62, 8.72)

組2的質心 = (179.73, 17.95)

使用數據集的領域知識,我們可以推斷組1是都市司機,組2是鄉村司機。


步驟4: 對K的多個值迭代

測試K=4的結果。完成這個,你只需要的改變是KMeans()函數中聚類的目標數量。


下面的圖表顯示了聚類的結果。我們看到由該算法確定了四個不同的組;現在超速駕駛的司機已經與那些遵守速度限制的分開,除了鄉村和都市的差別。城市駕駛組比農村司機的速度門檻較

低,可能是由於城市司機在交叉路口和停車交通上花費更多的時間。


附加說明和備選方案特徵工程

特徵工程是使用領域知識選擇哪些數據度量作為特徵輸入到機器學習算法的過程。特徵工程在K-means聚類中起著關鍵作用;使用有意義的特徵捕獲數據的可變性至關重要,針對算法找出所有自然產生的組。

分類數據(例如,分類標誌如性別,國家,瀏覽器類型)需要被編碼或者以一種仍然可以使用該算法的方式分離數據。

特徵變換,特別是代表利率而不是測量,可以幫助規範化數據。例如,在上面交付車隊的例子中,如果使用總駕駛距離而不是每天平均距離,那麼駕駛員通過他們在公司駕駛多久而不是鄉村和都市的分組。

備選方案

有很多可供替代的聚類算法存在,包括DBScan,譜聚類,和高斯混合建模。維數約減技術,如主成分分析,可以用於數據中的不同組模式。一種可能的結果是數據中沒有有機聚類;相反,所

有的數據沿著一個單一組的連續特徵範圍。既然這樣,你可能需要重新查看數據特徵以查看是否需要包括不同的測量或者特徵變換將更好地代表數據的可變性。此外,你可能想強加分類或者

基於知識領域標記並修改你的分析方法。

關於K-means聚類的更多信息,請訪問scikit學習網站。

英文原文:https://www.datascience.com/blog/introduction-to-k-means-clustering-algorithm-learn-data-science-tutorials
譯者:毛茸茸的向日葵

相關焦點

  • k-means算法
    k-means算法原理K-means中心思想:事先確定常數K,常數K意味著最終的聚類類別數,首先隨機選定初始點為質心,並通過計算每一個樣本與質心之間的相似度
  • 基本的k-means算法流程
    打開APP 基本的k-means算法流程 李倩 發表於 2018-07-24 17:44:21 1、引言 k-means
  • k-means聚類算法原理總結
    目錄1. k-means聚類算法原理2. k-means聚類算法步驟3. k-means++聚類優化算法4.小批量處理的k-means聚類算法5. k值的選取6. k-means聚類算法不適用的幾個場景7. k-means與knn區別8. 小結聚類算法性能度量的文章提到若簇類相似度好簇間的相似度差,則聚類算法的性能較好。我們基於此定義k-means聚類算法的目標函數: 其中
  • 詳解 kmeans 聚類算法
    。代表我們對屬於同一個類的樣本中心點的猜測,拿星團模型來解釋就是要將所有的星星聚成k個星團,首先隨機選取k個宇宙中的點(或者k個星星)作為k個星團的質心,然後第一步對於每一個星星計算其到k個質心中每一個的距離。
  • 機器學習算法之K-means算法
    K-means舉例shi'li1 K-means算法簡介k-means算法是一種聚類算法,所謂聚類,即根據相似性原則2 K-means算法原理k-means算法中的k代表類簇個數,means代表類簇內數據對象的均值(這種均值是一種對類簇中心的描述),因此,k-means算法又稱為k-均值算法。
  • K_means聚類的matlab應用
    本文作者:南海一號在機器學習中,我們往往會遇到很大量的數據的處理,其中有一項就是聚類,即將相似的數據聚到一起,比較基礎的就是K_means聚類算法。聚類是一種無監督學習,不需要訓練樣本有對應的標籤就可以將不同的類分開。利用的就是相同類之間的相似性以及不同類之間的差異性。
  • k-means聚類算法從入門到精通
    目錄1. k-means聚類算法原理2. k-means聚類算法步驟3. k-means++聚類優化算法4.小批量處理的k-means聚類算法5. k值的選取6. k-means聚類算法不適用的幾個場景7. k-means與knn區別8. 小結聚類算法性能度量的文章提到若簇類相似度好簇間的相似度差,則聚類算法的性能較好。我們基於此定義k-means聚類算法的目標函數: 其中
  • K-Means聚類算法
    簡單來說,之前的算法中我們是利用特徵 x 和類別 y 來進行訓練、分類的,而無監督學習是指不需要我們提供具體的類別 y ,而讓數據自己聚在一起,形成 k 個簇,以實現分類的目的。具體方法是通過對給定的樣本進行劃分,分為 k 個簇,使得簇內的點儘量緊密的連在一起,而簇間的距離儘量大,評判的標準就是通過歐氏距離。
  • 聚類算法入門:k-means
    二、劃分聚類方法: K-means:對於給定的樣本集,按照樣本之間的距離(也就是相似程度)大小,將樣本集劃分為K個簇(即類別)。讓簇內的點儘量緊密的連在一起,而讓簇間的距離儘量的大。步驟1:隨機取k個初始中心點步驟2:對於每個樣本點計算到這k個中心點的距離,將樣本點歸到與之距離最小的那個中心點的簇。
  • K-Means聚類算法詳解
    random 的方式則是完全隨機的方式,一般推薦採用優化過的 k-means++ 方式;algorithm:k-means 的實現算法,有「auto」 「full」「elkan」三種。一般來說建議直接用默認的"auto"。簡單說下這三個取值的區別,如果你選擇"full"採用的是傳統的 K-Means 算法,「auto」會根據數據的特點自動選擇是選擇「full」還是「elkan」。
  • K-means 聚類算法及其代碼實現
    K-means聚類算法的思想,同時給出在matlab環境中實現K-means算法的代碼。K-means算法本節首先直觀敘述要解決的問題,然後給出所要求解的數學模型,最後從EM2 算法的角度分析K-means算法的特點。問題描述首先我們有N個數據<script type="math/tex" id="MathJax-Element-1935">D={\{x_1,x_2,...
  • 聚類算法之Kmeans
    Kmeans算法,也叫k均值算法,顧名思義,其核心思想也就是根據均值來更新簇心。其具體算法流程如下:1、隨機初始化k個簇心2、對於每個樣本,根據其到各簇心的距離(這裡用歐式距離),將其標註為距離最近的簇心類別。
  • 如何用聚類模型(k-means)做數據分析?
    k-means屬於無監督學習算法,無監督算法的內涵是觀察無標籤數據集自動發現隱藏結構和層次,在無標籤數據中尋找隱藏規律。聚類模型在數據分析當中的應用:既可以作為一個單獨過程,用於尋找數據內在規律,也可以作為分類等其他分析任務的前置探索。
  • 使用K-means 算法進行客戶分類
    Learning K-Means Clustering翻譯 | 呂鑫燦、就2    校對 | 就2    整理 | 志豪原文連結:http://www.patterns7tech.com/customer-segmentation-using-machine-learning-k-means-clustering
  • 數據分析入門系列教程-K-Means原理
    = pd.read_csv('k-meansdata.csv')print(k_means_data.shape)print(k_means_data.head())>>>(3000, 2)          V1         V20   2.072345  -3.2416931  17.936710  15.784810
  • kmeans優化算法:二分Kmeans聚類算法
    為什麼我們需要用BiKmeans呢,就是為了解決初始化k個隨機的質心點時其中一個或者多個點由於位置太極端而導致迭代的過程中消失的問題。BiKmeans只是Kmeans其中一個優化方案,其實還是有很多優化的方案,這裡BiKmeans容易講解和理解,並且容易用numpy, pandas實現。那為什麼二進Kmeans算法可以有效的解決這個問題呢。
  • 算法雜貨鋪——k均值聚類(K-means)
    本文首先介紹聚類的基礎——距離與相異度,然後介紹一種常見的聚類算法 ——k均值和k中心點聚類,最後會舉一個實例:應用聚類方法試圖解決一個在體育界大家頗具爭議的問題——中國男足近幾年在亞洲到底處於幾流水平。4.2、相異度計算      在正式討論聚類前,我們要先弄清楚一個問題:如何定量計算兩個可比較元素間的相異度。
  • 數據分析入門系列教程-K-Means實戰
    [0.42352941 0.42352941 0.43137255] [0.48235294 0.48235294 0.49019608] [0.42745098 0.42352941 0.44313725]]現在開始使用 K-Means 做聚類kmeans = KMeans(n_clusters=2)kmeans.fit
  • python之kmeans數據聚類算法
    一 Kmeans原理kmeans是屬於無監督學習的數據聚類算法,根據點與點之間的距離推測每個點屬於哪個中心,常用計算距離的方式有:餘弦距離、歐式距離、曼哈頓距離等,本文以歐式距離為例。圖3kmeans實現邏輯:需要輸入待聚類的數據和欲聚類簇數k1.隨機生成k個初始點作為質心