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

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

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

先上训练数据

0.00.00.0
0.10.10.1
0.20.20.2
5.05.05.0
5.15.15.1
5.25.25.2
9.09.09.0
9.19.19.1
9.29.29.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)


  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值