Mahout – Clustering (聚类篇)

机器学习实战11-基于K-means算法的文本聚类分析,生成文本聚类后的文件 大家好,我是微学AI,今天给大家介绍一下自然语言处理实战项目13-基于K-means算法的文本聚类分析,生成文本聚类后的文件。文本聚类分析是NLP领域的一个核心任务,通过将相似的文本样本分组,可以帮助我们发现隐藏在文本数据中的模式和结构。 阅读详情

什么是Mahout?

” Apache Mahout™ project’s goal is to build a scalable machine learning library ”

我来拓展一下:
(1) Mahout 是Apache旗下的开源项目,集成了大量的机器学习算法。
(2) 大部分算法,可以运行在Hadoop上,具有很好的拓展性,使得大数据上的机器学习成为可能。

本篇主要探讨 Mahout 0.9 中的聚类(Clustering)工具的用法。

一、数据准备

Mahout聚类算法的输入为List<Vector>,即需要将每个待聚类的文档,表示为向量形式。

在本文中,我们选择经典的 Reuters21578 文本语料。尝试对新闻内容进行文本聚类。

1、下载数据

2、解压缩数据

解压缩之后,reuters-sgm下,包含了若干*.sgm文件,每个文件中又包含了若干下属结构化文档:

在下文中,我们主要使用<TITLE>和<BODY>中的文本。即标题+正文。

3、抽取

Mahout中内置了对上述Reuters预料的抽取程序,我们可以直接使用。

如上所述,抽取好的结果在./reuters-out文件夹下面,每篇<REUTERS>文档,变成了一个独立的文件。

一共有21578个txt,即数据集中含有21578篇文档:-)

说下命名规则吧,例如:文件名:./reuters-out/reut2-006.sgm-246.txt,表示来自于./reuters-sgm/reut2-006.sgm中的第246篇文档,下标从0开始。

4、转换成SequenceFile

对于传统的文本聚类算法而言,下一步应该是:将文本转化为词的向量空间表示。

然而,不要太着急哦。

由于Mahout运行在Hadoop上,HDFS是为大文件设计的。如果我们把上述21578个txt都拷贝上去,这样是非常不合适的

设想下:假设对1000万篇新闻进行聚类,难道要拷贝1000w个文件么?这会把name node搞挂的。

因此,Mahout采用SequenceFile作为其基本的数据交换格式。

内置的seqdirectory命令(这个命令设计的不合理,应该叫directoryseq才对),可以完成 文本目录->SequenceFile的转换过程。

上述命令蕴含了2个大坑,在其他文档中均没有仔细说明:
(1) -xm sequential,表示在本地执行,而不是用MapReduce执行。如果是后者,我们势必要将这些小文件上传到HDFS上,那样的话,还要SequenceFile做甚……
(2) 然而seqdirectory在执行的时候,并不因为十本地模式,就在本地文件系统上寻找。而是根据-i -o的文件系统前缀来判断文件位置。也就是说,默认情况,依然十在HDFS上查找的……所以,这个file://的前缀是非常有必要的。

其他2个参数:

  • -c UTF8:编码。
  • -chunk 64:64MB一个Chunk,应该和HDFS的BLOCK保持一致或者倍数关系。

5、转换为向量表示

为了适应多种数据,聚类算法多使用向量空间作为输入数据。

由于我们先前已经得到了处理好的SequenceFile,从这一步开始,就可以在Hadoop上进行啦。

开始text->Vector的转换:

输入和输出不解释了。在Mahout中的向量类型可以称为sparse。

参数说明如下:

  • -ow( 或 –overwrite):即使输出目录存在,依然覆盖。
  • –weight(或 -wt) tfidf:权重公式,大家都懂的。其他可选的有tf (当LDA时建议使用)。
  • –maxDFPercent(或 -x) 85:过滤高频词,当DF大于85%时,将不在作为词特征输出到向量中。
  • –namedVector (或-nv):向量会输出附加信息。

