- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
是否有人可以向我解释 dbscan 算法如何与 R*-Tree 一起工作?我理解 dbscan 的工作,似乎我理解 R*-Tree 的工作原理,但我无法将它们连接在一起。
最初,我有数据 - 具有 8 个特征的特征向量,我不明白我必须如何处理它们以构建 R*-Tree。如果有人列出我必须通过的主要步骤,我将不胜感激。
如果我的问题很明显,我深表歉意,但这会给我带来困难。
提前致谢!
最佳答案
R*-Tree 通过边界框索引任意几何对象。在您的情况下,由于您只有点,因此边界框的最小值和最大值相同。每个 R*-Tree 都有一个类似 rtree.add_element(object, boundingbox)
的函数. object
将是数据点的索引和 boundingbox
如上所述。
连接点是regionQuery DBSCAN 的一部分。数据点 p 的 regionQuery(p) 返回所有 euclideanDistance(p,q) ≤ ε(参数 ε 的值由用户提供)的数据点 q。
天真地,您可以计算所有数据点到 p 的距离,对于一个数据点需要 O(n) 时间,因此查询所有 n 个数据点需要 o(n²) 时间。或者,您可以预先计算一个矩阵,该矩阵保存所有数据点彼此之间的欧几里德距离。然后这需要 O(n²) 的空间,而一个点的 regionQuery 只需要在该矩阵中查找。
R*-Tree 使您能够在 O(log n) 时间内查找坐标范围内的数据点。但是,R*-Tree 只允许查询以下形式
“所有点,其中:[0.3;0.5] 中的坐标 1 和 [0.8;1.0] 中的坐标 2”
并不是
“所有点 q 其中:euclideanDistance(p,q) ≤ ε”
因此,您在 R*-Tree 中查询每个坐标是 p±ε 的相应坐标的点,然后计算所有匹配点到查询点 p 的欧几里德距离。然而,不同之处在于,与计算 p 到所有点的欧几里德距离相比,这些要检查的点要少得多。因此,一个 regionQuery 的时间复杂度现在是 O(log n * m),其中 m 是 R* 树返回的点数。如果您选择 ε 小,您将从您的 R* 树中得到很少的匹配点,并且 m 会很小。因此,一个 regionQuery 的时间复杂度接近 O(log n),因此每个数据点的一个 regionQuery 的时间复杂度接近 O(n * log n)。在另一种极端情况下,如果您选择的 ε 大到可以包含您的大部分数据点,则 m 将接近 n,因此,每个数据点的一个 regionQuery 所需的时间接近 O(n * log n * n) = O (n² * log n ) 再次,因此与天真的方法相比,您一无所获。
因此,选择足够小的 ε 使每个点在 ε 的欧几里德距离内只有少数几个其他点,这一点至关重要。
关于cluster-analysis - 带有 R*-Tree 的 DBSCAN - 它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35911767/
环顾四周,我发现可以将预先计算的距离矩阵传递给 SKLearn DBSCAN .不幸的是,我不知道如何通过它进行计算。 假设我有一个包含 100 个元素的一维数组,其中只有节点的名称。然后我有一个 2
有类似的questions和图书馆,如 ELI5和 LIME .但是我找不到解决我的问题的方法。我有一组文档,我正在尝试使用 scikit-learn 的 DBSCAN 对它们进行聚类。 .首先,我正
是否要求DBSCAN及其索引具有相同的距离函数?如果不是,什么情况下需要使用不同的距离函数? Scala 代码如何创建 DBSCAN 和索引: import de.lmu.ifi.dbs.elki.a
我在scikit-learn中的DBSCAN算法上测试了我的图像集 python 模块。相似度计算还有其他选择: # Compute similarities D = distance.squaref
我正在研究学校关于异常值检测的项目。我想我会创建自己的小数据集并使用 DBSCAN 来处理它。我想我会尝试创建一个关于网站上广告点击是否作弊的数据集。以下是我要创建的数据集的详细信息。 数据集名称:作
我使用方法 dbscan::dbscan 来按位置和密度对数据进行聚类。 我的数据如下所示: str(data) 'data.frame': 4872 obs. of 3 variables: $
使用 DBSCAN, (DBSCAN(eps=epsilon, min_samples=10, algorithm='ball_tree', metric='haversine') 我已经聚集了一个纬
我正在尝试在轨迹数据集上运行 DBSCAN (sklearn.cluster)。数据集是数组(点)的数组(轨迹)的数组 数据集_测试= array([[[46.37017059, 30.954216
我正在尝试在这里实现 DBSCAN 的代码:http://en.wikipedia.org/wiki/DBSCAN 我感到困惑的部分是 expandCluster(P, NeighborPts, C,
我有以下内容: 一个数以千计的数据集 一种计算相似度的方法,但数据点本身我无法在欧几里德空间中绘制它们 我知道 DBSCAN 应该支持自定义距离度量,但我不知道如何使用它。 假设我有一个函数 def
根据我对 DBSCAN 的理解,您可以指定 epsilon,例如 100 米,并且 — 因为 DBSCAN 考虑了密度可达性 而不 direct density-reachability 寻找簇时——
我有一个包含纬度和经度对的数据框。 这是我的数据框的样子。 order_lat order_long 0 19.111841 72.910729 1 19.111342 72
有没有什么工具可以计算出 DBSCAN 算法的 minpts 和 eps 的最优值? 目前我使用sklearn库来应用DBSCAN算法 from sklearn.cluster import DBSC
我已经在 R 中实现了 DBSCAN 算法,并且我正在将集群分配与 fpc library 的 DBSCAN 实现相匹配。 .测试是在 fpc 库 dbscan 示例中给出的合成数据上完成的: n <
这个问题已经有答案了: how to do clustering when the shape of data is (x,y,z)? (1 个回答) 已关闭 4 年前。 sklearn 中是否允许通
我正在从事与聚类任务相关的任务。 DBSCAN 拟合程序产生奇怪的结果,我不明白我的错误在哪里。我简化了代码,只留下了重要的部分: clusters = pd.read_csv('cl.csv') d
我想使用聚类算法来找到大有向图的聚类,并且我也想从该图中消除噪声。因此,我正在考虑使用DBSCAN方法,因为我发现我们可以为算法提供一个距离函数来确定两个不同节点之间的距离/相似度。 我的问题是,如何
据说 DBSCAN 在边界点上不一致,取决于它首先将点分配给哪个簇。当 DBSCAN 想要将边界点分配给其中一个簇时,是否有一种变体会考虑每个簇中边界点接近的点数(eps)? 最佳答案 在这种情况下,
我正在尝试对包含超过 100 万个数据点的数据集进行聚类。一列包含文本,另一列包含与其对应的数值。我面临的问题是它被卡住并且永远不会完成。我尝试过处理大约 100,000 个较小的数据集,它运行得相当
我正在尝试将多个核心与sklearn的DBSCAN一起使用,但是当我更改 n_jobs = -1 时,运行时间似乎没有变化(按照文档的建议,使用所有处理器来运行并行作业)。我错过了什么? import
我是一名优秀的程序员,十分优秀!