ورود

View Full Version : حرفه ای: مشکل در پیاده سازی الگوریتم K-Means با زبان Scala



farzadgj
یک شنبه 08 بهمن 1396, 09:07 صبح
می خواهیم داده های زیر را باستفاده از الگوریتم K-Means به 2 خوشه متمایز خوشه بندی کنیم.
(2،4،10،12،3،20،30،11،25)

در زبان اسکالا کد زیر رو بصورت نیمه کاره نوشتم. در قسمت تعریف خوشه1 و خوشه2 آرایه باید بصورت انعطاف پذیر تعریف بشه یعنی تعداد خونه های اون مشخص نباشه و در حین اجرای کد ، داده ها درون آرایه قرار بگیره و به هر تعداد که نیاز شد آرایه رو بسازه.
مشکل کار من همین جاست که برنامه نمیذاره تعداد خونه های آرایه نامشخص باشه
باید چیکارش کنم ؟
زبان مورد استفاده : Scala
محیط توسعه IntelliJ IDEA 2016.2

اگر کسی اسکالا کار نکرده این کد رو با جاوا پیاده کنه برام.
تشکر


import scala.math._object KMeansObject {
def main(args: Array[String]) : Unit = {

val dataset = Array (2,4,10,12,3,20,30,11,25)
val numberOfClusters = 2
var meanOfClusterOne = dataset(0)
var meanOfClusterTwo = dataset(8)
var clusterOne =new Array[Int](9)
var clusterTwo =new Array[Int](9)


var i = 0
var j = 0
var k = 0

for (i<-0 until 8 ){
if (abs(dataset(i) - meanOfClusterOne) < abs(dataset(i)-meanOfClusterTwo)){
clusterOne(j) += dataset(i)
j = j+1

}else{
clusterTwo(k) += dataset(i)
k = k+1
}
}
clusterOne(j) += meanOfClusterOne
clusterTwo(k) += meanOfClusterTwo

println(s" new mean of cluster one: $meanOfClusterOne")

println("dataset is:")
dataset.foreach(s => print(s" $s"))
println()
println("Cluster One is:")
clusterOne.foreach(s => print(s" $s"))
println()
println("Cluster Two is:")
clusterTwo.foreach(s => print(s" $s"))
println()
println(s"mean of cluster one: $meanOfClusterOne")
println(s"mean of cluster Two is: $meanOfClusterTwo")
println("clusterOne length is:" + clusterOne.length)
println("cluster Tow length is :" + clusterTwo.length)
println("dataset length is: " + dataset.length)
}
}