Как использовать алгоритм DBSCAN для списка точек в Python

Я новичок в обработке изображений и Python кодирования. Я обнаружил несколько функций в изображении, и их соответствующие местоположения в пикселях размещены в формате списка.

My_list = [(x1,y1),(x2,y2),......,(xn,yn)]

Я хотел бы использовать алгоритм DBSCAN для формирования кластеров из следующих пунктов. В настоящее время используется sklearn.cluster для импорта функции сборки в DBSCAN для python. Если текущий формат для точек не совместим, хотелось бы знать, что это?

Ошибка, с которой сталкивается текущий формат:

C:\Python\python.exe "F:/opencv_files/dbscan.py"  
**Traceback (most recent call last):**
  **File "**F:/opencv_files/dbscan.py**", line 83, in <module>  
    db = DBSCAN(eps=0.5, min_samples=5).fit(X) # metric=X)**  
  **File "**C:\Python\lib\site-packages\sklearn\cluster\dbscan_.py**", line 282, in fit  
    X = check_array(X, accept_sparse='csr')  
  File "**C:\Python\lib\site-packages\sklearn\utils\validation.py**", line 441, in check_array  
    "if it contains a single sample.".format(array))  
ValueError: Expected 2D array, got 1D array instead:  
array=[].  
Reshape your data either using array.reshape(-1, 1) if your data has a single feature or array.reshape(1, -1) if it contains a single sample.**

1 ответ

Решение

Ваши данные list из tuple, В этой структуре нет ничего, что мешало бы вам делать с этим сумасшедшие вещи, например, иметь разную длину. Кроме того, это очень медленный и неэффективный способ хранения данных, потому что все упаковано как объект Python.

Просто позвони data = numpy.array(data) преобразовать ваши данные в эффективный многомерный числовой массив. Этот массив будет иметь shape,

Другие вопросы по тегам