聚類方法歸類:劃分法、基於模型、基於密度、層次法、基於網格
模型引數:需要求出來的目標
隱含引數:不需要求,但如果知道會有利於求出目標
演算法步驟
1.隨機初始化幾個點(可隨意設定)
2.將其餘各點根據到初始點的距離,分配到這些點上,形成初始分類
3.找到每個類的中心點(到類內其它點距離均值最小的點),作為新的初始點
4.重複2、3步,直到中心點不再變化(或變化很小)
演算法複雜度:o(tkn),t為迭代次數(一般5、6次),k為初始選取的點數(即分類數),n為資料集的規模
缺點:k-means對只能處理分布簡單的資料,對資料分布有要求;對雜訊和outliner(離群點)敏感;對初始中心點敏感;
優點:收斂速度快
只處理一遍,不需要設定k值
1.設定乙個閾值
2.來乙個點,計算它與已有點的距離,小於閾值即歸為一類。否則自立門戶,形成新的一類
基於模型的聚類對資料分布有更好的描述
dbscan
核心點:周圍有足夠多的點
邊緣點:核心點周圍
噪點:遠離核心點
演算法:找核心點周圍的點,以周圍點為核心再找周圍的點,一直重複直到所有孤立點被排除出去。
優點:能處理雜訊和孤立點;能處理不規則的資料分布;不需要設定k
自底向上方法
演算法:1.每乙個點為一類
2.計算距離矩陣
3.將距離矩陣中最小的值(兩個點)聚為一類
4.再計算距離矩陣(涉及類),重複3-4的操作,直至矩陣中只有乙個數
距離:最近點的距離,最遠點的距離,平均點的距離
軟體工程整體總結
軟體工程是研究和應用如何以系統性的 規範化的 可定量的過程化方法去開發和維護軟體,以及如何把經過時間考驗而證明正確的管理技術和當前能夠得到的最好的技術方法結合起來的學科。它涉及到程式語言 資料庫 軟體開發工具 系統平台 標準 設計模式等方面 前幾篇部落格記錄著自己軟工的學習歷程 軟體工程概述 軟體開...
聚類演算法總結
最近要在spark上做乙個聚類的專案,資料量和類的個數都比較大。kmeans效果尚可,但是有點慢,因而重新看了下常用的演算法。最終選用mini batch kmeans,使用類似kmeans 的方法來初始化類中心。kmeans attention init centers randomize vs ...
聚類演算法總結
凸集 在歐氏空間中,凸集是對於集合內的每一對點,連線該對點的直線段上的每個點也在該集合內 非凸 non convex 資料 模擬上述可知 首先我們要了解衡量物件間差異的方法物件可能是乙個值,也可能是序列,聚類的方式的大都通過距離或相似度來衡量,常用距離如下 對於兩個物件的n維指標 x1,x2,xn ...