Python KDE处理大数据的速度非常慢
当我试着画一个散点图,用密度来着色时,它需要花费很长时间 可能是因为数据的长度相当大 我基本上就是这样做的:Python KDE处理大数据的速度非常慢,python,performance,kernel-density,Python,Performance,Kernel Density,当我试着画一个散点图,用密度来着色时,它需要花费很长时间 可能是因为数据的长度相当大 我基本上就是这样做的: xy = np.vstack([np.array(x_values),np.array(y_values)]) z = gaussian_kde(xy)(xy) plt.scatter(np.array(x_values), np.array(x_values), c=z, s=100, edgecolor='') 作为补充信息,我必须补充: >>len(x_values)
xy = np.vstack([np.array(x_values),np.array(y_values)])
z = gaussian_kde(xy)(xy)
plt.scatter(np.array(x_values), np.array(x_values), c=z, s=100, edgecolor='')
作为补充信息,我必须补充:
>>len(x_values)
809649
>>len(y_values)
809649
是否有其他选项可以获得相同的结果,但速度更快?没有,没有好的解决方案 每个点都应该准备好,然后画一个圆,这个圆可能会被其他点隐藏 我的技巧:(注意这些要点可能会稍微改变输出)
- 获取最小值和最大值,并将图像设置为这样的大小,以便不需要重做图形
- 尽可能删除数据:
- 重复数据
- 以选定的精度进行转换(例如,浮点数)并删除重复数据。您可以使用圆点的一半大小计算精度(或者使用图形的分辨率,如果您想要原始外观)
- 对于庞大的数据集来说,热图通常更有趣:它提供了更多的信息。但在你的情况下,我认为你仍然有太多的数据
注意:还有一个很好的例子(只有2000分)。无论如何,本页也使用了我的第一点。我建议绘制一个数据样本。 如果样本足够大,你应该得到相同的分布。
确保绘图与整个数据集相关也很容易,因为您可以简单地获取多个样本并在它们之间进行比较。您是否测试过
分散
函数本身是否慢,或者运行plt.show
或plt.savefig
时是否慢?标题有误导性。您正在对一个大数据集执行KDE
。完全正确的cel,缓慢发生在z=gaussian_KDE(xy)(xy)
I change中it@newPyUser你用了什么来代替高斯函数?你说过你会改变它。降低KDE的带宽,使用更快的内核(如线性),不要用散点图绘制80000个点。