我是图像处理和python编码的新手。 我在图像中检测到了许多特征,并将它们各自的像素位置放在列表格式中。
My_list = [(x1,y1),(x2,y2),......,(xn,yn)]
我想使用DBSCAN算法从以下几点形成集群。 目前使用sklearn.cluster导入用于python的DBSCAN函数的构建。 如果点的当前格式不兼容,想知道哪个是?
目前使用当前格式的错误:
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.**
答案 0 :(得分:0)
您的数据是list
tuple
。在这种结构中没有任何东西阻止你做那些疯狂的事情,比如在那里有不同的长度。另外,这是一种非常缓慢且内存效率低的数据保存方式,因为所有内容都被装箱为Python对象。
只需调用data = numpy.array(data)
即可将数据转换为高效的多维数字数组。然后,此数组将具有shape
。