- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 1428 点的 3D 坐标 DataFrame 中聚类点。
这些星团是相对平坦的平面,是细长的云 DataFrame .它们是非常明显的集群,所以我希望尝试无监督的集群(不放入预期的集群数量)KMeans 没有正确地将它们分开并且确实需要集群的数量:
Kmeans plot results
数据如下所示:
5 6 7
0 9207.495280 18922.083277 4932.864
1 5831.199280 3441.735280 5756.326
2 8985.735280 12511.719280 7099.844
3 8858.223280 28883.151280 5689.652
4 6801.399277 6468.759280 7142.524
... ... ... ...
1423 10332.927277 22041.855280 5136.252
1424 6874.971277 12937.563277 5467.216
1425 8952.471280 28849.887280 5710.522
1426 7900.611277 19128.255280 4803.122
1427 10234.635277 18734.631280 5631.286
[1428 rows x 3 columns]
我希望 DBSCAN 能够更好地处理这些数据。但是,当我尝试以下操作时(我尝试了 eps 和 min_samples 但没有成功):
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=10, min_samples = 50)
clusters = dbscan.fit_predict(X)
print('Clusters found', dbscan.labels_)
len(clusters)
我得到这个输出:
Clusters found [-1 -1 -1 ... -1 -1 -1]
1428
我一直对让它起作用感到困惑,尤其是因为 Kmeans 确实起作用了:
kmeans = sk_cluster.KMeans(init='k-means++', n_clusters=9, n_init=50)
kmeans.fit_predict(X)
centroids = kmeans.cluster_centers_
kmeans_labels = kmeans.labels_
error = kmeans.inertia_
print ("The total error of the clustering is: ", error)
print ('\nCluster labels')
The total error of the clustering is: 4994508618.792263
Cluster labels
[8 0 7 ... 3 8 1]
最佳答案
记住这个黄金法则:
在将数据提供给 ML/DL 算法之前,始终并始终对数据执行规范化。
原因是,您的列具有不同的范围,可能一列的范围为 [10000,20000],而另一列的范围为 [4000,5000],当您将这些坐标绘制在图形上时,它们将非常远,聚类/分类永远不会起作用,也许回归会起作用。缩放使每一列的范围达到相同的水平,但仍保持距离但具有不同的比例。就像在 google MAPS 中一样,当您放大时,比例会减小,而当您缩小时,比例会增加。
您可以自由选择归一化算法,sklearn 上几乎有 20-30 个可用。
编辑:
使用此代码:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaler.fit(X)
X_norm = scaler.transform(X)
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.05, min_samples = 3,leaf_size=30)
clusters = dbscan.fit_predict(X_norm)
np.unique(dbscan.labels_)
array([-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32,
33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47])
我发现 DBSCAN 是一种基于密度的方法,我尝试了 sklearn 归一化器(来自 sklearn.preprocessing import normalize),它基本上转换为高斯分布,但它不起作用,并且在 DBSCAN 的情况下不应该,因为它需要每个特征具有相似的密度。
关于coordinates - 3d 坐标上的 DBSCAN 找不到集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65902125/
环顾四周,我发现可以将预先计算的距离矩阵传递给 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
我是一名优秀的程序员,十分优秀!