人妖在线一区,国产日韩欧美一区二区综合在线,国产啪精品视频网站免费,欧美内射深插日本少妇

新聞動(dòng)態(tài)

python數(shù)據(jù)分析之聚類分析(cluster analysis)

發(fā)布日期:2021-12-09 13:36 | 文章來(lái)源:gibhub

何為聚類分析

聚類分析或聚類是對(duì)一組對(duì)象進(jìn)行分組的任務(wù),使得同一組(稱為聚類)中的對(duì)象(在某種意義上)與其他組(聚類)中的對(duì)象更相似(在某種意義上)。它是探索性數(shù)據(jù)挖掘的主要任務(wù),也是統(tǒng)計(jì) 數(shù)據(jù)分析的常用技術(shù),用于許多領(lǐng)域,包括機(jī)器學(xué)習(xí),模式識(shí)別,圖像分析,信息檢索,生物信息學(xué),數(shù)據(jù)壓縮和計(jì)算機(jī)圖形學(xué)。

聚類分析本身不是一個(gè)特定的算法,而是要解決的一般任務(wù)。它可以通過(guò)各種算法來(lái)實(shí)現(xiàn),這些算法在理解群集的構(gòu)成以及如何有效地找到它們方面存在顯著差異。流行的群集概念包括群集成員之間距離較小的群體,數(shù)據(jù)空間的密集區(qū)域,間隔或特定的統(tǒng)計(jì)分布。因此,聚類可以表述為多目標(biāo)優(yōu)化問(wèn)題。適當(dāng)?shù)木垲愃惴ê蛥?shù)設(shè)置(包括距離函數(shù)等參數(shù))使用,密度閾值或預(yù)期聚類的數(shù)量)取決于個(gè)體數(shù)據(jù)集和結(jié)果的預(yù)期用途。這樣的聚類分析不是自動(dòng)任務(wù),而是涉及試驗(yàn)和失敗的知識(shí)發(fā)現(xiàn)或交互式多目標(biāo)優(yōu)化的迭代過(guò)程。通常需要修改數(shù)據(jù)預(yù)處理和模型參數(shù),直到結(jié)果達(dá)到所需的屬性。

常見(jiàn)聚類方法

常用的聚類算法分為基于劃分、層次、密度、網(wǎng)格、統(tǒng)計(jì)學(xué)、模型等類型的算法,典型算法包括K均值(經(jīng)典的聚類算法)、DBSCAN、兩步聚類、BIRCH、譜聚類等。

K-means

聚類算法中k-means是最常使用的方法之一,但是k-means要注意數(shù)據(jù)異常:

  • 數(shù)據(jù)異常值。數(shù)據(jù)中的異常值能明顯改變不同點(diǎn)之間的距離相識(shí)度,并且這種影響是非常顯著的。因此基于距離相似度的判別模式下,異常值的處理必不可少。
  • 數(shù)據(jù)的異常量綱。不同的維度和變量之間,如果存在數(shù)值規(guī)?;蛄烤V的差異,那么在做距離之前需要先將變量歸一化或標(biāo)準(zhǔn)化。例如跳出率的數(shù)值分布區(qū)間是[0,1],訂單金額可能是[0,10000 000],而訂單數(shù)量則是[0,1000],如果沒(méi)有歸一化或標(biāo)準(zhǔn)化操作,那么相似度將主要受到訂單金額的影響。

DBSCAN

有異常的數(shù)據(jù)可以使用DBSCAN聚類方法進(jìn)行處理,DBSCAN的全稱是Density-Based Spatial Clustering of Applications with Noise,中文含義是“基于密度的帶有噪聲的空間聚類”。
跟K均值相比,它具有以下優(yōu)點(diǎn):

  • 原始數(shù)據(jù)分布規(guī)律沒(méi)有明顯要求,能適應(yīng)任意數(shù)據(jù)集分布形狀的空間聚類,因此數(shù)據(jù)集適用性更廣,尤其是對(duì)非凸裝、圓環(huán)形等異性簇分布的識(shí)別較好。
  • 無(wú)需指定聚類數(shù)量,對(duì)結(jié)果的先驗(yàn)要求不高
  • 由于DBSCAN可區(qū)分核心對(duì)象、邊界點(diǎn)和噪點(diǎn),因此對(duì)噪聲的過(guò)濾效果好,能有效應(yīng)對(duì)數(shù)據(jù)噪點(diǎn)。

