make random centres

This commit is contained in:
joedarby
2016-12-16 15:01:34 +00:00
parent 543cee8c79
commit 2a62b651fc
+6 -2
View File
@@ -23,12 +23,16 @@ object KMeans {
val m = 1 //number of features
//var centres = new ArrayBuffer[Row]
var centres : ArrayBuffer[Float] = rowsAsArray.takeSample(false, K, System.nanoTime().toInt)
val randomCentres : Array[Float] = rowsAsArray.takeSample(false, K, System.nanoTime().toInt)
var centres : ArrayBuffer[Float] = new ArrayBuffer[Float]()
for (i <- 0 until K) {
centres(i) = randomCentres(i)
}
for (i <- 0 until iterations) {
val clusterMap :RDD[(Int,Float)]= rowsAsArray.map(row => (assignCluster(row,centres,m,K),row))
val newCentres = clusterMap.reduceByKey((a,b) => getAverage(a,b))
val results = newCentres.map(x => x._2)
val resultsOutput = results.collect()
for (i <- 0 until K) {