0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

DPVg_AI_era ? 來源:未知 ? 作者:易水寒 ? 2018-05-27 09:59 ? 次閱讀

無監(jiān)督學(xué)習(xí)是機器學(xué)習(xí)技術(shù)中的一類,用于發(fā)現(xiàn)數(shù)據(jù)中的模式。本文介紹用Python進(jìn)行無監(jiān)督學(xué)習(xí)的幾種聚類算法,包括K-Means聚類、分層聚類、t-SNE聚類、DBSCAN聚類等。

無監(jiān)督算法的數(shù)據(jù)沒有標(biāo)注,這意味著只提供輸入變量(X),沒有相應(yīng)的輸出變量。在無監(jiān)督學(xué)習(xí)中,算法自己去發(fā)現(xiàn)數(shù)據(jù)中有意義的結(jié)構(gòu)。

Facebook首席AI科學(xué)家Yan Lecun解釋說,無監(jiān)督學(xué)習(xí)——即教機器自己學(xué)習(xí),不需要明確地告訴它們所做的每一件事情是對還是錯,是“真正的”AI的關(guān)鍵。

監(jiān)督學(xué)習(xí) VS 無監(jiān)督學(xué)習(xí)

在監(jiān)督學(xué)習(xí)中,系統(tǒng)試圖從之前給出的例子中學(xué)習(xí)。反之,在無監(jiān)督學(xué)習(xí)中,系統(tǒng)試圖從給出的例子中直接找到模式。因此,如果數(shù)據(jù)集有標(biāo)記,那么它是有監(jiān)督問題,如果數(shù)據(jù)集無標(biāo)記,那么它是一個無監(jiān)督問題。

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

如上圖,左邊是監(jiān)督學(xué)習(xí)的例子; 我們使用回歸技術(shù)來尋找特征之間的最佳擬合線。而在無監(jiān)督學(xué)習(xí)中,輸入是基于特征分離的,預(yù)測則取決于它屬于哪個聚類(cluster)。

重要術(shù)語

特征(Feature):用于進(jìn)行預(yù)測的輸入變量。

預(yù)測(Predictions):當(dāng)提供一個輸入示例時,模型的輸出。

示例(Example):數(shù)據(jù)集的一行。一個示例包含一個或多個特征,可能有標(biāo)簽。

標(biāo)簽(Label):特征的結(jié)果。

為無監(jiān)督學(xué)習(xí)做準(zhǔn)備

在本文中,我們使用Iris數(shù)據(jù)集(鳶尾花卉數(shù)據(jù)集)來進(jìn)行我們的第一次預(yù)測。該數(shù)據(jù)集包含150條記錄的一組數(shù)據(jù),有5個屬性——花瓣長度,花瓣寬度,萼片長度,萼片寬度和類別。三個類別分別是Iris Setosa(山鳶尾),Iris Virginica(維吉尼亞鳶尾)和Iris Versicolor(變色鳶尾)。對于我們的無監(jiān)督算法,我們給出鳶尾花的這四個特征,并預(yù)測它屬于哪一類。我們在Python中使用sklearn Library來加載Iris數(shù)據(jù)集,并使用matplotlib來進(jìn)行數(shù)據(jù)可視化。以下是代碼片段。

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

紫羅蘭色:山鳶尾,綠色:維吉尼亞鳶尾,黃色:變色鳶尾

聚類(Clustering)

在聚類中,數(shù)據(jù)被分成幾個組。簡單地說,其目的是將具有相似特征的組分開,并將它們組成聚類。

可視化示例:

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

在上圖中,左邊的圖像是未完成分類的原始數(shù)據(jù),右邊的圖像是聚類的(根據(jù)數(shù)據(jù)的特征對數(shù)據(jù)進(jìn)行分類)。當(dāng)給出要預(yù)測的輸入時,就會根據(jù)它的特征在它所屬的聚類中進(jìn)行檢查,并做出預(yù)測。

Python中的K-Means聚類

K-Means是一種迭代聚類算法,它的目的是在每次迭代中找到局部最大值。首先,選擇所需數(shù)量的聚類。由于我們已經(jīng)知道涉及3個類,因此我們通過將參數(shù)“n_clusters”傳遞到K-Means模型中,將數(shù)據(jù)分組為3個類。

現(xiàn)在,隨機將三個點(輸入)分成三個聚類。基于每個點之間的質(zhì)心距離,下一個給定的輸入被分為所需的聚類。然后,重新計算所有聚類的質(zhì)心。

