spark利用MLlib实现kmeans算法实例
2016-07-05 10:36
429 查看
spark版本 1.3.1
scala系统环境2.10.4 程序编译版本2.11.8
需要注意的是,训练数据和待测试数据都要是浮点型的,如果是int型的数据的话会报错
scala系统环境2.10.4 程序编译版本2.11.8
需要注意的是,训练数据和待测试数据都要是浮点型的,如果是int型的数据的话会报错
package Kmeans import org.apache.spark.mllib.clustering.KMeans import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.{SparkContext,SparkConf} object KmeansTest { var ClusterIndex=0 def main(args:Array[String]): Unit ={ if(args.length<1){ System.err.println("Usage:<dir:trainning data> <dir:test data>") System.exit(1) } val conf=new SparkConf() val sc=new SparkContext(conf) val data=sc.textFile(args(0)) // the problem solved ,the data must be double type,not Int type val parseddata=data.map(s=>{Vectors.dense(s.split("\t").map(_.trim).filter(!"".equals(_)).map(_.toDouble))}).cache() val numIterators=20 val numCluster=2 //trainning data val rdd = sc.makeRDD(Array(Array(1.0,10.1,2.5),Array(2.0,5.2,3.8),Array(2.1,4.0,4.4),Array(0.6,2.0,3.1))) val data1 = rdd.map(f=>Vectors.dense(f)) val clusters=KMeans.train(data1,numCluster,numIterators) clusters.clusterCenters.foreach(x=>{println("Center index of cluster is :"+ClusterIndex+":") println(x) ClusterIndex+=1 }) // System.exit(1) parseddata.collect().foreach(dataline=>{ val clusterIndex=clusters.predict(dataline) println("The data"+dataline+"belongs to cluster"+clusterIndex) }) println("Kmeans cluster finished") sc.stop() } }
相关文章推荐
- 小知识
- Failed while installingDynamic Web Module 3.0
- STM32管教复用与重映射关系
- no matching function transform?
- Getting Started with Zend Framework MVC Applications
- 配置Maven本地仓库
- Spring整合Shiro做权限控制模块详细案例分析
- Android操作系统介绍之11种传感器
- 迷宫求解
- 十分钟认识单例模式的多种姿势
- linux下重命名文件或移动文件夹
- Swift - 是时候学习Swift了
- 我的Redis集群搭建之路
- Android仿淘宝详情页实现上下翻页
- Activity Intent相关FLAG介绍
- Android工程师面试题大全
- BeanUtils Exception 之 FastHashMap
- BeanUtils Exception 之 FastHashMap
- 【转】抛弃EF,20分构建一个属于自己的ORM框架
- <c:url>标签相关知识点