好久没有写博客了,虽然并没有多少人看。kmeans的思想大家自己去查找,我就不一一叙述了。kmeans之所以不能达到全局最优,是因为他的cost函数是一个非凸的函数,找不到最低点那个位置。kmeans的初始位置很重要,本片博客采取的就是最基本的随机生成初始中心点(我很好奇,有些人的代码就是随机生成n和点,都不带判重的),比较 好的生成算法是kmeans++,保证初始点间的距离最远。这是我初学scala一个月写的代码,还没有体会到scala的精髓,望各位指导!
import scala.collection.immutable.Vector
import scala.io.Source
import scala.util.Random
import scala.collection.mutable.ArrayBuffer
import com.sun.jersey.core.spi.factory.MessageBodyFactory.DistanceComparator
object MyKmeans {
//读取需要聚类的数据
def GetData(pathfile:String):Array[Point]={
val source=Source.fromFile(pathfile)
val lines=source.getLines().toArray
val data=lines.map { x =>new Point( x.split(" ").map { y => y.toDouble})}
println("读取数据完成")
data
}
def main(args: Array[String]): Unit = {
var data=GetData("/h