聚類的每個質(zhì)心是特征值的集合,定義生成的組。檢查質(zhì)心特征權(quán)重可以定性地解釋每個聚類代表什么類型的組。

我們從sklearn庫導(dǎo)入K-Means模型,擬合特征并進(jìn)行預(yù)測。

Python中的K Means實現(xiàn):

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

分層聚類

顧名思義,分層聚類是一種構(gòu)建聚類層次結(jié)構(gòu)的算法。該算法從分配給它們自己的一個cluster的所有數(shù)據(jù)開始,然后將最近的兩個cluster加入同一個cluster。最后,當(dāng)只剩下一個cluster時,算法結(jié)束。

分層聚類的完成可以使用樹狀圖來表示。下面是一個分層聚類的例子。 數(shù)據(jù)集可以在這里找到:https://raw.githubusercontent.com/vihar/unsupervised-learning-with-python/master/seeds-less-rows.csv

Python中的分層聚類實現(xiàn):

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

K Means聚類與分層聚類的區(qū)別

分層聚類不能很好地處理大數(shù)據(jù),但K Means聚類可以。因為K Means的時間復(fù)雜度是線性的,即O(n),而分層聚類的時間復(fù)雜度是二次的,即O(n2)。

在K Means聚類中,當(dāng)我們從聚類的任意選擇開始時,多次運行算法產(chǎn)生的結(jié)果可能會有所不同。不過結(jié)果可以在分層聚類中重現(xiàn)。

當(dāng)聚類的形狀是超球形時(如2D中的圓形,3D中的球形),K Means聚類更好。

K-Means聚類不允許嘈雜的數(shù)據(jù),而在分層聚類中,可以直接使用嘈雜的數(shù)據(jù)集進(jìn)行聚類。

t-SNE聚類

t-SNE聚類是用于可視化的無監(jiān)督學(xué)習(xí)方法之一。t-SNE表示t分布的隨機近鄰嵌入。它將高維空間映射到可以可視化的2或3維空間。具體而言,它通過二維點或三維點對每個高維對象進(jìn)行建模,使得相似的對象由附近的點建模,而不相似的對象很大概率由遠(yuǎn)離的點建模。

Python中的t-SNE聚類實現(xiàn),數(shù)據(jù)集是Iris數(shù)據(jù)集:

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

這里Iris數(shù)據(jù)集具有四個特征(4d),它被變換并以二維圖形表示。類似地,t-SNE模型可以應(yīng)用于具有n個特征的數(shù)據(jù)集。

DBSCAN聚類

DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪聲的基于密度的聚類方法)是一種流行的聚類算法,用作預(yù)測分析中 K-means的替代。它不要求輸入聚類的數(shù)值才能運行。但作為交換,你必須調(diào)整其他兩個參數(shù)。

scikit-learn實現(xiàn)提供了eps和min_samples參數(shù)的默認(rèn)值,但這些參數(shù)通常需要調(diào)整。eps參數(shù)是在同一鄰域中考慮的兩個數(shù)據(jù)點之間的最大距離。min_samples參數(shù)是被認(rèn)為是聚類的鄰域中的數(shù)據(jù)點的最小量。

Python中的DBSCAN聚類:

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

Python無監(jiān)督學(xué)習(xí)的幾種聚類算法包括K-Means聚類,分層聚類等詳細(xì)概述

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 聚類算法
    +關(guān)注

    關(guān)注

    2

    文章

    118

    瀏覽量

    12113
  • 機器學(xué)習(xí)
    +關(guān)注

    關(guān)注

    66

    文章

    8349

    瀏覽量

    132312
  • python
    +關(guān)注

    關(guān)注

    55

    文章

    4767

    瀏覽量

    84375
  • 無監(jiān)督學(xué)習(xí)

    關(guān)注

    1

    文章

    16

    瀏覽量

    2751

