基于密度的聚类验证(DBCV)永远不会停止运行

问题描述 投票:0回答:3

我已经在森林砍伐的矿山聚类斑块数据集上完成了 DBSCAN 的运行,我正在尝试根据 本文验证结果。

我已经从这个 Github 安装了软件包,但是当我尝试运行代码时它永远不会完成。我运行了 5 天多,它从未停止运行或抛出错误。运行 DBSCAN 只花了 15 分钟,所以我有点困惑为什么验证要花这么长时间。我的 DBCV 代码或输入有问题吗?

由于它永远不会完成运行代码,我不知道我可以报告什么错误。我不确定我是否正确地将数据输入到代码中,但我尝试尽可能准确地复制 GitHub 上的示例。我不知道如何共享我的 .csv 文件以显示我的文件是什么样的。它有 16 个维度,我在运行 DBSCAN 之前使用 MinMaxScaler 对其进行了缩减。我之前已经完成了 DBSCAN 聚类,并且只是尝试让 DBCV 工作。

import pandas as pd
import numpy as np
from pylab import rcParams
import matplotlib.pyplot as plot
import sklearn
from sklearn.cluster import DBSCAN
from sklearn.preprocessing import MinMaxScaler
from scipy.spatial import euclidean
from DBCV import DBCV

f = pd.read_csv('csv_file_I_Don't_know_how_to_share')
x = f.loc[:, [1-15]].values

norm_data = MinMaxScaler()
data = norm_data.fit_transform(x)

dbscan = DBSCAN(eps=.15, min_samples = 100)
clusters = dbscan.fit_predict(data)

DBCV_score = DBCV(data, clusters, dist_function=euclidean)

print ('DBCV Score: ' + DBCV_score)

我期望打印分数,但代码继续运行并且不会停止。任何帮助都会很棒!

cluster-analysis dbscan
3个回答
0
投票

你跑:

from scipy.spatial import euclidean

但是 GitHub 上的代码定义了使用导入的欧几里得的方法,如下所示:

from scipy.spatial.distance import euclidean

尝试改变这个,它可能会起作用。


0
投票

除了@Dumbfool的答案之外,似乎还有一个错误:

print('DBCV Score: ' + DBCV_score)

尝试将

+
更改为
,

我希望这有帮助。


0
投票

问题是,在以上都认为正确之后,使用 DBSCAN。 DBCV 与 HDBSCAN 一起使用,如下所示:要求

© www.soinside.com 2019 - 2024. All rights reserved.