我有一个类似于下面所示的数据集,从我的角度来看,它清晰地形成了一条线。我想要用一条线连接每条曲线内的标记,而不是绘制标记。我很好奇,在这种情况下,哪种类型的聚类算法会很好?
import numpy as np
import matplotlib.pyplot as plt
np.random.seed = 42
#Generate (x,y) data
x = np.linspace(0.1,0.9,50)
y = x%1
x += np.sin(2*x%1)
y = y%0.2
#Shuffle (x,y) data
ns = list(range(len(x)))
np.random.shuffle(ns)
x = x[ns]
y = y[ns]
#Plot
fig, axs = plt.subplots(1,2)
axs[0].scatter(x,y)
axs[1].plot(x,y)
plt.savefig("markers vs lines.pdf")
图 - 左:标记,右:按行连接的数据点。
答案 0 :(得分:2)
由于您要求使用群集算法,您可能需要查看DBSCAN。
http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html
有两个参数,epsilon和制作群集的点数。
这是一个让你入门的代码:
<datetimepicker v-model="myDate"></datetimepicker>
结果:
灵感来自:http://scikit-learn.org/stable/auto_examples/cluster/plot_dbscan.html
有关DBSCAN参数的更多信息,请访问:http://scikit-learn.org/stable/modules/generated/sklearn.cluster.DBSCAN.html#sklearn.cluster.DBSCAN
希望得到这个帮助。
答案 1 :(得分:1)
由于架构原因,此类数据在图像分析中很常见。
为了推断透视,人们使用霍夫变换来识别点线。
这可能是在这里使用的最佳方法。