原文標(biāo)題:【干貨】Python無監(jiān)督學(xué)習(xí)的4大聚類算法

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    深非監(jiān)督學(xué)習(xí)-Hierarchical clustering 層次python的實現(xiàn)

    【深度學(xué)習(xí)基礎(chǔ)-17】非監(jiān)督學(xué)習(xí)-Hierarchical clustering 層次-python實現(xiàn)
    發(fā)表于 04-28 10:07

    Web文檔k-means算法的改進(jìn)

    Web文檔k-means算法的改進(jìn) 介紹了Web文檔中普遍使用的、基于分割的
    發(fā)表于 09-19 09:17 ?1045次閱讀
    Web文檔<b class='flag-5'>聚</b><b class='flag-5'>類</b>中<b class='flag-5'>k-means</b><b class='flag-5'>算法</b>的改進(jìn)

    K-means+算法研究綜述

    介紹了K-means 算法的目標(biāo)函數(shù)、算法流程,并列舉了一個實例,指出了數(shù)據(jù)子集的數(shù)目K、初
    發(fā)表于 05-07 14:09 ?27次下載
    <b class='flag-5'>K-means</b>+<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>研究綜述

    基于離散量改進(jìn)k-means初始中心選擇的算法

    傳統(tǒng)kmeans算法由于初始中心的選擇是隨機的,因此會使結(jié)果不穩(wěn)定。針對這個問題,提出一種基于離散量改進(jìn)
    發(fā)表于 11-20 10:03 ?2次下載

    基于密度的K-means算法數(shù)目中應(yīng)用

    針對傳統(tǒng)的K-means算法無法預(yù)先明確數(shù)目,對初始中心選取敏感且易受離群孤點影響導(dǎo)致
    發(fā)表于 11-25 11:35 ?0次下載

    K均值算法的MATLAB實現(xiàn)

    K-means算法是最簡單的一種算法。算法的目的是使各個樣本與所在
    發(fā)表于 12-01 14:07 ?2w次閱讀
    <b class='flag-5'>K</b>均值<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>的MATLAB實現(xiàn)

    基于布谷鳥搜索的K-means算法

    針對原始K-means算法受初始中心影響過大以及容易陷入局部最優(yōu)的不足,提出一種基于改進(jìn)
    發(fā)表于 12-13 17:24 ?3次下載

    大數(shù)據(jù)處理的優(yōu)化抽樣K-means算法

    針對大數(shù)據(jù)環(huán)境下K-means算法精度不足和收斂速度慢的問題,提出一種基于優(yōu)化抽樣
    發(fā)表于 12-22 15:47 ?4次下載
    大數(shù)據(jù)處理的優(yōu)化抽樣<b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>K-means</b><b class='flag-5'>算法</b>

    k means算法實例

    與分類不同,分類是示例式學(xué)習(xí),要求分類前明確各個類別,并斷言每個元素映射到一個類別,而是觀察式學(xué)習(xí),在
    發(fā)表于 02-12 16:42 ?1.6w次閱讀
    <b class='flag-5'>k</b> <b class='flag-5'>means</b><b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>實例

    K-Means算法的簡單介紹

    K-Means是十大經(jīng)典數(shù)據(jù)挖掘算法之一。K-Means和KNN(K鄰近)看上去都是K打頭,但卻是不同種類的
    發(fā)表于 07-05 14:18 ?4890次閱讀

    如何使用多維網(wǎng)格空間進(jìn)行改進(jìn)K-means算法資料概述

    K-means算法是被廣泛使用的一種算法,傳統(tǒng)的-means
    發(fā)表于 12-13 17:56 ?1次下載
    如何使用多維網(wǎng)格空間進(jìn)行改進(jìn)<b class='flag-5'>K-means</b><b class='flag-5'>聚</b><b class='flag-5'>類</b><b class='flag-5'>算法</b>資料<b class='flag-5'>概述</b>

    如何使用K-Means算法改進(jìn)的特征加權(quán)算法詳細(xì)資料概述

    聚類分析是將研究對象分為相對同質(zhì)的群組的統(tǒng)計分析技術(shù),聚類分析的核心就是發(fā)現(xiàn)有用的對象簇。K-means算法由于具有出色的速度和良好的可擴(kuò)展性,一直備受廣大學(xué)者的關(guān)注。然而,傳統(tǒng)的
    發(fā)表于 12-20 10:28 ?10次下載

    如何在python中安裝和使用頂級算法?

    或聚類分析是監(jiān)督學(xué)習(xí)問題。它通常被用作數(shù)據(jù)分析技術(shù),用于發(fā)現(xiàn)數(shù)據(jù)中的有趣模式,例如基于其行為的客戶群。有許多
    的頭像 發(fā)表于 03-12 18:23 ?2196次閱讀

    K-MEANS算法概述及工作原理

    K-means 是一種算法,且對于數(shù)據(jù)科學(xué)家而言,是簡單且熱門的監(jiān)督式機器
    的頭像 發(fā)表于 06-06 11:53 ?3879次閱讀

    K-means算法指南

    技術(shù)領(lǐng)域中,K-means可能是最常見和經(jīng)常使用的技術(shù)之一。K-means使用迭代細(xì)化方法,基于用戶定義的集群數(shù)量(由變量K表示)和數(shù)
    的頭像 發(fā)表于 10-28 14:25 ?1410次閱讀