gpt4 book ai didi

python - 使用python使用DBSCAN算法在给定x,y,z坐标时对3D点进行聚类

转载 作者:行者123 更新时间:2023-12-02 14:50:21 25 4
gpt4 key购买 nike

我正在尝试使用带有 python 的 DBSCAN 算法在一些给定坐标的帮助下对一些 3D 点进行聚类。

例如:- 给定的坐标将如下所示

  X      Y      Z

[-37.530 3.109 -16.452]
[40.247 5.483 -15.209]
[-31.920 12.584 -12.916]
[-32.760 14.072 -13.749]
[-37.100 1.953 -15.720]
[-32.143 12.990 -13.488]
[-41.077 4.651 -15.651]
[-34.219 13.611 -13.090]
[-33.117 15.875 -13.738] e.t.c

我是编程新手,正在寻找如何编写代码的示例脚本。有人可以提出建议或例子吗?非常感谢。

最佳答案

您可以使用 sklearn.cluster.DBSCAN .在你的情况下:

import numpy as np
import matplotlib.pyplot as plt
#%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
from sklearn.cluster import DBSCAN

data = np.array([[-37.530, 3.109, -16.452],
[40.247, 5.483, -15.209],
[-31.920, 12.584, -12.916],
[-32.760, 14.072, -13.749],
[-37.100, 1.953, -15.720],
[-32.143, 12.990, -13.488],
[-41.077, 4.651, -15.651],
[-34.219, 13.611, -13.090],
[-33.117, 15.875, -13.738]])

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(data[:,0], data[:,1], data[:,2], s=300)
ax.view_init(azim=200)
plt.show()

model = DBSCAN(eps=2.5, min_samples=2)
model.fit_predict(data)
pred = model.fit_predict(data)

fig = plt.figure()
ax = Axes3D(fig)
ax.scatter(data[:,0], data[:,1], data[:,2], c=model.labels_, s=300)
ax.view_init(azim=200)
plt.show()

print("number of cluster found: {}".format(len(set(model.labels_))))
print('cluster for each point: ', model.labels_)

输出

  • 聚类前

enter image description here

  • 聚类后

enter image description here

number of cluster found: 3
cluster for each point: [ 0 -1 1 1 0 1 -1 1 1]

关于python - 使用python使用DBSCAN算法在给定x,y,z坐标时对3D点进行聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56062673/

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