spark mllib k-means算法实现
package iie.udps.example.spark.mllib; import java.util.regex.Pattern; import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.mllib.clustering.KMeans;
import org.apache.spark.mllib.clustering.KMeansModel;
import org.apache.spark.mllib.linalg.Vector;
import org.apache.spark.mllib.linalg.Vectors; /**
* Example using MLLib KMeans from Java.
*
* spark-submit --class iie.udps.example.spark.mllib.JavaKMeans --master
* yarn-cluster --num-executors 15 --driver-memory 512m --executor-memory 2g
* --executor-cores 2 /home/xdf/test2.jar /user/xdf/Example.txt 10 2
*/
public final class JavaKMeans { @SuppressWarnings("serial")
private static class ParsePoint implements Function<String, Vector> {
private static final Pattern SPACE = Pattern.compile(","); @Override
public Vector call(String line) {
String[] tok = SPACE.split(line);
// 统一数据维度为3,此处没有考虑其他异常数据情况
if (tok.length < 3) {
tok = SPACE.split(line + ",0");
for (int i = tok.length; i < 3; i++) {
tok[i] = "0";
}
}
if (tok.length > 3) {
tok = SPACE.split("0,0,0");
}
double[] point = new double[tok.length];
for (int i = 0; i < tok.length; ++i) {
point[i] = Double.parseDouble(tok[i]);
}
return Vectors.dense(point);
} } public static void main(String[] args) {
if (args.length < 3) {
System.err
.println("Usage: JavaKMeans <input_file> <k> <max_iterations> [<runs>]");
System.exit(1);
}
String inputFile = args[0]; // 要读取的文件
int k = Integer.parseInt(args[1]); // 聚类个数
int iterations = Integer.parseInt(args[2]); // 迭代次数
int runs = 1; // 运行算法次数 if (args.length >= 4) {
runs = Integer.parseInt(args[3]);
}
SparkConf sparkConf = new SparkConf().setAppName("JavaKMeans");
// sparkConf.set("spark.default.parallelism", "4");
// sparkConf.set("spark.akka.frameSize", "1024");
System.setProperty(
"dfs.client.block.write.replace-datanode-on-failure.enable",
"true");
System.setProperty(
"dfs.client.block.write.replace-datanode-on-failure.policy",
"never");
// sparkConf.set(
// "dfs.client.block.write.replace-datanode-on-failure.enable",
// "true");
// sparkConf.set(
// "dfs.client.block.write.replace-datanode-on-failure.policy",
// "never");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
// 指定文件分片数
JavaRDD<String> lines = sc.textFile(inputFile,2400);// ,1264 , 1872,2400
JavaRDD<Vector> points = lines.map(new ParsePoint()); KMeansModel model = KMeans.train(points.rdd(), k, iterations, runs,
KMeans.K_MEANS_PARALLEL()); // System.out.println("Vector 98, 345, 90 belongs to clustering :"
// + model.predict(Vectors.dense(98, 345, 90)));
// System.out.println("Vector 748, 965, 202 belongs to clustering :"
// + model.predict(Vectors.dense(748, 965, 202)));
// System.out.println("Vector 310, 554, 218 belongs to clustering :"
// + model.predict(Vectors.dense(310, 554, 218))); System.out.println("Cluster centers:");
for (Vector center : model.clusterCenters()) {
System.out.println(" " + center); }
double cost = model.computeCost(points.rdd());
System.out.println("Cost: " + cost); sc.stop();
}
}
spark mllib k-means算法实现的更多相关文章
- Spark MLlib FPGrowth关联规则算法
一.简介 FPGrowth算法是关联分析算法,它采取如下分治策略:将提供频繁项集的数据库压缩到一棵频繁模式树(FP-tree),但仍保留项集关联信息.在算法中使用了一种称为频繁模式树(Frequent ...
- Spark MLlib KMeans 聚类算法
一.简介 KMeans 算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把分类样本点分到各个簇.然后按平均法重新计算各个簇的质心,从而确定新的簇心.一直迭代,直到簇心的移动距离小于某个给定的值. ...
- Spark MLlib协同过滤算法
算法说明 协同过滤(Collaborative Filtering,简称CF,WIKI上的定义是:简单来说是利用某个兴趣相投.拥有共同经验之群体的喜好来推荐感兴趣的资讯给使用者,个人透过合作的机制给予 ...
- Spark mllib 随机森林算法的简单应用(附代码)
此前用自己实现的随机森林算法,应用在titanic生还者预测的数据集上.事实上,有很多开源的算法包供我们使用.无论是本地的机器学习算法包sklearn 还是分布式的spark mllib,都是非常不错 ...
- KNN 与 K - Means 算法比较
KNN K-Means 1.分类算法 聚类算法 2.监督学习 非监督学习 3.数据类型:喂给它的数据集是带label的数据,已经是完全正确的数据 喂给它的数据集是无label的数据,是杂乱无章的,经过 ...
- 十二、spark MLlib的scala示例
简介 spark MLlib官网:http://spark.apache.org/docs/latest/ml-guide.html mllib是spark core之上的算法库,包含了丰富的机器学习 ...
- Spark Mllib里如何生成KMeans的训练样本数据、生成线性回归的训练样本数据、生成逻辑回归的训练样本数据和其他数据生成
不多说,直接上干货! 具体,见 Spark Mllib机器学习(算法.源码及实战详解)的第2章 Spark数据操作
- Spark Mllib里的向量标签概念、构成(图文详解)
不多说,直接上干货! Labeled point: 向量标签 向量标签用于对Spark Mllib中机器学习算法的不同值做标记. 例如分类问题中,可以将不同的数据集分成若干份,以整数0.1.2,... ...
- Spark MLlib架构解析(含分类算法、回归算法、聚类算法和协同过滤)
Spark MLlib架构解析 MLlib的底层基础解析 MLlib的算法库分析 分类算法 回归算法 聚类算法 协同过滤 MLlib的实用程序分析 从架构图可以看出MLlib主要包含三个部分: 底层基 ...
随机推荐
- Java:Exception
异常: 就是程序在运行时出现不正常的情况. 异常的由来:问题也是现实生活中一个具体的事物,也可以通过java的类的形式进行描述,并封装成对象.其实就是Java对不正常情况进行描述后的对象的体现. 两种 ...
- PHP后台
一.ajax提交表单 先引入ajax.js function ajax(url, fnSucc, fnFaild) { //1.创建Ajax对象 var oAjax=null; if(window.X ...
- 四个使用this的典型应用
(1)在html元素事件属性中使用,如 <input type=”button” onclick=”showInfo(this);” value=”点击一下”/> (2)构造函数 func ...
- Linux 常用命令杂记
移动光标:h:向左移动j:向下移动k:向上移动l:向上移动 与window 光标移动键功能一致. 常用命令行:shift + ^ 行首shift + $ 行尾ctrl + v 可视模式 , 选择一个范 ...
- 从协议VersionedProtocol开始2——ClientDatanodeProtocol和InterDatanodeProtocol
1.首先,我看的是hadoop1.2.1 这个里边,有点奇怪ClientDatanodeProtocol的versionID是4,但是InterDatanodeProtocol的versionID是3 ...
- 在VS中使用类模板出现出现LNK2019: 无法解析的外部符号错误。
在VS中使用类模板出现出现LNK2019: 无法解析的外部符号错误,应在一个.h文件中完成方法的声明与实现,不要将实现放在cpp文件里,VS貌似不支持类模板分离
- RPI学习--webcam_用fswebcam抓取图片
若 ls /dev 下没有video0,可以参考http://www.cnblogs.com/skynext/p/3644873.html,更新firmware 1,安装fswebcam: sudo ...
- checkbox的全选、反选、删除(适配器)
package com.example.adapter; import java.util.List; import com.example.ay.R;import com.example.vo.Fl ...
- static inline
今天看到了这样一段代码, static inline BOOL IsEmpty(id thing) { return thing == nil || [thing isEqual:[NSNull nu ...
- hadoop 常见问题
1.Eclipse 读取hdfs文件错误: java.io.IO Exception : Could not obtain block: blk_194219614024901469_1100 fi ...