其他可能有用的选项:

  • –analyzerName(或-a):指定其他分词器。
  • –minDF:最小DF阈值。
  • –minSupport:最小的支持度阈值,默认为2。
  • –maxNGramSize(或-ng):是否创建ngram,默认为1。建议一般设定到2就够了。
  • –minLLR(或 -ml):The minimum Log Likelihood Ratio。默认为1.0。当设定了-ng > 1后,建议设置为较大的值,只过滤有意义的N-Gram。
  • –logNormalize(或 -lnorm):是否对输出向量做Log变换。
  • –norm(或 -n):是否对输出向量做p-norm变换,默认不变换。

看一下产出:

说明各个文件的用途:

  • dictionary.file-0:词文本 -> 词id(int)的映射。词转化为id,这是常见做法。
  • frequency.file:词id -> 文档集词频(cf)。
  • wordcount(目录): 词文本 -> 文档集词频(cf),这个应该是各种过滤处理之前的信息。
  • df-count(目录): 词id -> 文档频率(df)。
  • tf-vectors、tfidf-vectors (均为目录):词向量,每篇文档一行,格式为{词id:特征值},其中特征值为tf或tfidf。有用采用了内置类型VectorWritable,需要用命令”mahout vectordump -i <path>”查看。
  • tokenized-documents:分词后的文档。

二、KMeans

1、运行K-Means

参数说明如下:

  • -i:输入为上面产出的tfidf向量。
  • -o:每一轮迭代的结果将输出在这里。
  • -k:几个簇。
  • -c:这是一个神奇的变量。若不设定k,则用这个目录里面的点,作为聚类中心点。否则,随机选择k个点,作为中心点。
  • -dm:距离公式,文本类型推荐用cosine距离。
  • -x :最大迭代次数。
  • –clustering:在mapreduce模式运行。
  • –convergenceDelta:迭代收敛阈值,默认0.5,对于Cosine来说略大。

输出1,初始随机选择的中心点:

输出2,聚类过程、结果:

其中,clusters-k(-final)为每次迭代后,簇的20个中心点的信息。

而clusterdPoints,存储了 簇id -> 文档id 的映射。

2、查看簇结果

首先,用clusterdump,来查看k(20)个簇的信息。

要说明的是,clusterdump似乎只能在本地执行……所以先把数据下载到本地吧。

参数说明:

  • -i :我们只看最终迭代生成的簇结果。
  • -d :使用 词 -> 词id 映射,使得我们输出结果中,可以直接显示每个簇,权重最高的词文本,而不是词id。
  • -dt:上面映射类型,由于我们是seqdictionary生成的,so。。
  • -o:最终产出目录
  • -n:每个簇,只输出20个权重最高的词。

看看dump结果吧:

一共有20行,表示20个簇。每行形如:

其中前面的12722是簇的ID,n=1305即簇中有这么多个文档。c向量是簇中心点向量,格式为 词文本:权重(点坐标),r是簇的半径向量,格式为 词文本:半径。

下面的Top Terms是簇中选取出来的特征词。

3、查看聚类结果

其实,聚类结果中,更重要的是,文档被聚到了哪个类。

遗憾的是,在很多资料中,都没有说明这一点。前文我们已经提到了,簇id -> 文档id的结果,保存在了clusteredPoints下面。这也是mahout内置类型存储的。我们可以用seqdumper命令查看。

其中,-d和-dt的原因同clusterdump。

如果不指定-o,默认输出到屏幕,输出结果为形如:

其实,这个输出是一个SequenceFile,大家自己写程序也可以读出来的。

Key是ClusterID,上面clusterdump的时候,已经说了。

Value是文档的聚类结果:wt是文档属于簇的概率,对于kmeans总是1.0,/reut2-000.sgm-0.txt就是文档标志啦,前面seqdirectionary的-nv起作用了,再后面的就是这个点的各个词id和权重了。

三、Fuzzy-KMeans

KMeans是一种简单有效的聚类方法,但存在一些缺点。

例如:一个点只能属于一个簇,这种叫做硬聚类。而很多情况下,软聚类才是科学的。例如:《哈利波》属于小说,也属于电影。Fuzzy-Kmeans 通过引入“隶属度”的方式,实现了软聚类。

1、算法简介

详细的介绍转载自:http://home.deib.polimi.it/matteucc/Clustering/tutorial_html/cmeans.html

Clustering - Fuzzy C-means

2、工具用法