由于他對(duì)整個(gè)數(shù)據(jù)集進(jìn)行操作且聚類時(shí)使用了一個(gè)全局性的表征密度的參數(shù),因此也存在比較明顯的弱點(diǎn):

  • 對(duì)于高緯度問(wèn)題,基于半徑和密度的定義成問(wèn)題。
  • 當(dāng)簇的密度變化太大時(shí),聚類結(jié)果較差。
  • 當(dāng)數(shù)據(jù)量增大時(shí),要求較大的內(nèi)存支持,I/O消耗也很大。

MiniBatchKMeans

K均值在算法穩(wěn)定性、效率和準(zhǔn)確率(相對(duì)于真實(shí)標(biāo)簽的判別)上表現(xiàn)非常好,并且在應(yīng)對(duì)大量數(shù)據(jù)時(shí)依然如此。它的算法時(shí)間復(fù)雜度上界為O(nkt),其中n是樣本量、k是劃分的聚類數(shù)、t是迭代次數(shù)。當(dāng)聚類數(shù)和迭代次數(shù)不變時(shí),K均值的算法消耗時(shí)間只跟樣本量有關(guān),因此會(huì)呈線性增長(zhǎng)趨勢(shì)。

但是當(dāng)面對(duì)海量數(shù)據(jù)時(shí),k均值算法計(jì)算速度慢會(huì)產(chǎn)生延時(shí),尤其算法被用于做實(shí)時(shí)性處理時(shí)這種弊端尤為明顯。針對(duì)K均值的這一問(wèn)題,很多延伸算法出現(xiàn)了,MiniBatchKMeans就是其中一個(gè)典型代表。MiniBatchKMeans使用了一個(gè)種名為Mini Batch(分批處理)的方法計(jì)算數(shù)據(jù)點(diǎn)之間的距離。Mini Batch的好處是計(jì)算過(guò)程中不必使用所有的數(shù)據(jù)樣本,而是從不同類別的樣本中抽取一部分樣本(而非全部樣本)作為代表參與聚類算法過(guò)程。由于計(jì)算樣本量少,所以會(huì)相應(yīng)減少運(yùn)行時(shí)間;但另一方面,由于是抽樣方法,抽樣樣本很難完全代表整體樣本的全部特征,因此會(huì)帶來(lái)準(zhǔn)確度的小幅度下降,但是并不明顯。

譜聚類

在大數(shù)據(jù)背景下,有很多高緯度數(shù)據(jù)場(chǎng)景,如電子商務(wù)交易數(shù)據(jù)、web文本數(shù)據(jù)日益豐富。高維數(shù)據(jù)聚類時(shí)耗時(shí)長(zhǎng)、聚類結(jié)果準(zhǔn)確性和穩(wěn)定性都不盡如人意。因?yàn)?,在高維數(shù)據(jù),基于距離的相似度計(jì)算效率極低;特征值過(guò)多在所有維度上存在簇的可能性非常低;由于稀疏性和緊鄰特性,基于距離的相似度幾乎為0,導(dǎo)致高維空間很難出現(xiàn)數(shù)據(jù)簇。這時(shí)我們可以選著使用子空間聚類,或是降維處理。

子空間聚類算法是在高維數(shù)據(jù)空間中對(duì)傳統(tǒng)聚類算法的一種擴(kuò)展,其思想是選取與給定簇密切相關(guān)的維,然后在對(duì)應(yīng)的子空間進(jìn)行聚類。比如譜聚類就是一種子空間聚類方法,由于選擇相關(guān)維的方法以及評(píng)估子空間的方法需要自定義,因此這種方法對(duì)操作者的要求較高。

