gpt4 book ai didi

Python 异常检测 (Pyod) 不收敛

转载 作者:太空宇宙 更新时间:2023-11-03 20:56:07 27 4
gpt4 key购买 nike

我正在尝试 PYOD使用 CBLOF 进行异常检测。我无法使用此算法来标记异常。我发现当我运行 CBLOF 算法时它会抛出以下错误:

ValueError:缓冲区数据类型不匹配,预期为“INT”,但得到“long long”

在“sklearn.cluster._k_means._assign_labels_csr”中忽略异常ValueError:缓冲区数据类型不匹配,预期为“INT”,但得到“long long”

结果是:

ValueError:无法形成有效的簇分离。请更改n_clusters或更改聚类方法

看来 CBLOF 算法依赖于 sklearn.cluster,并且从 pyod 传递到 skelearn 的预期数据类型不是预期的。

下面是我为 CBLOF 使用不同参数准备的四种场景。请注意,无论更改这些参数,都会引发相同的错误。

我还尝试使用肘部方法更改簇大小,以找到 Kmeans 场景中的最佳 K。

示例代码:

from pyod.models.cblof import CBLOF
import pyod.utils as ut
from sklearn import cluster

#create some data
data = ut.data.generate_data()[0]

#scenario 1 - use default CBLOF parameters
model = CBLOF()
clusters = model.fit_predict(data)

#scenario 2 - use kmeans as a centroid estimator
n_clusters = 3
kmeans = cluster.KMeans(n_clusters)
model = CBLOF(n_clusters = n_clusters, clustering_estimator = kmeans)
clusters = model.fit_predict(data)

#test if scaling the data makes a difference
data_scaled = (data - data.min())/(data.max()-data.min())

#scenario 3 - no clusters specified, use defaults, scaled data
model = CBLOF()
clusters = model.fit_predict(data_scaled)

#scenario 4 - use kmeans as a centroid estimator, scaled data
n_clusters
kmeans = cluster.KMeans(n_clusters)
model = CBLOF(n_clusters = n_clusters, clustering_estimator = kmeans)
clusters = model.fit_predict(data_scaled)

我使用的所有软件包都是最新的,并且我还尝试在输入数组中使用不同的数据类型。

为什么会抛出这些错误?

最佳答案

是否可以打开关于 https://github.com/yzhao062/pyod/issues 的问题报告直接这样我们就可以跟踪正在发生的事情?

可能需要一些调查:)

关于Python 异常检测 (Pyod) 不收敛,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56018935/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com