执行Fuzzy-KMeans

新增算法的柔软参数m,若m接近于1则接近于KMeans;随着m增加,会有越来越多的聚簇重叠(越多的点同时属于多个聚簇)。

3、查看隶属度

如上文所述,在Fuzzy-KMeans中,点以一定的 “概率” 隶属于聚簇。

我们可以用seqdumper查看隶属度:

其中的 w: xxx.xxx表示了 隶属度,应当是 0~1之间的数。

四、Canopy

KMeans算法还有一个缺陷: k需要预先给定,在很多场景下,聚类形状都是预先无法知道的,k更无从谈起。因此,往往先用别的算法进行粗略聚类,同时确定初始值,然后再用KMeans算法。

1、算法简介

Canopy Clustering 算法提出于2000年。优点是计算速度快,缺点是结果准确性较低。

尽管如此,其结果依然可以大致描述 聚类中心的位置。因此,常用来与KMeans算法配合使用。

(1) 将数据集向量化得到一个list后放入内存,选择两个距离阈值:T1和T2,其中T1 > T2,对应上图,实线圈为T1,虚线圈为T2,T1和T2的值可以用交叉校验来确定;
(2) 从list中任取一点P,用低计算成本方法快速计算点P与所有Canopy之间的距离(如果当前不存在Canopy,则把点P作为一个Canopy),如果点P与某个Canopy距离在T1以内,则将点P加入到这个Canopy;
(3) 如果点P曾经与某个Canopy的距离在T2以内,则需要把点P从list中删除,这一步是认为点P此时与这个Canopy已经够近了,因此它不可以再做其它Canopy的中心了;
(4) 重复步骤2、3,直到list为空结束。

我再来简单概括一下:阈值T1 > T2。到簇中心点的距离 < T2的点,必须属于本聚簇(硬)。T2 < 到簇中心点距离 < T1的点,可以属于多个聚簇(软)。在后续计算可以被合并。

2、聚类用法

执行Canopy聚类

如上所述,在距离的计算方面,我们选择了欧式距离。阈值T1=150, t2=75。

输出结果,也可以用ClusterDump查看。

这是一个粗略、大致的结果。在实际应用中,经常被用来作为K-Means的初始聚簇中心,来代替随机选择的K个中心点。这一做法有2个优点:
(1) 无需决定K,因为我们的预设往往是不准的。
(2) 使用Canopy的聚类结果,是一个大致准确的中心点。而随机选择很可能陷入局部最优。

在执行k-means时,若我们不指定k,则会使用-c的路径作为初始聚簇中心点,并跳过随机选择的过程。

3、参数选择

最后,我们讨论以下Canopy的参数T1和T2。

  • T1 > T2,具体值是文档及距离计算公式而定。
  • 若T1过大,会使得许多点属于多个Canopy,造成各个簇的中心点距离比较近,使得簇之间的区分不明显。
  • 若T2过大,强标记数据点的数量会增加,从而减少簇个数。
  • 若T2过小,会增加簇的个数,以及计算时间。

网上有人给出了这个做法,仅供参考:

  1. 对数据进行采样。
  2. 计算所有文档之间的平均距离(使用要在Canopy中用的距离公式)。
  3. T1 = 平均距离 * 2;T2 = 平均距离。

上述做法有一定道理,但我认为,以下更加合理:

  1. 对数据进行采样。
  2. 选择一个T2,T1 = 2 * T1。
  3. 进行聚类,并评测聚类效果,可使用k-fold交叉验证。
  4. 迭代选择下一个T2。
  5. 直到找到最优的T1 T2。

五、Spectral

1、谱聚类算法简介

谱聚类算法,参考了文章《Mahout Spectral聚类》。

谱聚类算法是一种较为现代的图聚类算法。与K-Means等传统聚类相比,它具有以下特点:

  1. 可以对非欧式距离空间的点进行聚类。传统K-Means将点视为向量,并计算距离。而谱聚类算法要求直接给出两样本间相似度的矩阵。使得一些不便于在欧式空间计算的多特征聚类问题,有了更好的解法。(例如,性别,年龄2个特征,在欧式空间中就没有显著意义)。
  2. 上面的这一更宽泛的约束条件,使得谱聚类对样本空间的形状无限制,并能收敛于全局最优解(无需使用)。

