聚類或聚類分析是無(wú)監(jiān)督學(xué)習(xí)問(wèn)題。它通常被用作數(shù)據(jù)分析技術(shù),用于發(fā)現(xiàn)數(shù)據(jù)中的有趣模式,例如基于其行為的客戶群。有許多聚類算法可供選擇,對(duì)于所有情況,沒(méi)有單一的最佳聚類算法。相反,最好探索一系列聚類算法以及每種算法的不同配置。在本教程中,你將發(fā)現(xiàn)如何在 python 中安裝和使用頂級(jí)聚類算法。完成本教程后,你將知道:
專注于為中小企業(yè)提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)水城免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了成百上千企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。
聚類分析,即聚類,是一項(xiàng)無(wú)監(jiān)督的機(jī)器學(xué)習(xí)任務(wù)。它包括自動(dòng)發(fā)現(xiàn)數(shù)據(jù)中的自然分組。與監(jiān)督學(xué)習(xí)(類似預(yù)測(cè)建模)不同,聚類算法只解釋輸入數(shù)據(jù),并在特征空間中找到自然組或群集。
群集通常是特征空間中的密度區(qū)域,其中來(lái)自域的示例(觀測(cè)或數(shù)據(jù)行)比其他群集更接近群集。群集可以具有作為樣本或點(diǎn)特征空間的中心(質(zhì)心),并且可以具有邊界或范圍。
聚類可以作為數(shù)據(jù)分析活動(dòng)提供幫助,以便了解更多關(guān)于問(wèn)題域的信息,即所謂的模式發(fā)現(xiàn)或知識(shí)發(fā)現(xiàn)。例如:
聚類還可用作特征工程的類型,其中現(xiàn)有的和新的示例可被映射并標(biāo)記為屬于數(shù)據(jù)中所標(biāo)識(shí)的群集之一。雖然確實(shí)存在許多特定于群集的定量措施,但是對(duì)所識(shí)別的群集的評(píng)估是主觀的,并且可能需要領(lǐng)域?qū)<?。通常,聚類算法在人工合成?shù)據(jù)集上與預(yù)先定義的群集進(jìn)行學(xué)術(shù)比較,預(yù)計(jì)算法會(huì)發(fā)現(xiàn)這些群集。
有許多類型的聚類算法。許多算法在特征空間中的示例之間使用相似度或距離度量,以發(fā)現(xiàn)密集的觀測(cè)區(qū)域。因此,在使用聚類算法之前,擴(kuò)展數(shù)據(jù)通常是良好的實(shí)踐。
一些聚類算法要求您指定或猜測(cè)數(shù)據(jù)中要發(fā)現(xiàn)的群集的數(shù)量,而另一些算法要求指定觀測(cè)之間的最小距離,其中示例可以被視為“關(guān)閉”或“連接”。因此,聚類分析是一個(gè)迭代過(guò)程,在該過(guò)程中,對(duì)所識(shí)別的群集的主觀評(píng)估被反饋回算法配置的改變中,直到達(dá)到期望的或適當(dāng)?shù)慕Y(jié)果。scikit-learn 庫(kù)提供了一套不同的聚類算法供選擇。下面列出了10種比較流行的算法:
每個(gè)算法都提供了一種不同的方法來(lái)應(yīng)對(duì)數(shù)據(jù)中發(fā)現(xiàn)自然組的挑戰(zhàn)。沒(méi)有最好的聚類算法,也沒(méi)有簡(jiǎn)單的方法來(lái)找到最好的算法為您的數(shù)據(jù)沒(méi)有使用控制實(shí)驗(yàn)。在本教程中,我們將回顧如何使用來(lái)自 scikit-learn 庫(kù)的這10個(gè)流行的聚類算法中的每一個(gè)。這些示例將為您復(fù)制粘貼示例并在自己的數(shù)據(jù)上測(cè)試方法提供基礎(chǔ)。我們不會(huì)深入研究算法如何工作的理論,也不會(huì)直接比較它們。讓我們深入研究一下。
在本節(jié)中,我們將回顧如何在 scikit-learn 中使用10個(gè)流行的聚類算法。這包括一個(gè)擬合模型的例子和可視化結(jié)果的例子。這些示例用于將粘貼復(fù)制到您自己的項(xiàng)目中,并將方法應(yīng)用于您自己的數(shù)據(jù)。
1.庫(kù)安裝
首先,讓我們安裝庫(kù)。不要跳過(guò)此步驟,因?yàn)槟阈枰_保安裝了最新版本。你可以使用 pip Python 安裝程序安裝 scikit-learn 存儲(chǔ)庫(kù),如下所示:
接下來(lái),讓我們確認(rèn)已經(jīng)安裝了庫(kù),并且您正在使用一個(gè)現(xiàn)代版本。運(yùn)行以下腳本以輸出庫(kù)版本號(hào)。
運(yùn)行該示例時(shí),您應(yīng)該看到以下版本號(hào)或更高版本。
2.聚類數(shù)據(jù)集
我們將使用 make _ classification ()函數(shù)創(chuàng)建一個(gè)測(cè)試二分類數(shù)據(jù)集。數(shù)據(jù)集將有1000個(gè)示例,每個(gè)類有兩個(gè)輸入要素和一個(gè)群集。這些群集在兩個(gè)維度上是可見(jiàn)的,因此我們可以用散點(diǎn)圖繪制數(shù)據(jù),并通過(guò)指定的群集對(duì)圖中的點(diǎn)進(jìn)行顏色繪制。這將有助于了解,至少在測(cè)試問(wèn)題上,群集的識(shí)別能力如何。該測(cè)試問(wèn)題中的群集基于多變量高斯,并非所有聚類算法都能有效地識(shí)別這些類型的群集。因此,本教程中的結(jié)果不應(yīng)用作比較一般方法的基礎(chǔ)。下面列出了創(chuàng)建和匯總合成聚類數(shù)據(jù)集的示例。
運(yùn)行該示例將創(chuàng)建合成的聚類數(shù)據(jù)集,然后創(chuàng)建輸入數(shù)據(jù)的散點(diǎn)圖,其中點(diǎn)由類標(biāo)簽(理想化的群集)著色。我們可以清楚地看到兩個(gè)不同的數(shù)據(jù)組在兩個(gè)維度,并希望一個(gè)自動(dòng)的聚類算法可以檢測(cè)這些分組。
已知聚類著色點(diǎn)的合成聚類數(shù)據(jù)集的散點(diǎn)圖接下來(lái),我們可以開(kāi)始查看應(yīng)用于此數(shù)據(jù)集的聚類算法的示例。我已經(jīng)做了一些最小的嘗試來(lái)調(diào)整每個(gè)方法到數(shù)據(jù)集。3.親和力傳播親和力傳播包括找到一組最能概括數(shù)據(jù)的范例。
它是通過(guò) AffinityPropagation 類實(shí)現(xiàn)的,要調(diào)整的主要配置是將“ 阻尼 ”設(shè)置為0.5到1,甚至可能是“首選項(xiàng)”。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我無(wú)法取得良好的結(jié)果。
數(shù)據(jù)集的散點(diǎn)圖,具有使用親和力傳播識(shí)別的聚類
4.聚合聚類
聚合聚類涉及合并示例,直到達(dá)到所需的群集數(shù)量為止。它是層次聚類方法的更廣泛類的一部分,通過(guò) AgglomerationClustering 類實(shí)現(xiàn)的,主要配置是“ n _ clusters ”集,這是對(duì)數(shù)據(jù)中的群集數(shù)量的估計(jì),例如2。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)合理的分組。
使用聚集聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
5.BIRCHBIRCH
聚類( BIRCH 是平衡迭代減少的縮寫(xiě),聚類使用層次結(jié)構(gòu))包括構(gòu)造一個(gè)樹(shù)狀結(jié)構(gòu),從中提取聚類質(zhì)心。
它是通過(guò) Birch 類實(shí)現(xiàn)的,主要配置是“ threshold ”和“ n _ clusters ”超參數(shù),后者提供了群集數(shù)量的估計(jì)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)很好的分組。
使用BIRCH聚類確定具有聚類的數(shù)據(jù)集的散點(diǎn)圖
6.DBSCANDBSCAN
聚類(其中 DBSCAN 是基于密度的空間聚類的噪聲應(yīng)用程序)涉及在域中尋找高密度區(qū)域,并將其周圍的特征空間區(qū)域擴(kuò)展為群集。
它是通過(guò) DBSCAN 類實(shí)現(xiàn)的,主要配置是“ eps ”和“ min _ samples ”超參數(shù)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,盡管需要更多的調(diào)整,但是找到了合理的分組。
使用DBSCAN集群識(shí)別出具有集群的數(shù)據(jù)集的散點(diǎn)圖
7.K均值
K-均值聚類可以是最常見(jiàn)的聚類算法,并涉及向群集分配示例,以盡量減少每個(gè)群集內(nèi)的方差。
它是通過(guò) K-均值類實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù)設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以找到一個(gè)合理的分組,盡管每個(gè)維度中的不等等方差使得該方法不太適合該數(shù)據(jù)集。
使用K均值聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
8.Mini-Batch
K-均值Mini-Batch K-均值是 K-均值的修改版本,它使用小批量的樣本而不是整個(gè)數(shù)據(jù)集對(duì)群集質(zhì)心進(jìn)行更新,這可以使大數(shù)據(jù)集的更新速度更快,并且可能對(duì)統(tǒng)計(jì)噪聲更健壯。
它是通過(guò) MiniBatchKMeans 類實(shí)現(xiàn)的,要優(yōu)化的主配置是“ n _ clusters ”超參數(shù),設(shè)置為數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,會(huì)找到與標(biāo)準(zhǔn) K-均值算法相當(dāng)?shù)慕Y(jié)果。
帶有最小批次K均值聚類的聚類數(shù)據(jù)集的散點(diǎn)圖
9.均值漂移聚類
均值漂移聚類涉及到根據(jù)特征空間中的實(shí)例密度來(lái)尋找和調(diào)整質(zhì)心。
它是通過(guò) MeanShift 類實(shí)現(xiàn)的,主要配置是“帶寬”超參數(shù)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,可以在數(shù)據(jù)中找到一組合理的群集。
具有均值漂移聚類的聚類數(shù)據(jù)集散點(diǎn)圖
10.OPTICSOPTICS
聚類( OPTICS 短于訂購(gòu)點(diǎn)數(shù)以標(biāo)識(shí)聚類結(jié)構(gòu))是上述 DBSCAN 的修改版本。
它是通過(guò) OPTICS 類實(shí)現(xiàn)的,主要配置是“ eps ”和“ min _ samples ”超參數(shù)。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我無(wú)法在此數(shù)據(jù)集上獲得合理的結(jié)果。
使用OPTICS聚類確定具有聚類的數(shù)據(jù)集的散點(diǎn)圖
11.光譜聚類
光譜聚類是一類通用的聚類方法,取自線性線性代數(shù)。
它是通過(guò) Spectral 聚類類實(shí)現(xiàn)的,而主要的 Spectral 聚類是一個(gè)由聚類方法組成的通用類,取自線性線性代數(shù)。要優(yōu)化的是“ n _ clusters ”超參數(shù),用于指定數(shù)據(jù)中的估計(jì)群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,找到了合理的集群。
使用光譜聚類聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
12.高斯混合模型
高斯混合模型總結(jié)了一個(gè)多變量概率密度函數(shù),顧名思義就是混合了高斯概率分布。它是通過(guò) Gaussian Mixture 類實(shí)現(xiàn)的,要優(yōu)化的主要配置是“ n _ clusters ”超參數(shù),用于指定數(shù)據(jù)中估計(jì)的群集數(shù)量。下面列出了完整的示例。
運(yùn)行該示例符合訓(xùn)練數(shù)據(jù)集上的模型,并預(yù)測(cè)數(shù)據(jù)集中每個(gè)示例的群集。然后創(chuàng)建一個(gè)散點(diǎn)圖,并由其指定的群集著色。在這種情況下,我們可以看到群集被完美地識(shí)別。這并不奇怪,因?yàn)閿?shù)據(jù)集是作為 Gaussian 的混合生成的。
使用高斯混合聚類識(shí)別出具有聚類的數(shù)據(jù)集的散點(diǎn)圖
在本文中,你發(fā)現(xiàn)了如何在 python 中安裝和使用頂級(jí)聚類算法。具體來(lái)說(shuō),你學(xué)到了:
圖像處理
python實(shí)現(xiàn)K-means聚類法對(duì)圖片進(jìn)行RGB顏色聚類,然后計(jì)算信息熵并對(duì)聚類后的顏色進(jìn)行Huffman編碼
?
Love _YourSelf
原創(chuàng)
關(guān)注
0點(diǎn)贊·652人閱讀
問(wèn)題描述
1、對(duì)一張給定的圖片,使用python實(shí)現(xiàn)K-means聚類算法,對(duì)該圖片的顏色進(jìn)行聚類,需要給出聚類的個(gè)數(shù)
2、計(jì)算圖片的信息熵,然后對(duì)其進(jìn)行顏色聚類,最后對(duì)顏色進(jìn)行Huffman編碼,結(jié)果表示為 一個(gè)三列的表格,其中第一列為顏色RGB(或BGR)代碼,第二列為該顏色出現(xiàn)的概率,第三列為對(duì)應(yīng)顏色的Huffman編碼。
?
文章目錄
問(wèn)題描述
K-means
信息熵
Huffman編碼
對(duì)圖片使用K-means算法對(duì)顏色進(jìn)行聚類
效果展示
計(jì)算信息熵和huffman編碼
結(jié)果展示
K-means
將n個(gè)樣本依據(jù)最小化類內(nèi)距離的準(zhǔn)則分到K個(gè)聚類中
算法的步驟是:
1、先隨機(jī)選擇K個(gè)初始的聚類中心
2、計(jì)算每個(gè)樣本和這k個(gè)聚類中心的距離,按照最近原則將這些點(diǎn)分到這K個(gè)聚類中
3、重新計(jì)算每個(gè)聚類的均值,再進(jìn)行劃分
4、直到聚類結(jié)果沒(méi)有變化時(shí),算法收斂
K-means算法實(shí)現(xiàn)起來(lái)比較簡(jiǎn)單,空間和計(jì)算復(fù)雜度較低,經(jīng)過(guò)有限步數(shù)就能夠收斂得到聚類輸出,但是最后的結(jié)果受初始聚類均值選擇的影響,這有可能導(dǎo)致收斂于不同的局部極小解,而且這個(gè)算法需要預(yù)先設(shè)定聚類個(gè)數(shù),這個(gè)在實(shí)際使用時(shí)很難判斷
pythonr型聚類和q型聚類圖要從數(shù)據(jù)挖掘的角度看。pythonr型聚類和q型聚類是一種定量方法,可以從數(shù)據(jù)挖掘的角度來(lái)看。q型聚類是對(duì)樣本進(jìn)行定量分析的多元統(tǒng)計(jì)方法,可以分為劃分聚類、層次聚類、基于密度的聚類、基于網(wǎng)格的聚類。
聚類分析。我們先從二維空間說(shuō)起,比如一個(gè)組織中的雇傭關(guān)系存在四種模式,x軸和y軸分別代表著企業(yè)對(duì)員工提供的誘因與企業(yè)對(duì)員工期望的貢獻(xiàn)。兩個(gè)坐標(biāo)軸劃分出了四種雇傭關(guān)系,企業(yè)對(duì)員工提供的誘因與企業(yè)對(duì)員工期望的貢獻(xiàn)兩個(gè)指標(biāo)共同可以反映一個(gè)企業(yè)的員工——組織關(guān)系,但在實(shí)踐中,大量調(diào)查結(jié)果匯總起來(lái)的散點(diǎn)圖會(huì)因?yàn)榛卮鸬牟町?,顯現(xiàn)得有一些散亂。這時(shí)候,我們可以在每個(gè)象限中,對(duì)測(cè)量的指標(biāo)在每個(gè)維度進(jìn)行打分,對(duì)兩個(gè)維度的得分進(jìn)行計(jì)算均值,得到點(diǎn)M(xbar,ybar),我們可以根據(jù)其他點(diǎn)距離點(diǎn)M的幾何距離d,在一個(gè)自定義L的范圍內(nèi)歸類我們問(wèn)卷調(diào)查中得到的回答,對(duì)這個(gè)L范圍內(nèi)的點(diǎn)歸為一類。其他情境下,比如更多維的情況下,一個(gè)研究問(wèn)題需要用多個(gè)指標(biāo)以整體的方式出現(xiàn),共同代表研究問(wèn)題的特征,我們可以使用Kmeans聚類來(lái)進(jìn)行數(shù)據(jù)的劃分。Kmeans的思想是,將數(shù)據(jù)劃分為指定的k個(gè)簇,簇的中心點(diǎn)由各個(gè)簇樣本均值計(jì)算所得。對(duì)于指定的k個(gè)簇,簇內(nèi)樣本越相似,聚類效果越好。他的思想和OLS很相近,目的是簇內(nèi)樣本的離差平方和J達(dá)到最小。關(guān)于最佳k值的確定,因?yàn)殡S著簇?cái)?shù)量增加,簇中樣本量越來(lái)越少,簇內(nèi)離差平方和J也會(huì)越來(lái)越小,J的拐點(diǎn),簇內(nèi)離差平方和突然減小的點(diǎn),就是J對(duì)各個(gè)子簇中心求導(dǎo)為0的點(diǎn),就是最佳的k值。對(duì)于一些我們可以直觀分辨種類的情況,這里我引用了一個(gè)關(guān)于鳶尾花種類的數(shù)據(jù)