數(shù)據(jù)挖掘(第2版) 第5章 聚類習(xí)題答案_第1頁
數(shù)據(jù)挖掘(第2版) 第5章 聚類習(xí)題答案_第2頁
數(shù)據(jù)挖掘(第2版) 第5章 聚類習(xí)題答案_第3頁
數(shù)據(jù)挖掘(第2版) 第5章 聚類習(xí)題答案_第4頁
數(shù)據(jù)挖掘(第2版) 第5章 聚類習(xí)題答案_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1.簡述聚類分析的基本思想和基本步驟?聚類分析是一種無監(jiān)督學(xué)習(xí)方法,其基本思想是將數(shù)據(jù)集中的樣本劃分為若干個互相類似的簇(cluster),使得同一簇內(nèi)的樣本相似度較高,而不同簇之間的樣本相似度較低。聚類分析的目標(biāo)是發(fā)現(xiàn)數(shù)據(jù)中的內(nèi)在結(jié)構(gòu)和模式,將相似的樣本歸為一類,從而實(shí)現(xiàn)數(shù)據(jù)的分類和分組。聚類分析的基本步驟如下:①數(shù)據(jù)準(zhǔn)備:收集需要進(jìn)行聚類分析的數(shù)據(jù),并進(jìn)行預(yù)處理。這包括數(shù)據(jù)清洗、缺失值處理、特征選擇和標(biāo)準(zhǔn)化等操作,以確保數(shù)據(jù)的質(zhì)量和一致性。②選擇聚類算法:根據(jù)問題的需求和數(shù)據(jù)的性質(zhì),選擇適當(dāng)?shù)木垲愃惴?。常見的聚類算法包括K均值聚類、層次聚類、密度聚類和譜聚類等。③特征向量表示:將數(shù)據(jù)樣本轉(zhuǎn)換為合適的特征向量表示。根據(jù)數(shù)據(jù)的屬性類型,選擇適當(dāng)?shù)奶卣魈崛》椒?,如?shù)值型數(shù)據(jù)可以直接使用原始特征,而文本數(shù)據(jù)可以通過向量化方法如詞袋模型或TF-IDF等進(jìn)行表示。④聚類模型構(gòu)建:使用選擇的聚類算法構(gòu)建聚類模型。根據(jù)算法的要求,確定聚類的簇?cái)?shù)或其他參數(shù)。⑤聚類結(jié)果評估:評估聚類的質(zhì)量和效果。常用的評估指標(biāo)包括簇內(nèi)相似度和簇間差異度等。還可以使用可視化方法對聚類結(jié)果進(jìn)行分析和展示。⑥結(jié)果解釋和應(yīng)用:根據(jù)聚類結(jié)果進(jìn)行進(jìn)一步的分析和解釋??梢愿鶕?jù)不同簇的特點(diǎn)和共性,提取出有用的知識和信息,支持決策或應(yīng)用領(lǐng)域的問題解決。需要注意的是,聚類分析是一種迭代的過程,需要根據(jù)實(shí)際情況對算法和參數(shù)進(jìn)行調(diào)整和優(yōu)化,以獲得更好的聚類結(jié)果。同時,聚類結(jié)果的解釋和應(yīng)用也需要結(jié)合領(lǐng)域知識和問題背景進(jìn)行綜合考慮。一個好的聚類算法應(yīng)該具備哪些特性?一個好的聚類算法通常應(yīng)具備以下特性:①可伸縮性(Scalability):算法能夠有效地處理大規(guī)模數(shù)據(jù)集,并具有較低的時間和空間復(fù)雜度。它應(yīng)該能夠處理高維數(shù)據(jù),并在面對大量樣本時也能保持良好的性能。②魯棒性(Robustness):算法對噪聲和異常值具有較好的魯棒性。它能夠忽略異常值的干擾,將其歸類為合適的簇,而不會對整個聚類結(jié)果產(chǎn)生過大的影響。③可解釋性(Interpretability):算法產(chǎn)生的聚類結(jié)果應(yīng)該易于理解和解釋。它應(yīng)該能夠提供對簇的特征和屬性的解釋,幫助用戶理解數(shù)據(jù)中的模式和結(jié)構(gòu)。④靈活性(Flexibility):算法應(yīng)該具有一定的靈活性,能夠適應(yīng)不同類型的數(shù)據(jù)和問題。它應(yīng)該能夠處理數(shù)值型數(shù)據(jù)、文本數(shù)據(jù)、圖像數(shù)據(jù)等不同形式的數(shù)據(jù),并且可以適應(yīng)不同的聚類結(jié)構(gòu)和分布。⑤高效性(Efficiency):算法的執(zhí)行時間應(yīng)該盡可能短,并且具有高效的收斂性。它應(yīng)該能夠在合理的時間內(nèi)生成聚類結(jié)果,以便及時應(yīng)用于實(shí)際問題。⑥自動化(Automation):算法應(yīng)該能夠自動進(jìn)行特征提取、參數(shù)選擇和聚類過程,減少用戶的主觀干預(yù)和人工操作。⑦不受初始化影響(Insensitivitytoinitialization):算法應(yīng)該對初始參數(shù)的選擇不敏感,即不同的初始化應(yīng)該得到相似的聚類結(jié)果。這有助于算法的穩(wěn)定性和可靠性。⑧可擴(kuò)展性(Extensibility):算法應(yīng)該易于擴(kuò)展和擴(kuò)展,以滿足不同的需求和應(yīng)用場景。它應(yīng)該能夠支持新的數(shù)據(jù)類型、新的距離度量和新的聚類模型。需要注意的是,不同的聚類算法可能在不同的特性上有所側(cè)重,因此在選擇聚類算法時需要根據(jù)具體問題和數(shù)據(jù)特點(diǎn)進(jìn)行綜合考慮。3.簡述劃分聚類方法的主要思想。劃分聚類方法是聚類分析中的一種常見方法,其主要思想是通過迭代的方式將數(shù)據(jù)集劃分為不同的簇,使得同一簇內(nèi)的樣本相似度較高,不同簇之間的樣本相似度較低。劃分聚類方法的主要思想可以概括為以下步驟:①初始化:首先選擇初始的簇中心或隨機(jī)劃分簇,確定要劃分的簇?cái)?shù)。通常情況下,初始簇中心可以根據(jù)數(shù)據(jù)分布進(jìn)行選擇,或者隨機(jī)選擇數(shù)據(jù)點(diǎn)作為初始簇中心。②分配樣本:將每個樣本分配給最近的簇中心,計(jì)算樣本與簇中心之間的距離或相似度。常見的距離度量方法包括歐氏距離、曼哈頓距離、余弦相似度等。③更新簇中心:根據(jù)已分配樣本的情況,更新每個簇的中心位置。通常采用計(jì)算簇內(nèi)樣本的平均值或中心點(diǎn)作為新的簇中心。④重新分配樣本:根據(jù)新的簇中心,重新分配每個樣本到最近的簇中心。⑤迭代更新:重復(fù)進(jìn)行步驟3和步驟4,直到達(dá)到停止條件。停止條件可以是達(dá)到最大迭代次數(shù)、簇中心不再變化或目標(biāo)函數(shù)收斂等。⑥輸出聚類結(jié)果:最終得到劃分后的簇和每個樣本所屬的簇標(biāo)簽。4.簡述凝聚的層次聚類方法的主要思路。凝聚的層次聚類方法是聚類分析中的一種常見方法,其主要思路是通過逐步合并最相似的樣本或簇來構(gòu)建聚類的層次結(jié)構(gòu)。凝聚的層次聚類方法的主要思路可以概括為以下步驟:①初始化:將每個樣本視為一個簇,形成初始的單個樣本簇集合。②計(jì)算相似度:計(jì)算每對樣本或簇之間的相似度或距離。常用的相似度度量方法包括歐氏距離、曼哈頓距離、相關(guān)系數(shù)等。③合并最相似的簇:從相似度矩陣中選擇相似度最高的兩個簇,將它們合并為一個新的簇。合并的準(zhǔn)則可以是最小距離、最大距離、平均距離等。④更新相似度矩陣:根據(jù)合并的簇,更新相似度矩陣,以反映新的簇之間的相似度。⑤重復(fù)步驟3和步驟4,直到滿足停止條件。停止條件可以是達(dá)到指定的簇?cái)?shù)、相似度小于閾值或其他預(yù)定義條件。⑥輸出聚類結(jié)果:最終得到層次聚類的結(jié)果,形成聚類樹狀結(jié)構(gòu)(樹狀圖或樹狀圖譜),可根據(jù)需要選擇合適的切割方法來確定最終的聚類劃分。凝聚的層次聚類方法將樣本或簇逐步合并,形成不同層次的聚類結(jié)構(gòu)。在聚類樹狀結(jié)構(gòu)中,上層的簇表示更大范圍的聚類,而下層的簇表示更具體的聚類??梢酝ㄟ^樹狀結(jié)構(gòu)的切割來獲得不同數(shù)量的聚類。切割時可以根據(jù)相似度閾值、簇的距離或其他準(zhǔn)則進(jìn)行選擇。5.說出劃分聚類與層次聚類的主要特點(diǎn)。劃分聚類和層次聚類是聚類分析中兩種常見的方法,它們具有不同的特點(diǎn)和適用場景。劃分聚類的主要特點(diǎn):①固定簇?cái)?shù):劃分聚類需要事先指定簇的數(shù)量,即確定要將數(shù)據(jù)劃分為多少個簇。②迭代優(yōu)化:劃分聚類方法通常使用迭代的方式來優(yōu)化聚類結(jié)果,通過不斷更新簇中心和重新分配樣本來達(dá)到最優(yōu)或局部最優(yōu)。③效率較高:相比層次聚類,劃分聚類方法通常具有較高的計(jì)算效率,尤其適用于大規(guī)模數(shù)據(jù)集。④聚類結(jié)果較為穩(wěn)定:由于劃分聚類的隨機(jī)性較高,多次運(yùn)行劃分聚類算法可以得到不同的初始條件下的聚類結(jié)果,但相同初始條件下通常可以得到相似的結(jié)果。⑤需要預(yù)先設(shè)定簇?cái)?shù):劃分聚類方法對于確定簇的數(shù)量較為敏感,不同的簇?cái)?shù)設(shè)定可能會導(dǎo)致不同的聚類結(jié)果。層次聚類的主要特點(diǎn):①無需預(yù)先設(shè)定簇?cái)?shù):層次聚類方法不需要預(yù)先設(shè)定簇的數(shù)量,它會根據(jù)數(shù)據(jù)的內(nèi)在結(jié)構(gòu)自動構(gòu)建層次聚類結(jié)構(gòu)。②提供層次結(jié)構(gòu):層次聚類方法可以提供全局的聚類結(jié)構(gòu),通過聚類樹狀結(jié)構(gòu)可以看到不同層次的聚類結(jié)果,有助于發(fā)現(xiàn)嵌套關(guān)系和子簇的結(jié)構(gòu)。③計(jì)算復(fù)雜度較高:層次聚類方法通常具有較高的計(jì)算復(fù)雜度,特別是當(dāng)數(shù)據(jù)集規(guī)模較大時,計(jì)算和存儲開銷較大。④不受簇?cái)?shù)設(shè)定限制:由于層次聚類方法不需要預(yù)先設(shè)定簇?cái)?shù),因此可以根據(jù)需要通過樹狀結(jié)構(gòu)進(jìn)行切割,得到不同數(shù)量的聚類結(jié)果。⑤魯棒性較強(qiáng):層次聚類方法對于噪聲和異常值具有一定的魯棒性,因?yàn)樗ㄟ^逐步合并相似的樣本或簇來構(gòu)建聚類結(jié)構(gòu)。需要根據(jù)具體的問題和數(shù)據(jù)特點(diǎn)選擇適合的聚類方法,劃分聚類適用于對簇?cái)?shù)有明確要求且效率較高的情況,而層次聚類適用于無需預(yù)先設(shè)定簇?cái)?shù)且需要全局結(jié)構(gòu)信息的場景。6.在一維點(diǎn)集1,4,9,16,25,36,49,64,81上執(zhí)行層次聚類算法,假定簇表示為其質(zhì)心(平均),每一步質(zhì)心最近的兩個簇相合并。importnumpyasnp