一种典型的谱聚类算法的大致流程是:

  1. 构建样本集的相似度矩阵W。
  2. 对相似度矩阵W进行稀疏化,形成新的相似度矩阵A。
  3. 构建相似度矩阵A的拉普拉斯矩阵L。
  4. 计算拉普拉斯矩阵L的前k个特征值与特征向量,构建特征向量空间。
  5. 将前k个特征向量(列向量)组合成N*k的矩阵,每一行看成k维空间的一个向量,利用K-means或其它经典聚类算法对该矩阵进行聚类。

其中,转化为拉普拉斯矩阵实际是一个降维的过程。正是这一特点,使得谱聚类能够处理超大规模的数据。

2、Mahout中的谱聚类

上文已经提到:

  • 传统K-Means等聚类中,需要将每个样本转化为一个向量。
  • 谱聚类中,则需要直接给一个矩阵,其中存储了任意两个样本之间的相似度。

例如:

2013081119022654

在实际应用中,相似矩阵(affinity matrix)是相当稀疏的。所以,Mahout采用了邻接矩阵的输入格式,即(i, j, affinity)表示第i个样本与第j个样本的相似度是affinity。

同时,还需要输入矩阵的维度。原因应该是很好理解的。

如上图中的数据,转化完毕后,就是:

Mahout中,将谱聚类与KMeans进行了整合,执行命令:

参数说明:

  • -i :输入的相似度矩阵,邻接矩阵。
  • -k:目标聚成2个簇。
  • -o:聚簇中间结果。
  • -d:相似度矩阵维度为6,也即样本共6个。
  • -x:100,最多迭代100次。
  • -cd:收敛阈值,默认0.5

其他可选参数:

  • -ssvd:使用svd矩阵分解降维。
  • -q:svd相关。

输出的目录结构,与K-Means等相似:

说明一下:

  • sc-spectral/clusters-0:初始聚簇。
  • sc-spectral/kmeans_out/clusteredPoints:最终结果,样本->聚簇映射。
  • sc-spectral/kmeans_out/clusters-1-final:最终聚簇的信息。

先看一下聚簇映射:

如上所示,这个顺序,是按照输入样本顺序来的。Key 1表示属于第2个簇,0表示第1个簇。distance是点与簇的相似距离。

然后来看一下簇中心:

输出结果:

于 K-Means一样,VL-XX是簇名称,n代表簇中含有几个元素。c是簇中心,r是簇半径。

然而奇怪的是,我们可以发现,上面的n都是错的,而下面簇中点的打印是对的不知道是什么Bug…

六、LDA

LDA是一种主题模型,它是一种考虑了词贡献的,较为高级的“聚类”算法,主要功能为:

  1. 给定主题数k,输出文档属于每个主题的概率(越大表示越贴近该主题)。
  2. 输出每个主题中,权重最大的几个词。相当于传统聚类之后的Tag。

关于算法、原理方面,本文就不做过多的介绍了,感兴趣的可以查看相关论文。

考虑到LDA的特性,提取特征的时候,我们需要使用tf而非tfidf:

Mahout实现的LDA有个大坑:tf的vector,词必须是Ingeter类型,即要我们把word转换成wordid。

生成的有2个子目录,我们只用下面这个matrix:

LDA训练:

上述参数,说明一下:

  • -k 主题数20
  • -dt:输出的?
  • -o:输出的?
  • -x:迭代100次,其实对于LDA,1000~2000次是比较合理的。
  • -nt:词的数量,即dictionary.file-0的大小。

PS:Mahout这个LDA,执行效率真心不高,也可能是我的数据太小,机器太少。

文档->主题的概率

输出共21578行,代表了文档集合中的所有文档。

  • Key是文档id,与文件的对应关系可以在/user/coder4/reuters-cvb-vectoers/docIndex中查看。
  • Value是文档属于Topic 0~19的概率。按照值Sort一下,就能知道文档属于哪个主题的概率最大。

主题->词的概率

  • 一共有20行有效输出,Key 0~19,代表了20个主题。
  • 每个Value中有41806个词的权重。表示了词属于当前主题的权重。

