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主要包含三个部分: 底层基 ...
随机推荐
- mysql把查询的结果格式成日期
SELECT *,FROM_UNIXTIME(addtime, '%Y-%m-%d %H:%i:%S') as riqi FROM `test`
- [Hadoop入门] - 2 ubuntu安装与配置 hadoop安装与配置
ubuntu安装(这里我就不一一捉图了,只引用一个网址, 相信大家能力) ubuntu安装参考教程: http://jingyan.baidu.com/article/14bd256e0ca52eb ...
- linux系统设置静态IP 查看网卡配置文件
http://jingyan.baidu.com/article/455a99508be7cda167277865.html vi /etc/sysconfig/network-scripts/ifc ...
- event.srcElement在火狐(FireFox)下的兼容问题。搜索框获得焦点时默认文字变化
前言: 项目中用到了一个功能,搜索框里有默认的文字,当搜索框获得焦点时里面的默认文字消失,如果失去焦点时搜索框内容为空则让里面的内容回复默认!,. 实现: 很轻松的在网上找到了类似代码 $(" ...
- C#抽象类、抽象方法、抽象属性
定义 在C#中使用关键字 abstract 来定义抽象类和抽象方法. 不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例."一个包含一个或多个纯虚函数 ...
- [Js]面向对象的拖拽
<html xmlns="http://www.w3.org/1999/xhtml"><head><style>#div1 {width:100 ...
- 11个Linux基础面试问题
Q.1: Linux 操作系统的核心是什么? Shell Kernel Command Script Terminal 答: 内核(Kernel)是Linux 操作系统的核心.Shell是一个命令行解 ...
- JS学习第一课
1.js 按照编写顺序执行 2.输出使用document.write. 3.申明数组 var array = [1,2,3,5] ; var arrStr = ["sgsg",& ...
- poj2429 大数分解+dfs
//Accepted 172 KB 172 ms //该程序为随机性算法,运行时间不定 #include <cstdio> #include <cstring> #includ ...
- oracle删除数据库中的所有数据的拼接语句
create or replace function count_rows/**查询各表实际记录数*/(table_name in varchar2,owner in varchar2 default ...