spark 机器学习一 聚类算法案例小结

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/flyinthesky111/article/details/79221374

最近公司需要用到机器学习做项目,本菜鸟就得去研究研究怎么回事

这个案例是网上找的一个聚类算法的案例,自己敲了敲,写写

先上训练数据

0.0 0.0 0.0
0.1 0.1 0.1
0.2 0.2 0.2
5.0 5.0 5.0
5.1 5.1 5.1
5.2 5.2 5.2
9.0 9.0 9.0
9.1 9.1 9.1
9.2 9.2 9.2
代码如下

object JuleiMLdemo {
  def main(args: Array[String]): Unit = {
    //聚类算法
    //屏蔽不必要的日志
    Logger.getLogger("org.apache.spark").setLevel(Level.ERROR)
    //设置运行环境
    val sparkConf = new SparkConf().setMaster("local[4]").setAppName("MLdemo")
    val sc = new SparkContext(sparkConf)
    //加载 解析本地文件
    val data = sc.textFile("E:\\YBLdata\\MLdata.txt",1)
    val parseData = data.map(s=>Vectors.dense(s.split(' ').map(_.toDouble)))
    //将数据聚类,4个类,迭代次数20次,进行模型训练
    val numClusters=3
    val numIterations=100
    val model = KMeans.train(parseData,numClusters,numIterations)
    //数据模型的中心点
    for (c<-model.clusterCenters){
      println(" "+c.toString)
    }
//使用代价函数评估数据模型
    val cost = model.computeCost(parseData)
    println(cost)
    //单点数据进行模型测试
println(model.predict(Vectors.dense("6 6 6".split(' ').map(_.toDouble))))
    //交叉评估,返回结果(返回的是属于哪一个类的类型号)
    val testdata = data.map(s => Vectors.dense(s.split(' ').map(_.toDouble)))
    model.predict(testdata).foreach(println)
  //交叉评估,返回数据集和结果(返回当前数据集和类型号)
    val map = data.map {
      line =>
        val linevector = Vectors.dense(line.split(' ').map(_.toDouble))
        val res = model.predict(linevector)
        (line, res)
    }
    map.foreach(println)
    //
  }
}
运行结果

[0.1,0.1,0.1]
 [9.1,9.1,9.1]    =>数据模型中心点
 [5.1,5.1,5.1]
0.1800000000000046   代价函数值
2   =>测试(6,6,6)属于哪一类
0
0
0
1
1                     =>每一行数据对应的类   即 聚类结果
1
2
2
2
(0.0 0.0 0.0,0)
(0.1 0.1 0.1,0)
(0.2 0.2 0.2,0)
(9.0 9.0 9.0,1)
(9.1 9.1 9.1,1)        =>数据集和对应的聚类结果
(9.2 9.2 9.2,1)
(5.0 5.0 5.0,2)
(5.1 5.1 5.1,2)
(5.2 5.2 5.2,2)


猜你喜欢

转载自blog.csdn.net/flyinthesky111/article/details/79221374