[英]K means clustering function in R
我正在嘗試編寫我自己的 k 均值聚類函數,以應用於 (n x p 矩陣) 的矩陣。 該函數應該能夠接受四個輸入:
預期輸出:長度為 2 的列表,其第一個元素是包含通過應用 K 均值算法獲得的最終聚類質心的 K × p 矩陣,其第二個元素是長度為 n 的向量,其中列出了分配給每個觀察值的聚類。
我嘗試了以下代碼但沒有工作:
set.seed(345)
KmeansClustering<-function(Datapoints, ncluster, initialClusters,maxiter) {
Datapoints<-LMPmatrix_t
ncluster<-2
initialClusters<-mean(LMPmatrix)
initialClusters
maxiter<-100
KmeansOut<-kmeans(Datapoints, ncluster, initialClusters,maxiter)
return(KmeansOut)
}
謝謝你。
kmeans 只能采用集群或中心的數量,但不能同時采用。 在函數中,你不斷地從環境中分配一些東西,這違背了函數的目的。 嘗試這樣的事情:
set.seed(345)
KmeansClustering<-function(Datapoints,ncluster=NULL,initialClusters=NULL,maxiter) {
if(!is.null(ncluster) & !is.null(initialClusters)){
stop("only provide ncluster or initialCluster, not both")
}
if(!is.null(ncluster)){
KmeansOut<-kmeans(Datapoints, ncluster,maxiter)
}else{
KmeansOut<-kmeans(Datapoints,initialClusters,maxiter)
}
return(KmeansOut)
}
set.seed(100)
# use 3 observations as initial centers
ini_centers = iris[sample(nrow(iris),3),-5]
#works
KmeansClustering(iris[,-5],ncluster=3,maxiter=10)
#works
KmeansClustering(iris[,-5],initialClusters=ini_centers,maxiter=10)
#error
KmeansClustering(iris[,-5],ncluster=3,initialClusters=ini_centers,maxiter=10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.