本来有个LDAPrintTopics,可以直接打印Topic对应的词的,但是年久失修,已经不能用在新版的cvb的LDA上了。大家可以写程序对上免每个Topic中词的权重进行排序,从而获得每个主题的代表词

SAP Event Mesh 简介 Get Started with Messaging for Decoupled Communication Step 1: What is the SAP Event Mesh service? SAP Event Mesh 是一种完全托管的服务,用于连接应用程序、服务和系统,以便它们可以通过消息和事件相互交互。 它通过引入中央消息代理取代了传统的点对点通信。 虽然点对点通信适用于在有限数量的发送方和接收方之间共享数据,但可扩展性很快就会成为一个问题。 SAP Event Mesh 解决了这个问题,并确保 阅读详情

相关推荐

VSCode多文件C语言项目编译实战:从配置到运行

本文详细讲解了如何在VSCode中配置多文件C语言项目的编译环境。通过手把手教学,指导读者创建项目结构、编写代码,并重点深度配置task.json与launch.json文件,实现一键编译和调试所有C文件,解决常见的“undefined reference”等链接错误,提升开发效率。

g8f9d0s1a2的博客 1098

【大数据分析与挖掘技术】Mahout聚类算法

数据聚类,也称为聚类分析、分割分析或无监督分类,是一种创建数据对象集合的方法。本篇文章介绍聚类的基本概念,以及在Mahout中如何使用聚类算法对数据进行分析。

Morse_Chen的博客 2258

阿里云一键登录Java后端实战:5分钟搞定号码认证服务集成(附完整代码)

本文详细介绍了如何在Java后端项目中快速集成阿里云号码认证服务(PNVS),实现高效、安全的一键登录功能。文章从核心架构、安全机制解析入手,提供了完整的Maven依赖配置、服务端环境准备、核心业务逻辑实现(包括Token验证、用户处理、异常降级)以及生产环境下的性能优化、监控与部署方案,并附有可直接使用的完整代码示例。

p1q2r的博客 844

mahout 聚类大全

http://my.oschina.net/u/1047640/blog/263742mahout要求数据时空格分割的序列化文件,所以先把,逗号都换成空格,然后使用inputDriver这个工具类对文件处理把用户主目录下testdata文件下的空格分隔文件,处理一下mahout org.apache.mahout.clustering.conversion.InputDriver -i testda

左手coding,右手cooking 898

法兰克仿真软件FANUC CNC Guide v25.0 安装教程及中文设置

下载地址在文末。我们公司用新到一批FANUC 系统的设备,为方便使用就装了一个 FANUC 数控系统仿真软件FANUC CNC Guide v25.0 ,还是最新版不是市面上流传的老版本。模拟学习一下。

hakesashou的博客 1万+

决策变量乘积项的线性化

介绍了决策变量相乘情况下的线性化,并用案例进行线性化演示,其中针对连续变量相乘的情况介绍了McCormick包络的近似线性化方法

Linshaodan520的博客 1842

Mahout使用K-Means进行中文文本聚类

一、数据准备 版本说明 使用的Mahout版本为apache-mahout-distribution-0.10.1 使用的Hadoop版本为hadoop-2.3.0-cdh5.0.0 分词 使用爬虫对每个URL的标题、关键词、描述进行爬取,再用中文分词工具进行分词; (中文分词工具:http://lxw1234.com/archives/2015/07/422.htm) 最后,每个U...

qq_36864672的博客 833

模型可解释性分析:基于SHAP的深度探索

SHAP模型可解释性分析摘要 本文系统性地介绍了SHAP(SHapley Additive exPlanations)方法在机器学习模型可解释性分析中的应用。SHAP基于博弈论的Shapley值理论,为特征重要性评估提供了统一框架。文章详细阐述了四种核心算法:Kernel SHAP(模型无关方法)、Tree SHAP(针对树模型的高效算法)、Deep SHAP(适用于深度学习)和Linear SHAP(线性模型专用)。通过Python实现展示了从数据准备到SHAP分析的全流程,包括摘要图、依赖图等可视化技术

huanghm88的专栏 607

mysql聚类函数_Mahout – Clustering (聚类篇)

文档,变成了一个独立的文件。一共有21578个txt,即数据集中含有21578篇文档:-)说下命名规则吧,例如:文件名:./reuters-out/reut2-006.sgm-246.txt,表示来自于./reuters-sgm/reut2-006.sgm中的第246篇文档,下标从0开始。4、转换成SequenceFile对于传统的文本聚类算法而言,下一步应该是:将文本转化为词的向量空间表示。然而...

