R語言之實現K-mean聚類算法

2021-03-06 R語言交流中心

聚類算法作為無監督的學習方法,在不給出Y的情況下對所有的樣本進行聚類。以動態聚類為基礎的K均值聚類方法是其中最簡單而又有深度的一種方法。K均值的好處是我們可以在了解數據的情況下進行對樣本的聚類,當然他也有自己的弱點就是對大數據的運作存在一定的局限。我們以R基礎包自帶的鳶尾花(Iris)數據進行聚類分析的演示。利用R語言的K均值聚類函數kmeans(),進行聚類,首先我們介紹下kmeans()的構成

官方的解釋查看代碼:?kmeans

如圖:

我們主要用的參數是:

X:我們要用來聚類的數據,作為一個矩陣輸入。

Centers:我們要聚類的數量,需要自己進行填寫。

Method:分為single(最短距離),complete(最長距離),median(中間距離),average(類平均),centroid(重心),ward(離差平均和)

 

1. 我們看下iris 的數據結構:

代碼: dim(iris) #查看數據的行列數

str(iris)#查看數據的變量

2. 獲取我們聚類需要的數據。也就是去掉最後一列的物種標記信息。

代碼:train=iris[1:150,1:4] # 獲取數據的前四列

3. 利用kmeans() 進行聚類分析,並查看模型結果的構成。

代碼:model=kmeans(train)

如圖:

Cluster means: 每個聚類中各個列值生成的最終平均值

Clustering vector: 每行記錄所屬的聚類(2代表屬於第二個聚類,1代表屬於第一個聚類,3代表屬於第三個聚類)

Within cluster sum of squares by cluster: 每個聚類內部的距離平方和  

Available components: 運行kmeans函數返回的對象所包含的各個組成部分

"cluster"是一個整數向量,用於表示記錄所屬的聚類  
"centers"是一個矩陣,表示每聚類中各個變量的中心點
"totss"表示所生成聚類的總體距離平方和
"withinss"表示各個聚類組內的距離平方和
"tot.withinss"表示聚類組內的距離平方和總量
"betweenss"表示聚類組間的聚類平方和總量
"size"表示每個聚類組中成員的數量

4. 可視化展示結果:

代碼:result=cbind(train,as.character(model$cluster)) #將數據與聚類結果整合

         plot(result,col=model$cluster)#繪製散點圖矩陣

 

歡迎大家學習交流:

