Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python KDE处理大数据的速度非常慢_Python_Performance_Kernel Density - Fatal编程技术网

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个点。