weixin_33600816的博客 571

关于 SAP Fiori Elements 开发项目里的本地 annotation.xml 文件

文件通过引用 SAP 提供的标准词汇表和本地 OData 服务的元数据,为 Fiori Elements 应用定义了一个基础的注解结构。开发者可以在此基础上添加具体的注解,以满足特定的业务需求和界面定制。文件用于定义本地注解,以补充或覆盖来自后端 OData 服务的元数据。元素内添加具体的注解,以定制 Fiori Elements 应用的界面和行为。的架构,用于在本地注解中定义实体、类型和注解。这使得在本地注解中可以引用该 OData 服务的实体和类型。等,用于控制界面元素的显示和行为。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 472

如何通过单步调试的方法,找到 SAP Gateway 到底把 Fiori 应用发送的 OData 请求,投递到哪一台 ABAP 后台服务器了?

这是一个 Count 请求,得到服务器响应的数据是 204,这个 204 会以数字的形式,显示在 Fiori Launchpad tile 上。那如果当前 Gateway 系统可以连接到多台 ABAP 后台服务器,比如下图所示,可以连接 SAP S/4HANA,ERP 或者 SAP CRM,我怎么知道 SAP UI5 应用上显示的数据,到底来自哪一台 ABAP 后台服务器呢?,就是上图 ABAP 调试器里断点停留的位置,即 SAP Frontend 服务器,通过 RFC 将 OData 请求投递给。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 640

Mahout0.9 – Clustering (聚类篇)

