小编Ano*_*sse的帖子

scikit-learn DBSCAN内存使用情况

更新:最后,我选择用于聚类我的大型数据集的解决方案是Anony-Mousse在下面提出的解决方案.也就是说,使用ELKI的DBSCAN实现我的聚类而不是scikit-learn.它可以从命令行运行,并通过适当的索引,在几个小时内完成此任务.使用GUI和小样本数据集来计算您想要使用的选项,然后前往城镇.值得研究.Anywho,请继续阅读我原始问题的描述和一些有趣的讨论.

我有一个包含大约250万个样本的数据集,每个样本都有35个特征(浮点值),我正在尝试聚类.我一直在尝试使用scikit-learn的DBSCAN实现,使用曼哈顿距离度量和从数据中提取的一些小随机样本估计的epsilon值.到现在为止还挺好.(这里是摘录,供参考)

db = DBSCAN(eps=40, min_samples=10, metric='cityblock').fit(mydata)
Run Code Online (Sandbox Code Playgroud)

我现在的问题是我很容易耗尽内存.(我目前正在使用16 GB RAM的机器)

我的问题是,DBSCAN是否在运行时动态计算成对距离矩阵,那是什么在吞噬我的记忆?(250万^ 2)*8字节显然是愚蠢的大,我会理解.我应该不使用这种fit()方法吗?更一般地说,有没有办法绕过这个问题,或者我一般在这里咆哮错误的树?

如果答案结果明显,请道歉.我已经困惑了几天.谢谢!

附录:如果有人能更明确地解释我fit(X)fit_predict(X)我之间的区别,我也会感激 - 我担心我不太明白.

附录#2:可以肯定的是,我只是在一台拥有~550 GB RAM的机器上尝试了这个并且它仍然爆炸,所以我觉得DBSCAN可能会尝试制作成对距离矩阵或者我明显不想要的东西去做.我想现在最大的问题是如何阻止这种行为,或找到更适合我需要的其他方法.谢谢你在这里与我合作.

附录#3(!):我忘了附上追溯,就在这里,

Traceback (most recent call last):
  File "tDBSCAN.py", line 34, in <module>
    db = DBSCAN(eps=float(sys.argv[2]), min_samples=10, metric='cityblock').fit(mydata)
  File "/home/jtownsend/.local/lib/python2.6/site-packages/sklearn/base.py", line 329, in fit_predict
    self.fit(X)
  File "/home/jtownsend/.local/lib/python2.6/site-packages/sklearn/cluster/dbscan_.py", line 186, in fit
    **self.get_params())
  File "/home/jtownsend/.local/lib/python2.6/site-packages/sklearn/cluster/dbscan_.py", line 69, in dbscan
    D = pairwise_distances(X, metric=metric)
  File "/home/jtownsend/.local/lib/python2.6/site-packages/sklearn/metrics/pairwise.py", line 651, in pairwise_distances
    return func(X, Y, **kwds)
  File "/home/jtownsend/.local/lib/python2.6/site-packages/sklearn/metrics/pairwise.py", line …
Run Code Online (Sandbox Code Playgroud)

python cluster-analysis data-mining dbscan scikit-learn

20
推荐指数
3
解决办法
1万
查看次数

分布式系统中的故障转移有哪些算法?

我打算使用无共享架构多版本并发控制来创建分布式数据库系统.冗余将通过异步复制实现(只要系统中的数据保持一致,就可以在发生故障时丢失一些最近的更改).对于每个数据库条目,一个节点具有主副本(仅该节点具有对其的写访问权),此外,一个或多个节点具有该条目的辅助副本以用于可伸缩性和冗余目的(辅助副本是只读的) .更新条目的主副本时,它会加上时间戳并异步发送到具有辅助副本的节点,以便最终获得最新版本的条目.具有主副本的节点可以随时更改 - 如果另一个节点需要写入该条目,它将请求主副本的当前所有者为该节点提供该条目的主副本的所有权,

最近我一直在考虑当集群中的节点发生故障时该怎么做,以及用于故障转移的策略.这是一些问题.我希望你能知道至少其中一些的可用替代品.

  • 在分布式系统中进行故障转移有哪些算法?
  • 在分布式系统中有哪些算法可以达成共识?
  • 群集中的节点应如何确定节点已关闭?
  • 如何在发生故障时节点确定哪些数据库条目在故障节点上具有主副本,以便其他节点可以恢复这些条目?
  • 如何确定哪个节点具有某些条目的最新辅助副本?
  • 如何确定应将哪个节点的辅助副本提升为新的主副本?
  • 怎么处理它,如果那个虽然要关闭的节点突然回来,好像什么也没发生?
  • 如何避免裂脑情况,网络暂时分成两部分,双方都认为对方已经死亡?

database algorithm failover distributed cluster-computing

19
推荐指数
3
解决办法
4238
查看次数

最好的聚类算法?(简单解释)

想象一下以下问题:

  • 你有一个数据库,在一个名为"文章"的表中包含大约20,000个文本
  • 您希望使用聚类算法连接相关的文件,以便一起显示相关文章
  • 算法应该做平面聚类(不是分层)
  • 相关文章应插入表"相关"
  • 聚类算法应根据文本决定两篇或多篇文章是否相关
  • 我想用PHP编写代码,但伪代码或其他编程语言的例子也可以