相關焦點

  • 聚類(三):KNN算法(R語言)
    k最臨近(KNN)算法是最簡單的分類算法之一,屬於有監督的機器學習算法。
  • python之kmeans數據聚類算法
    一 Kmeans原理kmeans是屬於無監督學習的數據聚類算法,根據點與點之間的距離推測每個點屬於哪個中心,常用計算距離的方式有:餘弦距離、歐式距離、曼哈頓距離等,本文以歐式距離為例。圖3kmeans實現邏輯:需要輸入待聚類的數據和欲聚類簇數k1.隨機生成k個初始點作為質心
  • K-means 聚類算法及其代碼實現
    K-means算法是非監督學習(unsupervised learning)中最簡單也是最常用的一種聚類算法,具有的特點是:本文章介紹
  • 不足 20 行 Python 代碼,高效實現 k-means 均值聚類算法!
    k-means均值算法雖然是聚類算法中比較簡單的一種,卻包含了豐富的思想內容,非常適合作為初學者的入門習題。關於 k-means 均值聚類算法的原理介紹、實現代碼,網上有很多,但運行效率似乎都有點問題。今天稍微有點空閒,寫了一個不足20行的 k-means 均值聚類算法,1萬個樣本平均耗時20毫秒(10次均值)。同樣的數據樣本,網上流行的算法平均耗時3000毫秒(10次均值)。
  • 教程 | matlab實現kmeans聚類算法
    kmeans聚類算法是一種簡單實用的聚類算法,matlab自帶函數kmeans可直接對數據進行kmeans聚類。
  • R語言做K均值聚類的一個簡單小例子
    參考連結https://www.guru99.com/r-k-means-clustering.htmlhttps://datascienceplus.com/k-means-clustering-in-r/https://www.datanovia.com/en/lessons/k-means-clustering-in-r-algorith-and-practical-examples
  • K-means聚類算法、Pandas繪製概率密度圖和TSNE展示聚類結果
    # -*- coding: utf-8 -*-# 使用K-Means算法聚類消費行為特徵數據import pandas as pd# 參數初始化input_path = 'F:/DataMining/chapter5/consumption_data.xls'  # 銷量及其他屬性數據output_path = '
  • 機器學習之SKlearn(scikit-learn)的K-means聚類算法
    在工程應用中,用python手寫代碼來從頭實現一個算法的可能性非常低,這樣不僅耗時耗力,還不一定能夠寫出構架清晰,穩定性強的模型。更多情況下,是分析採集到的數據,根據數據特徵選擇適合的算法,在工具包中調用算法,調整算法的參數,獲取需要的信息,從而實現算法效率和效果之間的平衡。而sklearn,正是這樣一個可以幫助我們高效實現算法應用的工具包。
  • K-Means聚類講解:算法和Sklearn的實現(附代碼)
    K-Means聚類是機器學習領域中最強大的聚類算法之一。他的原因比較簡單,但得出的結果也非常準確。聚類是理解數據集的非常重要的方式,因此在本文中,我們將討論什麼是聚類,為什麼需要聚類以及什麼是k-means聚類。
  • 人工智慧算法|K均值聚類算法Python實現
    以下是K均值法的python代碼實現。程序使用的工具包括numpy和matplotlib,其中numpy是一個用於處理多維數組的庫,而Matplotlib 則用於繪製二維圖形。calcuDistance(vec1, vec2):    return numpy.sqrt(numpy.sum(numpy.square(vec1- vec2)))def loadDataSet(inFile):    # 載入數據測試數據集    # 數據由文本保存,為二維坐標    inDate = codecs.open(inFile, 'r'
  • 機器學習十大經典算法之K-Means聚類算法
    聚類也能用於對Web上的文檔進行分類,以發現信息。諸如此類,聚類有著廣泛的實際應用。K-Means聚類算法簡介K-Means是發現給定數據集的 K 個簇的聚類算法, 之所以稱之為 K-均值是因為它可以發現 K 個不同的簇, 且每個簇的中心採用簇中所含值的均值計算而成。簇個數 K 是用戶指定的, 每一個簇通過其質心(centroid), 即簇中所有點的中心來描述。
  • 聚類算法之Kmeans
    本篇大綱:1、背景知識:一些常見的距離度量/相似度計算方式2、聚類算法之聚類算法之Kmeans聚類算法其實有很多,包括層次聚類,密度聚類,譜聚類等等。但是為何這篇只提Kmeans,是因為Kmeans是算法理解簡單,而又使用最多,並且從原理上來說,其它的聚類算法只是其算法或求解思路有些差別,但是其核心思路還是一致,具體做的事也是有著同一個目標,故而這篇我們重點詳細單獨闡述Kmeans算法。對於其它聚類算法,如果必要,我們在下一篇再進行展開。
  • K-Means聚類算法詳解
    個人認為,理解算法背後的idea和使用,要比看懂它的數學推導更加重要。idea會讓你有一個直觀的感受,從而明白算法的合理性,數學推導只是將這種合理性用更加嚴謹的語言表達出來而已,打個比方,一個梨很甜,用數學的語言可以表述為糖分含量90%,但只有親自咬一口,你才能真正感覺到這個梨有多甜,也才能真正理解數學上的90%的糖分究竟是怎麼樣的。
  • 聚類算法入門:k-means
    比如垃圾分類就是分類算法,你知道豬能吃的是溼垃圾,不能吃的是幹垃圾……;打掃房間時你把雜物都分分類,這是聚類,你事先不知道每個類別的標準。二、劃分聚類方法: K-means:對於給定的樣本集,按照樣本之間的距離(也就是相似程度)大小,將樣本集劃分為K個簇(即類別)。
  • K-Means聚類算法
    是一種聚類算法,與之前提到的樸素貝葉斯等算法不同,它屬於無監督學習。簡單來說,之前的算法中我們是利用特徵 x 和類別 y 來進行訓練、分類的,而無監督學習是指不需要我們提供具體的類別 y ,而讓數據自己聚在一起,形成 k 個簇,以實現分類的目的。具體方法是通過對給定的樣本進行劃分,分為 k 個簇,使得簇內的點儘量緊密的連在一起,而簇間的距離儘量大,評判的標準就是通過歐氏距離。
  • kmeans優化算法:二分Kmeans聚類算法
    算法的理解Bi這裡是的意思就是Binary,二進位的意思,所以有時候叫這個算法為二進Kmeans算法。為什麼我們需要用BiKmeans呢,就是為了解決初始化k個隨機的質心點時其中一個或者多個點由於位置太極端而導致迭代的過程中消失的問題。
  • ...分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R實現)
    選自EliteDataScience機器之心編譯參與:蔣思源、晏奇在本教程中,作者對現代機器學習算法進行一次簡要的實戰梳理。雖然類似的總結有很多,但是它們都沒有真正解釋清楚每個算法在實踐中的好壞,而這正是本篇梳理希望完成的。因此本文力圖基於實踐中的經驗,討論每個算法的優缺點。而機器之心也在文末給出了這些算法的具體實現細節。
  • 有了K均值聚類,為什麼還需要DBSCAN聚類算法?
    下圖說明了這一事實:基於密度的聚類算法基於密度的聚類是無監督學習法,基於數據空間中的聚類是高點密度的連續區域,通過低點密度的連續區域與其他此類聚類分離,來識別數據中獨特的組/聚類。具有噪聲的基於密度的聚類方法(DBSCAN)是基於密度聚類的一種基本算法。
  • k-means聚類算法原理總結
    目錄1. k-means聚類算法原理2. k-means聚類算法步驟3. k-means++聚類優化算法4.小批量處理的k-means聚類算法5. k值的選取6. k-means聚類算法不適用的幾個場景7. k-means與knn區別8. 小結聚類算法性能度量的文章提到若簇類相似度好簇間的相似度差,則聚類算法的性能較好。我們基於此定義k-means聚類算法的目標函數: 其中
  • k均值聚類算法原理和(TensorFlow)實現(無師自通)
    無監督學習非常有用,因為現存的大多數數據是沒有標籤的,這種方法可以用於諸如模式識別、特徵提取、數據聚類和降維等任務。k 均值聚類是一種無監督學習方法。還記得哈利波特故事中的分院帽嗎?那就是聚類,將新學生(無標籤)分成四類:格蘭芬多、拉文克拉、赫奇帕奇和斯特萊林。