Mahout – Clustering (聚类篇) Leave a reply 什么是Mahout? ” Apache Mahout™ project’s goal is to build a scalable machine learning library ” 我来拓展一下: (1) Mahout 是Apache旗下的开源项目,集成了大量的机器学习算法。 (

专注大规模数据处理 3205

3、硬件工程师笔试面试学习汇总——器件篇目录(2025版本)

硬件工程师笔试面试学习

XU157303764的博客 7620

为 Mahout 增加聚类评估功能

聚类算法及聚类评估 Silhouette 简介 聚类算法简介 聚类(clustering)是属于无监督学习(Unsupervised learning)的一种,用来把一组数据划分为几类,每类中的数据尽可能的相似,而不同类之间尽可能的差异最大化。通过聚类,可以为样本选取提供参考,或进行根源分析,或作为其它算法的预处理步骤。 聚类算法中,最经典的要属于 Kmeans 算法,它的基本思

大数据技术杂谈 1159

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Mahout-kmeans命令行文本文件聚类

准备工作:将文本文件夹上传到HDFS目录:/huanglei/wenben     ; 文件有以下:(目录和文件内容自己随便定义) 具体步骤:     Mahout处理文件格式必须是sequencefile,而聚类需要vector类型所以需要提前将文本文件转换,kmeans命令输入需要输入簇目录,所以要canopy生成输入簇(加 –k命令后应该不需要输入簇目录,但我这里提示必须输

u012690340的专栏 802

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

技术、强制力与权力:从工业革命到数字时代的三位一体

技术革新往往与特定的社会控制形式紧密相连,其核心逻辑在于通过突破生产瓶颈来重塑劳动组织方式。从工业革命的水力纺纱机、轧棉机到数字时代的算法与大数据,技术原理的演进始终服务于效率提升与规模化扩张。这些技术的价值不仅体现在生产力飞跃上,更在于它们作为“行为塑造引擎”和“注意力提取”工具,深刻改变了社会运作模式。在应用场景上,历史上的工厂纪律与奴隶制,与今天的平台经济、零工经济形成了跨时代的呼应,都涉及对劳动过程的严密控制。本文通过剖析“技术-强制力-权力”这一三位一体结构,揭示了算法如何与人性互动,以及数字化时

weixin_30791095的博客 706

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

实战Mahout聚类算法Canopy+K-means

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33912445的博客 519

mahout将文本数据转化成向量形式

对于文本信息的向量化,Mahout 已经提供了工具类,它基于 Lucene 给出了对文本信息进行分析,然后创建文本向量。mahout提供下面两个命令来将文本转成向量形式(转化成向量后可以聚类):1.mahout seqdirectory:将文本文件转成SequenceFile文件,SequenceFile文件是一种二制制存储的key-value键值对,对应的源文件是org.apache.ma...

wujay 709

CiteSpace学习笔记(六)——网络可视化界面

①主要是节点信息的列表区域。用户可以按照Freq(频次)、Centrality(中心性)、Year(首次出现年份)以及节点的标签属性(Cited Reference)对显示的信息进行排序,具体方法为鼠标点击对应的行即可。若想隐藏某个节点,可以点击首列取消勾选。 ②主要包含了一些结果保存、显示编辑和计算的快捷功能。 依次为:保存分析的可视化文件,保存图形,网络重新计算和布局,网络布局和计算结束,...

weixin_37938228的博客 3万+

citespace:时间线聚类标签显示不完全时

(1)点击control panel 中的cluster labels调整长度(直接调到最大)(2)再点击K、LLR算法和时区聚类,重新聚类,聚类标签就显示完成。

m0_72086000的博客 9407

Mahout机器学习平台之聚类算法详细剖析(含实例分析)

第一部分: 学习Mahout必须要知道的资料查找技能: 学会查官方帮助文档:        解压用于安装文件(mahout-distribution-0.6.tar.gz),找到如下位置,我将该文件解压到win7的G盘mahout文件夹下,路径如下所示: G:\mahout\mahout-distribution-0.6\docs 学会查源代码的注释文档:        方案一:用ma

zhongwen7710的专栏 4864

[学习]探索推荐引擎内部的秘密,第 3 部分: 深入推荐引擎相关算法 - 聚类

赵 晨婷, 软件工程师, IBM 马 春娥, 软件工程师, IBM 简介: 智能推荐大都基于海量数据的计算和处理,然而我们发现在海量数据上高效的运行协同过滤算法以及其他推荐策略这样高复杂的算法是有很大的挑战的,在面对解决这个问题的过程中,大家提出了很多减少计算量的方法,而聚类无疑是其中最优的选择之一。 聚类 (Clustering) 是一个数据挖掘的经典问题,它的目的是将数据分为多个簇 (Cluster),在同一个簇中的对象之间有较高的相似度,而不同簇的对象差别较大。聚类被广泛的应用于数据处理和统计分析

wenlele的专栏 1482

聚类方法综述

引言 由聚类所生成的簇是一组数据对象的集合 ,这些在同一 个簇中的对象彼此相似,而与其他簇 中的对象相异。聚类分 析最大程度地实现类中对象相似度最大、类间对象相似度最 小 。 聚类算法大体可以划分为以下几类l2 “ :(1)基于划分 的方法 (partitioning m ethod)[ 。 ” ;(2)基于 层 次 的 方法 (hierarchical m ethod)C“

u014033218的专栏 1505

mahout之聚类算法——KMeans分析

 一,K-Means聚类算法原理 k-means 算法接受参数 k ;然后将事先输入的n个数据对象划分为 k个聚类以便使得所获得的聚类满足:同一聚类中的对象相似度较高;而不同聚类中的对象相似度较小。聚类相似度是利用各聚类中对象的均值所获得一个“中心对象”(引力中心)来进行计算的。   K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基...

200

Mahout Spectral聚类

坑爹的Mahout 0.5!把源代码翻了个遍,修改了若干个bug,重编译了三个核心包,终于跑通了谱聚类(Spectral Clustering),先把代码放上来。 以下约定: * $LOCAL表示本地数据存放目录 * $HADOOP_MAHOUT表示hadoop集群的mahout输出目录 * $MAHOUT_HOME表示本地mahout的安装目录 数据准备: 00.80

葱葱的城堡 5628
上一篇: Class Linearization in Scala
下一篇: Java 里把 InputStream 转换成 String 的几种方法
DViewer
博客等级 码龄16年 16粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值