我有100万个5维点,我需要将其分组为k群集,其中k << 100万.在每个星团中,没有两个点应该相距太远(例如,它们可以是具有指定半径的边界球).这意味着可能必须有许多大小为1的集群.
但!我需要运行时间远低于n ^ 2.n log n左右应该没问题.我正在进行这种聚类的原因是为了避免计算所有n个点的距离矩阵(这需要n ^ 2次或几个小时),而我只想计算簇之间的距离.
我尝试了pycluster k-means算法,但很快意识到它太慢了.我也试过以下贪婪的方法:
每个维度将空间切成20块.(所以总共有20 ^ 5件).我会根据它们的质心将簇存储在这些网格盒中.
对于每个点,检索r(最大边界球半径)内的网格框.如果有足够的群集,请将其添加到该群集,否则创建新群集.
但是,这似乎给了我比我想要的更多的集群.我也实现了两次类似的方法,它们给出了非常不同的答案.
是否有任何标准的聚类方法比n ^ 2时间快?概率算法没问题.
algorithm cluster-analysis machine-learning data-mining k-means
我想使用一些算法来挖掘我的日志数据.
我找到了一个模式挖掘框架:http://www.philippe-fournier-viger.com/spmf/index.php?link = _algorithms.php
我尝试了几种算法,BIDE +算法表现最佳.
BIDE +算法用于从序列数据库中挖掘频繁闭合的序列模式.
有人可以解释关于"封闭"序列模式和开放模式的定义吗?
我是这个领域的新手以及术语所以如果我在某个地方出错,请随时提出建议.我有两个这样的数据集:
A B C 0 E
A 0 C 0 0
A 0 C D E
A 0 C 0 E
Run Code Online (Sandbox Code Playgroud)
我解释这个的方式是在某个时间点,(A,B,C,E)一起发生,(A,C),(A,C,D,E)等也是如此.
5A 1B 5C 0 2E
4A 0 5C 0 0
2A 0 1C 4D 4E
3A 0 4C 0 3E
Run Code Online (Sandbox Code Playgroud)
我解释这个的方式是在某个时间点,发生5次A,1次发生B,5次发生C和2次发生E,等等.
我试图找到哪些项目一起发生,如果可能的话,也找出原因和结果.为此,我不了解如何使用这两个数据集(或者如果一个就足够了).最好有一个很好的教程,但我的主要问题是使用哪个数据集以及如何进行(i)构建频繁项集和(ii)在它们之间建立关联规则.
有人能指点我一个实用的教程/例子(最好用Python)或至少解释一下如何解决这个问题?
我试图找到一个实际上可以找到R文本挖掘包中最常用的两个和三个单词短语的代码(也许还有另一个我不知道的包).我一直在尝试使用标记器,但似乎没有运气.
如果您过去曾处理过类似情况,您是否可以发布经过测试且实际有效的代码?非常感谢!
我有一个大的(> 1000)有向无环图集,每个图都有一个大的(> 1000)顶点集.顶点被标记,标签的基数很小(<30)
我想识别(我的)在整个图表集中频繁出现的子结构.
我们要查找的输出是给定图形中的子结构列表及其(出现次数).
我试图调查事物并且(因为它似乎总是发生在我身上)问题是NP完全的.据我所知,gSpan是解决这个问题最常用的算法.但是,如上所述,我不是在图中寻找任何常见的子结构,而只是那些遵守某些规则的子结构.人们应该能够如此使用它以减少搜索空间.
有关如何解决此问题的任何见解?
更新:我应该补充一点,上述规则可以在一定程度上递归.例如,"标记为A且具有至少两个标记为B的子节点的顶点,每个子节点具有至少一个标记为A的子节点".最大递归深度介于1到10之间.
更新II:指出我们不是在搜索已知或首选的子结构,而是在挖掘它们.没有勺针.
是否有一个开源Java库/算法用于查找特定文本是否是一个问题?
我正在研究一个问题回答系统,需要分析用户输入的文本是否是一个问题.
我认为问题可以通过使用开源NLP库来解决,但它显然比简单的词性标记更复杂.因此,如果有人可以通过使用现有的开源NLP库来告诉算法,那也会很好.
如果您知道使用数据挖掘来解决此问题的库/工具包,请告诉我.虽然很难获得足够的数据用于培训目的,但我将能够使用堆栈交换数据进行培训.
Matlab,R和Python功能强大,但对于我想做的一些数据挖掘工作来说,要么成本高,要么慢.我正在考虑将Javascript用于 速度,良好的可视化库,以及能够将浏览器用作接口.
我面临的第一个问题是科学编程的明显问题,如何对数据文件进行I/O操作?第二个是客户端还是服务器端?最后一个问题,我可以制作一些真正可移植的东西,即把它全部放在USB上并从中运行吗?
我花了几个星期寻找答案.Server2go似乎解决了客户端/服务器需求,我认为这意味着我可以从客户端的程序中获取数据.Server2go还允许从USB运行.我使用的数据文件通常是XML,似乎有几个javascript的javascript转换器.
然而,在看完之后,我不确定我的方法是否有意义.所以在我进一步提交之前,有关Javascript作为科学数据处理的便携式工具的任何建议/想法/指导吗?
我需要将一个简单的单变量数据集聚集到预设数量的集群中.从技术上讲,它更接近于分类或排序数据,因为它只有1D,但我的老板称它为聚类,所以我将坚持使用该名称.我所使用的系统使用的当前方法是K-means,但这看起来有点过分.
有没有更好的方法来执行此任务?
其他一些帖子的答案提到了KDE(核密度估计),但这是一种密度估算方法,它会如何工作?
我看到KDE如何返回密度,但是如何告诉它将数据拆分成箱?
我如何拥有与数据无关的固定数量的箱(这是我的要求之一)?
更具体地说,如何使用scikit学习来解决这个问题?
我的输入文件如下:
str ID sls
1 10
2 11
3 9
4 23
5 21
6 11
7 45
8 20
9 11
10 12
Run Code Online (Sandbox Code Playgroud)
我想将sls编号分组成簇或箱,这样:
Cluster 1: [10 11 9 11 11 12]
Cluster 2: [23 21 20]
Cluster 3: [45]
Run Code Online (Sandbox Code Playgroud)
我的输出文件将如下所示:
str ID sls Cluster ID Cluster centroid
1 10 1 10.66
2 11 1 10.66
3 9 1 10.66
4 23 2 21.33
5 21 2 21.33
6 11 1 10.66
7 …Run Code Online (Sandbox Code Playgroud) cluster-analysis machine-learning data-mining kernel-density scikit-learn
我正在为我正在上大学课做一个项目.
我正在使用PHP构建一个简单的Web应用程序,根据一组字典将推文分类为"积极"(或快乐)和"消极"(或悲伤).我现在想到的算法是朴素贝叶斯分类器或决策树.
但是,我找不到任何帮助我进行严肃语言处理的PHP库.Python有NLTK(http://www.nltk.org).PHP有什么类似的吗?
我打算使用WEKA作为Web应用程序的后端(通过在PHP中从命令行调用Weka),但它看起来效率不高.
你知道我应该为这个项目使用什么吗?或者我应该切换到Python?
谢谢
正如维基百科所述
数据挖掘过程的总体目标是从数据集中提取信息并将其转换为可理解的结构以供进一步使用
这与大数据有什么关系?如果我说Hadoop以并行方式进行数据挖掘,这是否正确?
data-mining ×10
algorithm ×3
nlp ×2
apriori ×1
bigdata ×1
data-science ×1
graph ×1
graph-theory ×1
hadoop ×1
java ×1
javascript ×1
k-means ×1
nltk ×1
php ×1
python ×1
r ×1
scikit-learn ×1
sequential ×1
text-mining ×1
weka ×1