Я экспериментирую с PYOD , используя CBLOF для обнаружения аномалий.Я не смог пометить аномалии с помощью этого алгоритма.Я обнаружил, что когда я запускаю алгоритм CBLOF, он выдает следующую ошибку:
ValueError: Несоответствие буфера dtype, ожидаемое значение INT, но полученное значение long long
Исключение, игнорируемое в: 'sklearn.cluster.Пожалуйста, измените n_clusters или измените метод кластеризации
Похоже, что алгоритм CBLOF зависит от sklearn.cluster и ожидаемый тип данных, который передается в skelearn от pyod, не тот, который ожидается.
Ниже приведены четыре сценария, которые я подготовил, используя разные параметры для CBLOF.Обратите внимание, что одна и та же ошибка выдается независимо от изменения этих параметров.
Я также пытался изменить размер кластера, используя метод локтя, чтобы найти оптимальное значение K в сценарии Kmeans.
Пример кода:
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)
Все пакеты IЯ использую последние, и я также попытался использовать различные типы данных в моем входном массиве.
Почему выбрасываются эти ошибки?