#數(shù)據(jù)集

data=np.array([1,4,9,16,25,36,49,64,81])

#初始化每個數(shù)據(jù)點(diǎn)為一個簇

clusters=[[point]forpointindata]

#層次聚類算法

whilelen(clusters)>1:

#計(jì)算每個簇的質(zhì)心

centroids=[np.mean(cluster)forclusterinclusters]

#計(jì)算簇與簇之間的距離

distances=np.abs(np.subtract.outer(centroids,centroids))

#找到距離最近的兩個簇

min_distance=np.min(distances[np.nonzero(distances)])

cluster1,cluster2=np.where(distances==min_distance)

#合并簇

merged_cluster=clusters[cluster1[0]]+clusters[cluster2[0]]

#更新簇列表

ifcluster1[0]<cluster2[0]:

clusters.pop(cluster2[0])

clusters.pop(cluster1[0])

else:

clusters.pop(cluster1[0])

clusters.pop(cluster2[0])

#添加合并后的簇

clusters.append(merged_cluster)

#輸出所有的聚類結(jié)果

forclusterinclusters:

print(cluster)輸出結(jié)果:[9,1,4,16,25,36,49,64,81]7.importnumpyasnp

importmatplotlib.pyplotasplt

fromscipy.spatial.distanceimportcdist