我用函数检查()编写了第一个草稿,如果两个输入文章是相关的则给出"true",否则给出"false".其余的代码(从数据库中选择文章,选择要比较的文章,插入相关的文章)也是完整的.也许你也可以改善休息.但对我来说重要的要点是函数check().因此,如果您可以发布一些改进或完全不同的方法,那将是很棒的.

方法1

<?php
$zeit = time();
function check($str1, $str2){
    $minprozent = 60;
    similar_text($str1, $str2, $prozent);
    $prozent = sprintf("%01.2f", $prozent);
    if ($prozent > $minprozent) {
        return TRUE;
    }
    else {
        return FALSE;
    }
}
$sql1 = "SELECT id, text FROM articles ORDER BY RAND() LIMIT 0, 20";
$sql2 = mysql_query($sql1);
while ($sql3 = mysql_fetch_assoc($sql2)) {
    $rel1 = "SELECT id, text, MATCH (text) AGAINST ('".$sql3['text']."') AS score FROM articles WHERE MATCH (text) AGAINST ('".$sql3['text']."') AND …
Run Code Online (Sandbox Code Playgroud)

algorithm text cluster-analysis data-mining text-mining

19
推荐指数
2
解决办法
9942
查看次数

Node.js多服务器群集

我正在开发一个涉及服务器的Node.js项目(为了简单起见,我们将这个服务器想象成一个必须将消息从某些客户端转发到其他客户端的聊天服务器).我需要QoS原因,这个服务器总是可以访问的,所以我想使用集群来划分不同服务器(不同的物理机器)之间的平衡负载,并确保如果服务器出现故障,另一个服务器将准备好服务请求.

我的问题是:在Node.js中这种分布式方法是否可行?

我已经阅读过关于"集群"模块的内容,但是,根据我的理解,它似乎只能在同一台机器上的多处理器上进行扩展.

distributed-computing node.js multiserver

19
推荐指数
2
解决办法
1万
查看次数

weblogic集群如何工作?

我是weblogic的新手.

我已经阅读了http://download.oracle.com/docs/cd/E11035_01/wls100/cluster/overview.html并在互联网上搜索了这个主题,但仍然很难理解一些weblogic的集群概念.

任何人都可以在下面确认/纠正我的理解吗?

  • 群集包含一个或多个可驻留在一个或多个物理服务器上的逻辑服务器
  • 将j2ee应用程序部署到群集时,它将绑定到该群集中的一个服务器
  • 部署的应用程序的外部用户不知道群集
  • 该应用程序的日志文件位于其部署的服务器上
  • 如果托管应用程序的服务器出现故障,那可以,因为应用程序位于群集中,另一台服务器将接收工作?
  • 如果托管应用程序的服务器失败,登录会发生什么?

也许我把整个概念弄错了.有人能指出我正确的方向吗?

非常感谢.

weblogic cluster-computing java-ee

17
推荐指数
1
解决办法
2万
查看次数

在Riak中存储二进制数据的缺点?

在Riak中存储二进制数据有什么问题?

它是否会影响群集的可维护性和性能?

使用Riak而不是分布式文件系统之间的性能差异是什么?

database scalability nosql riak

17
推荐指数
2
解决办法
6319
查看次数

负载平衡(HAProxy或其他) - 粘性会话

我正在努力将我的应用程序扩展到多个服务器,并且一个要求是客户端始终与同一服务器通信(过多的实时数据用于允许服务器之间的有效弹跳).

我目前的设置是一个小型服务器集群(使用Linode).我有一个使用"平衡源"运行HAProxy的前端节点,因此IP始终指向同一节点.

我注意到"平衡源"不是一个非常均匀的分布.使用我当前的测试设置(2个后端服务器),当使用80-100个源IP的样本大小时,一个服务器通常具有3-4倍的连接.

有没有办法实现更均衡的分配?显然,粘性会议禁止"完美"平衡,但是40/60分割将优于25/75分割.

load-balancing cluster-computing haproxy

17
推荐指数
2
解决办法
3万
查看次数

iPhone MKMapView注释聚类

我有很多针脚要放在我的地图上,所以我认为将这些注释聚类是个好主意.我不确定如何在iPhone上实现这一点,我能够使用谷歌地图和一些JavaScript示例来解决问题.但iPhone使用其mkmapview,我不知道如何在那里聚集注释.

您知道并且很好的任何想法或框架?谢谢.

iphone annotations mkmapview markerclusterer

17
推荐指数
4
解决办法
2万
查看次数

16
推荐指数
1
解决办法
1813
查看次数

你如何在python中将这三个区域分组/聚类在数组中?

所以你有一个阵列

1
2
3
60
70
80
100
220
230
250
Run Code Online (Sandbox Code Playgroud)

为了更好地理解:

为了更好地理解

你如何在python(v2.6)中对数组中的三个区域进行分组/聚类,因此在这种情况下你得到三个数组

[1 2 3] [60 70 80 100] [220 230 250]

背景:

y轴是频率,x轴是数字.这些数字是由它们的频率表示的十个最高幅度.我想从它们创建三个离散数字用于模式识别.可能会有更多的点,但所有这些点都按照相对较大的频率差异进行分组,如本例所示,在大约50和大约0之间以及大约100和大约220之间.请注意,什么是大的,什么是小变化但是与群组/群集的元素之间的差异相比,群集之间的差异仍然很大.

python pattern-recognition cluster-analysis data-mining

16
推荐指数
4
解决办法
8140
查看次数