使用聚類分析中間預(yù)處理

  • 圖像壓縮

用較少的數(shù)據(jù)量來(lái)表示原有的像素矩陣的過(guò)程,這個(gè)過(guò)程稱為圖像編碼。數(shù)據(jù)圖像的顯著特點(diǎn)是數(shù)據(jù)量龐大,需要占用相當(dāng)大的儲(chǔ)存空間,這給圖像的存儲(chǔ)、計(jì)算、傳輸?shù)葞?lái)了不便。因此,現(xiàn)在大多數(shù)數(shù)字網(wǎng)絡(luò)下的圖像都會(huì)經(jīng)過(guò)壓縮后再做進(jìn)一步應(yīng)用,圖像壓縮的方法之一便是聚類算法。
在使用聚類算法做圖像壓縮時(shí),我們會(huì)定義K個(gè)顏色數(shù)(例如128種顏色),顏色數(shù)就是聚類類別的數(shù)量;K均值聚類算法會(huì)把類似的顏色分別放在K個(gè)簇中,然后每個(gè)簇使用一種顏色來(lái)代替原始顏色,那么結(jié)果就是有多少個(gè)簇,就生成了多少種顏色構(gòu)成的圖像,由此實(shí)現(xiàn)圖像壓縮。

  • 圖像分割

圖像分割就是把圖像分成若干個(gè)特定的、具有獨(dú)特性質(zhì)的區(qū)域并提出感興趣的目標(biāo)技術(shù)和過(guò)程,這是圖像處理和分析的關(guān)鍵步驟。圖像分割后提取出的目標(biāo)可以用于圖像語(yǔ)義識(shí)別,圖像搜索等領(lǐng)域。例如從圖像中分割出前景人臉信息,然后做人臉識(shí)別。聚類算法是圖像分割方法的一種,其實(shí)施的關(guān)鍵是通過(guò)不同區(qū)域間明顯不同的圖像色彩特征做聚類,聚類數(shù)量就是要分割的區(qū)域的數(shù)量。

  • 圖像理解

在圖像理解中,有一種稱為基于區(qū)域的提取方法?;趨^(qū)域的提取方法是在圖像分割和對(duì)象識(shí)別的前提下進(jìn)行的,利用對(duì)象模板、場(chǎng)景分類器等,通過(guò)識(shí)別對(duì)象及對(duì)象之間的拓?fù)潢P(guān)系挖掘語(yǔ)義,生成對(duì)應(yīng)的場(chǎng)景語(yǔ)義信息。例如,先以顏色、形狀等特征對(duì)分割后的圖像區(qū)域進(jìn)行聚類,形成少量BLOB;然后通過(guò)CMRM模型計(jì)算出BLOB與某些關(guān)鍵詞共同出現(xiàn)的概率。

  • 異常檢測(cè)

異常檢測(cè)有多種實(shí)施方法,其中常用的方法是基于距離的異常檢測(cè)方法。即使數(shù)據(jù)集不滿足任何特定分布模型,它仍能有效地發(fā)現(xiàn)離群點(diǎn),特別是當(dāng)空間維度比較高時(shí),算法的效率比基于密度的方法要高得多。算法具體實(shí)現(xiàn)時(shí),首先算出數(shù)據(jù)樣本間的距離(如曼哈頓距離、歐氏距離等),然后對(duì)數(shù)據(jù)做預(yù)處理后就可以根據(jù)距離的定義來(lái)檢測(cè)異常值。
例如,可以使用K-means的聚類可以將離中心店最遠(yuǎn)的類或者不屬于任何一個(gè)類的數(shù)據(jù)點(diǎn)提取出來(lái),然后將其定義為異常值。