#設(shè)置字體

plt.rcParams['font.family']='SimHei'

#身高和體重?cái)?shù)據(jù)

data=np.array([[160,49],[159,46],[160,41],[169,49],[162,50],[165,48],[165,52],[154,43],[160,45],[160,44],[157,43],[163,50],[161,51],[158,45],[159,48],[161,48]])

#最短距離法聚類函數(shù)

defsingle_linkage_clustering(data,k):

n=data.shape[0]

clusters=[[i]foriinrange(n)]#初始化每個樣本為一個簇

whilelen(clusters)>k:

#計(jì)算距離矩陣

distances=cdist(data,data)

np.fill_diagonal(distances,np.inf)#將對角線元素設(shè)置為無窮大,避免自身距離為最小距離

min_distance=np.min(distances)#找到最小距離

#找到最小距離對應(yīng)的簇

cluster1,cluster2=np.unravel_index(np.argmin(distances),distances.shape)

merged_cluster=clusters[cluster1]+clusters[cluster2]#合并簇

#更新簇列表和數(shù)據(jù)

clusters[cluster1]=merged_cluster

clusters.pop(cluster2)

data=np.delete(data,cluster2,axis=0)

returnclusters

#最長距離法聚類函數(shù)

defcomplete_linkage_clustering(data,k):

