gpt4 book ai didi

python - 基于密度阈值的聚类点

转载 作者:太空宇宙 更新时间:2023-11-03 20:35:08 26 4
gpt4 key购买 nike

更新了我的问题。见下文。

我有一个散点图,有很多噪音。我只想绘制密度阈值以上的点。

我用gaussian_kde计算了点的密度,但我不知道如何实现阈值。我想过屏蔽这些点,但这行不通。

thresh = 10
x = x_data
y = y_data
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)

x1 = np.ma.masked_where(z > thresh, x) # mask points above threshold
y1 = np.ma.masked_where(z > thresh, y) # mask points above threshold

fig, ax = plt.subplots()
ax.scatter(x, y, c=z, s=10)

我期望绘图的噪音较少,但当我绘制 x1 和 y1 时,没有任何变化。我只想看到密度高的点。

<小时/>

为了减少噪音,我尝试根据点的密度对点进行聚类。密度是用 gausian_kde 计算的。

我制作了 3D 散点图来估计分离簇的阈值。

x = x_data
y = y_data
xy = np.vstack([x,y])
z = gaussian_kde(xy)(xy)

cI_t = 0.0000059
cI_x = np.ma.masked_where(z < cI_t, x).compressed()
cI_y = np.ma.masked_where(z < cI_t, y).compressed()
cII_t = 0.0000165
cII_x = np.ma.masked_where(z < cII_t, x).compressed()
cII_x_1 = cII_x[(cII_y <= 252)]
cII_y = np.ma.masked_where(z < cII_t, y).compressed()
cII_y_1 = cII_y[(cII_y >= 252)]
cIII_t = 0.0000048
cIII_x = np.ma.masked_where(z < cIII_t, x).compressed()
cIII_y = np.ma.masked_where(z < cIII_t, y).compressed()
cIV_t = 0.00003
cIV_x = np.ma.masked_where(z < cIV_t, x).compressed()
cIV_y = np.ma.masked_where(z < cIV_t, y).compressed()

# 3D Density plot
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
plt.show()

# Scatter plot cII and cIV
fig2, ax2 = plt.subplots()
#plt.scatter(cI_x, cI_y)
plt.scatter(cII_x, cII_y)
#plt.scatter(cIII_x, cIII_y)
plt.scatter(cIV_x, cIV_y)
plt.axhline(y=255)
ax2.set_xlim(0,360)
ax2.set_ylim(0,360)
plt.show()

但知道我只需要从 cII 簇中选择顶部的蓝色点。有没有办法只选择蓝线上方的点。 (忽略橙色点,这是 cIV 簇。)

最佳答案

解决方案:

集群 cII 的示例:我根据 x 和 y 数据制作了一个 pandas 数据框,然后根据散点图中的值选择了点。

cII_t = 0.0000165
cII_x = np.ma.masked_where(z < cII_t, x).compressed()
cII_y = np.ma.masked_where(z < cII_t, y).compressed()
cII_df = pd.DataFrame({"x" : cII_x, "y" : c2II_y})
cII_df = cII_df[(cII_df["x"] >= 166) & (cII_df["x"] <= 227) & (cII_df["y"] >= 252) & (c2II_df["y"] <= 336)]
cII_x = cII_df["x"]
cII_y = cII_df["y"]

最终情节:

关于python - 基于密度阈值的聚类点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57216113/

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