聚類算法的選擇:

  • 數(shù)據(jù)為高維數(shù)據(jù),那么選取子空間聚類(如譜聚類)
  • 數(shù)據(jù)量在100萬(wàn)條以內(nèi),那么使用k均值較好;如果數(shù)據(jù)量超過(guò)100萬(wàn)條,那么可以考慮使用Mini Batch KMeans
  • 如果數(shù)據(jù)中存在噪點(diǎn),那么可以使用基于密度的DBSCAN
  • 如果最求更高的分類準(zhǔn)確度,那么選擇譜聚類將比K均值準(zhǔn)確度更好

python代碼實(shí)現(xiàn)

import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
from sklearn import metrics
import matplotlib.pyplot as plt
from sklearn.datasets import make_blobs
%matplotlib inline
# 數(shù)據(jù)準(zhǔn)備
data = make_blobs(n_samples=2000, centers=[[1,1], [-1, -1]], cluster_std=0.7, random_state=2018)
X = data[0]
y = data[1]
#設(shè)置聚類數(shù)量
n_clusters = 2
# 建立聚類模型對(duì)象
kmeans = KMeans(n_clusters=n_clusters, random_state=2018)
# 訓(xùn)練聚類模型
kmeans.fit(X)
# 預(yù)測(cè)聚類模型
pre_y = kmeans.predict(X)
### 模型效果指標(biāo)評(píng)估 ###
# 樣本距離最近的聚類中心的總和
inertias = kmeans.inertia_
# 調(diào)整后的蘭德指數(shù)
adjusted_rand_s = metrics.adjusted_rand_score(y, pre_y)
# 互信息
mutual_info_s = metrics.mutual_info_score(y, pre_y)
# 調(diào)整后的互信息
adjusted_mutual_info_s = metrics.adjusted_mutual_info_score(y, pre_y)
# 同質(zhì)化得分
homogeneity_s = metrics.homogeneity_score(y, pre_y)
# 完整性得分
completeness_s = metrics.completeness_score(y, pre_y)
# V-measure得分
v_measure_s = metrics.v_measure_score(y, pre_y)
# 平均輪廓系數(shù)
silhouette_s = metrics.silhouette_score(X, pre_y, metric='euclidean')
# Calinski 和 Harabaz 得分
calinski_harabaz_s = metrics.calinski_harabaz_score(X, pre_y)
df_metrics = pd.DataFrame([[inertias, adjusted_rand_s,mutual_info_s, adjusted_mutual_info_s, homogeneity_s,completeness_s,v_measure_s, silhouette_s ,calinski_harabaz_s]], columns=['ine','tARI','tMI','tAMI','thomo','tcomp','tv_m','tsilh','tc&h'])
df_metrics

## 模型可視化##
centers = kmeans.cluster_centers_
# 顏色設(shè)置
colors = ['green', 'pink']
# 創(chuàng)建畫布
plt.figure(figsize=(12,6))
titles = ['Real', 'Predict']
for j, y_ in enumerate([y, pre_y]):
 plt.subplot(1,2, j+1)
 plt.title(titles[j])
 # 循環(huán)讀類別
 for i in range(n_clusters):
  # 找到相同的索引
  index_sets = np.where(y_ == i)
  # 將相同類的數(shù)據(jù)劃分為一個(gè)聚類子集
  cluster = X[index_sets]
  # 展示樣本點(diǎn)
  plt.scatter(cluster[:, 0], cluster[:, 1], c=colors[i], marker='.')
  if j==1: 
  # 簇中心
plt.plot(centers[i][0], centers[i][1], 'o',markerfacecolor=colors[i],markeredgecolor='k', markersize=6)
plt.savefig('xx.png')
plt.show()

