- 浏览: 150778 次
- 性别:
- 来自: 内蒙古
文章分类
最新评论
-
linest:
ethi_teye 写道id可能是0开头的,你用int保存再输 ...
pat-1022 Digital Library -
ethi_teye:
id可能是0开头的,你用int保存再输出,这些0就被忽略了。
pat-1022 Digital Library -
lixuanchong:
在lz的代码上稍作修改即可:
#include<iost ...
pat-1010* Radix -
air_sky:
确实。。result=a0*base^0+a1*base^1+ ...
pat-1010* Radix -
linest:
air_sky 写道
关于“方程只有一个正整数解,就可以用二分 ...
pat-1010* Radix
package org.apache.mahout.clustering.kmeans;
public class KMeansDriver extends AbstractJob
kmeans的入口KMeansDriver类
run函数中buildClusters,clusterData
buildClusters函数中提供两种实现
buildClustersMR实现了迭代更新中心点的过程
runIteration函数进入了mapred的核心部分
输入输出都是sequence file
package org.apache.mahout.clustering.kmeans;
KMeansMapper类
public class KMeansMapper extends Mapper<WritableComparable<?>, VectorWritable, Text, ClusterObservations>
//启动类
private KMeansClusterer clusterer;
//用于保存聚类中心
private final Collection<Cluster> clusters = new ArrayList<Cluster>();
setup函数加载了距离度量类,初始化KMeansClusterer,载入聚类中心
map函数中启动
KMeansClusterer类,实现算法的核心类
emitPointToNearestCluster函数中
遍历聚类中心,根据距离找到最近点的聚类中心
输出key:最近聚类中心的标识,value:ClusterObservations对点的封装
ClusterObservations中含有s0:向量计数 s1:向量的累和 s2:向量平方的累和
便于后续计算
KMeansCombiner类,对map结果进行汇总
public class KMeansCombiner extends Reducer<Text, ClusterObservations, Text, ClusterObservations>
将同一聚类中心下的向量计数,累和
KMeansReducer类,
public class KMeansReducer extends Reducer<Text, ClusterObservations, Text, Cluster>
将同一聚类中心下汇总,计算收敛性,重新计算聚类中心
方法是向量平均值,即所有向量累和除以个数。
输出key:聚类中心标识,value:新聚类中心
clusterData函数中可选择两种实现,单机实现和分布式mapred实现
clusterDataMR中定义输入输出格式都是sequencefile,输出key为int型,value为vector型
只有map作业没有reduce
KMeansClusterMapper类
public class KMeansClusterMapper extends Mapper<WritableComparable<?>,VectorWritable,IntWritable,WeightedVectorWritable>
private final Collection<Cluster> clusters = new ArrayList<Cluster>();
private KMeansClusterer clusterer;
根据最终聚类标签,将点加上聚类输出
outputPointWithClusterInfo函数
遍历所有中心,找到最近的,输出
key:聚类id value:WeightedVectorWritable向量
public class KMeansDriver extends AbstractJob
kmeans的入口KMeansDriver类
run函数中buildClusters,clusterData
Path clustersOut = buildClusters(conf, input, clustersIn, output, measure, maxIterations, delta, runSequential); if (runClustering) { log.info("Clustering data"); clusterData(conf, input, clustersOut, new Path(output, AbstractCluster.CLUSTERED_POINTS_DIR), measure, delta, runSequential); }
buildClusters函数中提供两种实现
if (runSequential) { return buildClustersSeq(conf, input, clustersIn, output, measure, maxIterations, delta); } else { return buildClustersMR(conf, input, clustersIn, output, measure, maxIterations, delta); }
buildClustersMR实现了迭代更新中心点的过程
boolean converged = false; int iteration = 1; while (!converged && iteration <= maxIterations) { log.info("K-Means Iteration {}", iteration); // point the output to a new directory per iteration Path clustersOut = new Path(output, AbstractCluster.CLUSTERS_DIR + iteration); converged = runIteration(conf, input, clustersIn, clustersOut, measure.getClass().getName(), delta); // now point the input to the old output directory clustersIn = clustersOut; iteration++; }
runIteration函数进入了mapred的核心部分
job.setMapOutputKeyClass(Text.class); job.setMapOutputValueClass(ClusterObservations.class); job.setOutputKeyClass(Text.class); job.setOutputValueClass(Cluster.class);
输入输出都是sequence file
job.setInputFormatClass(SequenceFileInputFormat.class); job.setOutputFormatClass(SequenceFileOutputFormat.class); job.setMapperClass(KMeansMapper.class); job.setCombinerClass(KMeansCombiner.class); job.setReducerClass(KMeansReducer.class);
package org.apache.mahout.clustering.kmeans;
KMeansMapper类
public class KMeansMapper extends Mapper<WritableComparable<?>, VectorWritable, Text, ClusterObservations>
//启动类
private KMeansClusterer clusterer;
//用于保存聚类中心
private final Collection<Cluster> clusters = new ArrayList<Cluster>();
setup函数加载了距离度量类,初始化KMeansClusterer,载入聚类中心
ClassLoader ccl = Thread.currentThread().getContextClassLoader(); DistanceMeasure measure = ccl.loadClass(conf.get(KMeansConfigKeys.DISTANCE_MEASURE_KEY)) .asSubclass(DistanceMeasure.class).newInstance(); measure.configure(conf); this.clusterer = new KMeansClusterer(measure); String clusterPath = conf.get(KMeansConfigKeys.CLUSTER_PATH_KEY); if (clusterPath != null && clusterPath.length() > 0) { KMeansUtil.configureWithClusterInfo(conf, new Path(clusterPath), clusters); if (clusters.isEmpty()) { throw new IllegalStateException("No clusters found. Check your -c path."); } }
map函数中启动
this.clusterer.emitPointToNearestCluster(point.get(), this.clusters, context);
KMeansClusterer类,实现算法的核心类
emitPointToNearestCluster函数中
遍历聚类中心,根据距离找到最近点的聚类中心
输出key:最近聚类中心的标识,value:ClusterObservations对点的封装
ClusterObservations中含有s0:向量计数 s1:向量的累和 s2:向量平方的累和
便于后续计算
Cluster nearestCluster = null; double nearestDistance = Double.MAX_VALUE; for (Cluster cluster : clusters) { Vector clusterCenter = cluster.getCenter(); double distance = this.measure.distance(clusterCenter.getLengthSquared(), clusterCenter, point); if (distance < nearestDistance || nearestCluster == null) { nearestCluster = cluster; nearestDistance = distance; } } context.write(new Text(nearestCluster.getIdentifier()), new ClusterObservations(1, point, point.times(point)));
KMeansCombiner类,对map结果进行汇总
public class KMeansCombiner extends Reducer<Text, ClusterObservations, Text, ClusterObservations>
将同一聚类中心下的向量计数,累和
@Override protected void reduce(Text key, Iterable<ClusterObservations> values, Context context) throws IOException, InterruptedException { Cluster cluster = new Cluster(); for (ClusterObservations value : values) { cluster.observe(value); } context.write(key, cluster.getObservations()); }
KMeansReducer类,
public class KMeansReducer extends Reducer<Text, ClusterObservations, Text, Cluster>
将同一聚类中心下汇总,计算收敛性,重新计算聚类中心
方法是向量平均值,即所有向量累和除以个数。
输出key:聚类中心标识,value:新聚类中心
@Override protected void reduce(Text key, Iterable<ClusterObservations> values, Context context) throws IOException, InterruptedException { Cluster cluster = clusterMap.get(key.toString()); for (ClusterObservations delta : values) { cluster.observe(delta); } // force convergence calculation boolean converged = clusterer.computeConvergence(cluster, convergenceDelta); if (converged) { context.getCounter("Clustering", "Converged Clusters").increment(1); } cluster.computeParameters(); context.write(new Text(cluster.getIdentifier()), cluster); }
clusterData函数中可选择两种实现,单机实现和分布式mapred实现
if (runSequential) { clusterDataSeq(conf, input, clustersIn, output, measure); } else { clusterDataMR(conf, input, clustersIn, output, measure, convergenceDelta); }
clusterDataMR中定义输入输出格式都是sequencefile,输出key为int型,value为vector型
job.setInputFormatClass(SequenceFileInputFormat.class); job.setOutputFormatClass(SequenceFileOutputFormat.class); job.setOutputKeyClass(IntWritable.class); job.setOutputValueClass(WeightedVectorWritable.class);
只有map作业没有reduce
job.setMapperClass(KMeansClusterMapper.class); job.setNumReduceTasks(0);
KMeansClusterMapper类
public class KMeansClusterMapper extends Mapper<WritableComparable<?>,VectorWritable,IntWritable,WeightedVectorWritable>
private final Collection<Cluster> clusters = new ArrayList<Cluster>();
private KMeansClusterer clusterer;
根据最终聚类标签,将点加上聚类输出
@Override protected void map(WritableComparable<?> key, VectorWritable point, Context context) throws IOException, InterruptedException { clusterer.outputPointWithClusterInfo(point.get(), clusters, context); }
outputPointWithClusterInfo函数
遍历所有中心,找到最近的,输出
key:聚类id value:WeightedVectorWritable向量
AbstractCluster nearestCluster = null; double nearestDistance = Double.MAX_VALUE; for (AbstractCluster cluster : clusters) { Vector clusterCenter = cluster.getCenter(); double distance = measure.distance(clusterCenter.getLengthSquared(), clusterCenter, vector); if (distance < nearestDistance || nearestCluster == null) { nearestCluster = cluster; nearestDistance = distance; } } context.write(new IntWritable(nearestCluster.getId()), new WeightedVectorWritable(1, vector));
发表评论
-
Mahout LDA CVB
2012-08-17 15:40 0起始的log说明了各个参数的含义 Will run Col ... -
读代码-LDADriver及相关
2012-02-07 23:59 0用到写文件,mapred迭代收敛框架,内部迭代收敛框架,向量每 ... -
读代码-BayesFileFormatter
2012-02-03 22:51 1062用到: 文件读写,文件夹下遍历文件处理 package or ... -
读代码-CanopyDriver及相关
2012-01-27 13:22 0用到:classloader动态加载 hadoop setu ... -
读代码-MinHashDriver及相关
2012-01-26 14:17 1297用到:泛型类 counter 哈希实现 package ... -
ToolRunner机制
2012-01-26 11:57 3498定义框架接口 由具体实现类实现 public interf ... -
mahout 启动对应
2011-12-22 12:11 0org.apache.mahout.utils.vectors ... -
读代码-Pattern和FrequentPatternMaxHeap
2011-12-01 19:52 907package org.apache.mahout.fpm.p ... -
读代码-TransactionTree
2011-11-25 15:19 0package org.apache.mahout.fpm.p ... -
读代码-FPGrowthDriver及相关
2011-11-25 09:57 0Key points: 平均分组 堆结构 结构序列化传递 ... -
读代码-TopKStringPatterns
2011-11-24 14:25 958package org.apache.mahout.fpm.p ... -
读代码-BayesDriver及相关
2011-11-18 10:18 0用到:重载key value类型,重载outputFormat ... -
读代码-TrainClassifier和TestClassifier
2011-11-17 19:44 1414package org.apache.mahout.class ... -
读代码-RandomSeedGenerator
2011-11-04 17:01 1194package org.apache.mahout.clust ... -
读代码-VectorWritable
2011-11-01 11:04 1327package org.apache.mahout.math; ... -
读代码-Vector
2011-10-28 11:26 0package org.apache.mahout.mat ... -
读代码-SequenceFilesFromDirectory
2011-10-27 20:53 1905package org.apache.mahout.text; ... -
读代码-InputMapper
2011-10-27 16:46 1023package org.apache.mahout.clust ...
相关推荐
matlab聚类kmeans代码 作业7 要求 在MapReduce上实现K-Means算法并在小数据集上测试。可以使用附件的数据集,也可以随机生成若干散点的二维数据(x, y)。设置不同的K值和迭代次数,可视化聚类结果。 提交要求同作业5...
mahout KMeansDriver测试相关jar包,有需要的同学可以下载来试试。把这个包放入hadoop/lib下面然后就可以在eclipse里面运行调试了。
STC12C5A通过GPS模块获取当前定位信息,如果车辆发生异常震动或车主打来电话(主动请求定位),将通过GSM发送一条定位短信到车主手机,车主点击链接默认打开网页版定位,如果有安装高德地图APP将在APP中打开并展示汽车当前位置 GPS模块可以使用多家的GPS模块,需要注意的是,当前程序对应的是GPS北斗双模芯片,故只解析 GNRMC数据,如果你使用GPS芯片则应改为GPRMC数据即可。 系统在初始化的时候会持续短鸣,每初始化成功一部分后将长鸣一声,如果持续短鸣很久(超过20分钟),建议通过串口助手查看系统输出的调试信息,系统串口默认输出从初始化开始的所有运行状态信息。 不过更建议你使用SIM868模块,集成GPS.GSM.GPRS,使用更加方便
基于tensorflow2.x卷积神经网络字符型验证码识别 卷积神经网络(Convolutional Neural Networks, CNNs 或 ConvNets)是一类深度神经网络,特别擅长处理图像相关的机器学习和深度学习任务。它们的名称来源于网络中使用了一种叫做卷积的数学运算。以下是卷积神经网络的一些关键组件和特性: 卷积层(Convolutional Layer): 卷积层是CNN的核心组件。它们通过一组可学习的滤波器(或称为卷积核、卷积器)在输入图像(或上一层的输出特征图)上滑动来工作。 滤波器和图像之间的卷积操作生成输出特征图,该特征图反映了滤波器所捕捉的局部图像特性(如边缘、角点等)。 通过使用多个滤波器,卷积层可以提取输入图像中的多种特征。 激活函数(Activation Function): 在卷积操作之后,通常会应用一个激活函数(如ReLU、Sigmoid或tanh)来增加网络的非线性。 池化层(Pooling Layer): 池化层通常位于卷积层之后,用于降低特征图的维度(空间尺寸),减少计算量和参数数量,同时保持特征的空间层次结构。 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。 全连接层(Fully Connected Layer): 在CNN的末端,通常会有几层全连接层(也称为密集层或线性层)。这些层中的每个神经元都与前一层的所有神经元连接。 全连接层通常用于对提取的特征进行分类或回归。 训练过程: CNN的训练过程与其他深度学习模型类似,通过反向传播算法和梯度下降(或其变种)来优化网络参数(如滤波器权重和偏置)。 训练数据通常被分为多个批次(mini-batches),并在每个批次上迭代更新网络参数。 应用: CNN在计算机视觉领域有着广泛的应用,包括图像分类、目标检测、图像分割、人脸识别等。 它们也已被扩展到处理其他类型的数据,如文本(通过卷积一维序列)和音频(通过卷积时间序列)。 随着深度学习技术的发展,卷积神经网络的结构和设计也在不断演变,出现了许多新的变体和改进,如残差网络(ResNet)、深度卷积生成对抗网络(DCGAN)等。
【三维装箱】遗传和模拟退火算法求解三维装箱优化问题【含Matlab源码 031期】.zip
cpk&ppk python 小程序,品友点评
基于springboot的java毕业&课程设计
课设毕设基于SpringBoot+Vue的影城管理系统 LW+PPT+源码可运行.zip
MC教育版(免登录版)
包含13993张数据和对应的13993张mask分割模版,数据集用不同目录保存,也可以用作分类数据集 类别包含:桃子、辣椒、覆盆子、大豆、南瓜、草莓
基于springboot的java毕业&课程设计
【三维装箱】遗传算法求解三维装箱优化问题【含Matlab源码 3408期】.zip
基于javaspring 开发框架的培训教程 TP1.zip
1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
医院网上预约系统设计与开发/毕业设计 JSP基于SSM网上医院预约挂号系统 科室信息: 科室id,科室名称,科室介绍,成立日期,负责人 医生信息: 医生工号,登录密码,所在科室,医生姓名,性别,医生照片,出生日期,医生职位,工作经验,联系方式,擅长,医生介绍 病人信息: 病人id,医生,病人姓名,性别,身份证号,联系电话,病人病例,登记时间 预约信息: 预约id,预约用户,预约医生,预约日期,时段,联系电话,下单时间,处理状态,医生回复 新闻信息: 新闻id,新闻标题,新闻图片,新闻内容,新闻日期,新闻来源 留言: 留言id,留言标题,留言内容,留言人,留言时间,管理回复,回复时间 用户: 用户名,登录密码,姓名,性别,出生日期,用户照片,联系电话,邮箱,家庭地址,注册时间
企业数据治理之数据质量治理方案
MySQL8.4.0 LTS(mysql-8.4.0-10.fc38.x86_64.rpm-bundle.tar)适用于Linux Fedora 38 (x86, 64-bit)
一、源码特点 java 医疗数据管理系统 是一套完善的web设计系统,对理解JSP java编程开发语言有帮助采用了数据模型进行区块链设计,系统具有完整的源代码和数据库,系统采用web模式,系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。 二、功能介绍 如博客中介绍 三、注意事项 1、管理员账号:admin 密码:admin 数据库配置文件DBO.java ,权限包括管理员,用户 2、开发环境为TOMCAT7.0,Myeclipse8.5开发,数据库为Mysql,使用java语言开发。 3、数据库文件名是jspyly 系统名称yly 4、地址:http://127.0.0.1:8080/yly/qt/index.jsp
基于springboot的java毕业&课程设计
可运行源码(含数据库脚本)+开发文档+lw(高分毕设项目) java期末大作业毕业设计项目管理系统计算机软件工程大数据专业 内容概要:通过陆丰市医院门诊分诊系统设计的研究背景、研究的意义和目的,通过运用java语言和ssm框架来建立一款分诊管理系统,能够帮助医院提高工作效率,减少工作中出现的错误率。设计出挂号管理、排队候诊管理以及叫号管理等多个子模块,绘制出实体关系图,利用MySQL技术建立数据库达成了软件与数据库的互通。最后对工作进行了总结和展望。 关键词:分诊管理系统;功能建模;java 全套项目源码+详尽文档,一站式解决您的学习与项目需求。 适用人群: 计算机、通信、人工智能、自动化等专业的学生、老师及从业者。 使用场景及目标: 无论是毕设、期末大作业还是课程设计,一键下载,轻松部署,助您轻松完成项目。 项目代码经过调试测试,确保直接运行,节省您的时间和精力。 其他说明: 项目整体具有较高的学习借鉴价值,基础能力强的可以在此基础上修改调整,以实现不同的功能。