kmeans演算法的具體思想這裡省略。
kmeans演算法實現步驟一般如下:
1、從d
中隨機取
k個元素,作為
k個簇的各自的中心,或者隨機生成k個中心元素。
2、分別計算剩下的元素到
k個簇中心的相異度,將這些元素分別劃歸到相異度最低的簇。
3、根據聚類結果,重新計算
k個簇各自的中心,計算方法是取簇中所有元素各自維度的算術平均數。
4、將d中全部元素按照新的中心重新聚類。
5、重複第
4步,直到聚類結果不再變化。
6、將結果輸出。
關於generatedata
函式的解析:
這個函式的作用就是產生n個d
維的資料
,程式中的變數已經定義好了
n = 1000,即
1000個點
r = 1000,規約範圍
d = 10,資料的維度,即
10維的資料
def generatedata =
array.tabulate(n)(generatepoint)
} def closestpoint(p: vector, centers: hashmap[int, vector]): int =
}return bestindex
} def main(args: array[string])
val iter = points.iterator
for (i <- 1 to points.size)
println("initial centers: " + kpoints)
while(tempdist > convergedist)
for (newp <- newpoints)
}println("final centers: " + kpoints)
}}
Spark中executor memory引數詳解
我們知道,spark執行的時候,可以通過 executor memory 來設定executor執行時所需的memory。但如果設定的過大,程式是會報錯的,如下 555.png 那麼這個值最大能設定多少呢?本文來分析一下。文中安裝的是spark1.6.1,安裝在hadoop2.7上。1 相關的2個引...
Spark基礎(三)Spark中的任務執行
容錯機制 spark的架構特點 根據客戶端提交的jar包劃分出來乙個個的rdd,根據rdd之間的lineage關係劃分dag。劃分dag的目的是為了劃分stage。2 dag通過dagscheller劃分為stage 再劃分為taskset 根據劃分出來的dag,將dag送個dagscheduler...
spark更改分割槽 Spark中的分割槽方法詳解
一 spark資料分割槽方式簡要 在spark中,rdd resilient distributed dataset 是其最基本的抽象資料集,其中每個rdd是由若干個partition組成。在job執行期間,參與運算的partition資料分布在多台機器的記憶體當中。這裡可將rdd看成乙個非常大的陣...