評(píng)估指標(biāo)解析:

  • inertias:inertias是K均值模型對(duì)象的屬性,表示樣本距離最近的聚類中心的總和,它是作為在沒(méi)有真實(shí)分類結(jié)果標(biāo)簽下的非監(jiān)督式評(píng)估指標(biāo)。該值越小越好,值越小證明樣本在類間的分布越集中,即類內(nèi)的距離越小。
  • adjusted_rand_s:調(diào)整后的蘭德指數(shù)(Adjusted Rand Index),蘭德指數(shù)通過(guò)考慮在預(yù)測(cè)和真實(shí)聚類中在相同或不同聚類中分配的所有樣本對(duì)和計(jì)數(shù)對(duì)來(lái)計(jì)算兩個(gè)聚類之間的相似性度量。調(diào)整后的蘭德指數(shù)通過(guò)對(duì)蘭德指數(shù)的調(diào)整得到獨(dú)立于樣本量和類別的接近于0的值,其取值范圍為[-1, 1],負(fù)數(shù)代表結(jié)果不好,越接近于1越好意味著聚類結(jié)果與真實(shí)情況越吻合。
  • mutual_info_s:互信息(Mutual Information, MI),互信息是一個(gè)隨機(jī)變量中包含的關(guān)于另一個(gè)隨機(jī)變量的信息量,在這里指的是相同數(shù)據(jù)的兩個(gè)標(biāo)簽之間的相似度的量度,結(jié)果是非負(fù)值。
  • adjusted_mutual_info_s:調(diào)整后的互信息(Adjusted Mutual Information, AMI),調(diào)整后的互信息是對(duì)互信息評(píng)分的調(diào)整得分。它考慮到對(duì)于具有更大數(shù)量的聚類群,通常MI較高,而不管實(shí)際上是否有更多的信息共享,它通過(guò)調(diào)整聚類群的概率來(lái)糾正這種影響。當(dāng)兩個(gè)聚類集相同(即完全匹配)時(shí),AMI返回值為1;隨機(jī)分區(qū)(獨(dú)立標(biāo)簽)平均預(yù)期AMI約為0,也可能為負(fù)數(shù)。
  • homogeneity_s:同質(zhì)化得分(Homogeneity),如果所有的聚類都只包含屬于單個(gè)類的成員的數(shù)據(jù)點(diǎn),則聚類結(jié)果將滿足同質(zhì)性。其取值范圍[0,1]值越大意味著聚類結(jié)果與真實(shí)情況越吻合。
  • completeness_s:完整性得分(Completeness),如果作為給定類的成員的所有數(shù)據(jù)點(diǎn)是相同集群的元素,則聚類結(jié)果滿足完整性。其取值范圍[0,1],值越大意味著聚類結(jié)果與真實(shí)情況越吻合。
  • v_measure_s:它是同質(zhì)化和完整性之間的諧波平均值,v = 2 (均勻性完整性)/(均勻性+完整性)。其取值范圍[0,1],值越大意味著聚類結(jié)果與真實(shí)情況越吻合。
  • silhouette_s:輪廓系數(shù)(Silhouette),它用來(lái)計(jì)算所有樣本的平均輪廓系數(shù),使用平均群內(nèi)距離和每個(gè)樣本的平均最近簇距離來(lái)計(jì)算,它是一種非監(jiān)督式評(píng)估指標(biāo)。其最高值為1,最差值為-1,0附近的值表示重疊的聚類,負(fù)值通常表示樣本已被分配到錯(cuò)誤的集群。
  • calinski_harabaz_s:該分?jǐn)?shù)定義為群內(nèi)離散與簇間離散的比值,它是一種非監(jiān)督式評(píng)估指標(biāo)。

參考:
《python數(shù)據(jù)分析與數(shù)據(jù)化運(yùn)營(yíng)》 宋天龍

到此這篇關(guān)于python數(shù)據(jù)分析之聚類分析(cluster analysis)的文章就介紹到這了,更多相關(guān)python聚類分析內(nèi)容請(qǐng)搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!

版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開(kāi)通

自選配置、實(shí)時(shí)開(kāi)通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問(wèn)服務(wù)

1對(duì)1客戶咨詢顧問(wèn)

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部