n=data.shape[0]

clusters=[[i]foriinrange(n)]#初始化每個樣本為一個簇

whilelen(clusters)>k:

#計(jì)算距離矩陣

distances=cdist(data,data)

np.fill_diagonal(distances,-np.inf)#將對角線元素設(shè)置為負(fù)無窮,避免自身距離為最大距離

max_distance=np.max(distances)#找到最大距離

#找到最大距離對應(yīng)的簇

cluster1,cluster2=np.unravel_index(np.argmax(distances),distances.shape)

merged_cluster=clusters[cluster1]+clusters[cluster2]#合并簇

#更新簇列表和數(shù)據(jù)

clusters[cluster1]=merged_cluster

clusters.pop(cluster2)

data=np.delete(data,cluster2,axis=0)

returnclusters

#調(diào)用最短距離法聚類函數(shù)

k=3#聚類數(shù)

clusters_single=single_linkage_clustering(data,k)

print("最短距離法聚類結(jié)果:")

forclusterinclusters_single:

print([i+1foriincluster])

#繪制最短距離法聚類圖

plt.scatter(data[:,1],data[:,0])

forclusterinclusters_single:

cluster_data=data[cluster]

plt.scatter(cluster_data[:,1],cluster_data[:,0])

plt.xlabel("體重(kg)")

plt.ylabel("身高(cm)")

plt.title("最短距離法聚類圖")

plt.show()

#調(diào)用最長距離法聚類函數(shù)

clusters_complete=complete_linkage_clustering(data,k)

print("最長距離法聚類結(jié)果:")

forclusterinclusters_complete:

print([i+1foriincluster])

#繪制最長距離法聚類圖

plt.scatter(data[:,1],data[:,0])

forclusterinclusters_complete:

cluster_data=data[cluster]

plt.scatter(cluster_data[:,1],cluster_data[:,0])

plt.xlabel("體重(kg)")

plt.ylabel("身高(cm)")

plt.title("最長距離法聚類圖")

plt.show()運(yùn)行結(jié)果:最短距離法聚類結(jié)果:[1,15,16,5,12,13,2,9,10,14][3,8,11][4,6,7]最長距離法聚類結(jié)果:[1,3,7,4,8,11,13,12,5,6,10,14,9,2][15][16]8.importnumpyasnp

fromscipy.spatial.distanceimportcdist

#樣本數(shù)據(jù)集

data=np.array([[2,10],[2,5],[8,4],[5,8],[7,5],[6,4],[1,2],

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論