Scikit learn 在scikit learn中将GMM拟合到3D直方图

Scikit learn 在scikit learn中将GMM拟合到3D直方图,scikit-learn,mixture-model,Scikit Learn,Mixture Model,scikit learn中的混合模型代码适用于单个数据点的列表,但是如果您有一个直方图呢?也就是说,我对每个体素都有一个密度值,我想让混合模型来近似它。这可能吗?我认为一种解决方案是从这个直方图中采样值,但这不是必需的。Scikit learn有大量的内核密度估计实用程序和算法,它专门围绕着从直方图之类的东西推断分布。有关一些示例,请参阅文档。如果您对数据的分布没有期望,KDE可能是一种更通用的方法。对于2D直方图Z,您可以使用2D体素数组 将numpy作为np导入 创建坐标值 十、 Y=np.

scikit learn中的混合模型代码适用于单个数据点的列表,但是如果您有一个直方图呢?也就是说,我对每个体素都有一个密度值,我想让混合模型来近似它。这可能吗?我认为一种解决方案是从这个直方图中采样值,但这不是必需的。

Scikit learn有大量的内核密度估计实用程序和算法,它专门围绕着从直方图之类的东西推断分布。有关一些示例,请参阅文档。如果您对数据的分布没有期望,KDE可能是一种更通用的方法。

对于2D直方图Z,您可以使用2D体素数组

将numpy作为np导入 创建坐标值 十、 Y=np.mgrid[0:Z.shape[0],0:Z.shape[1]] 根据直方图人工创建点列表 数据点=[] 对于zipX.ravel,y.ravel,z.ravel中的x,y,z: 添加数据点/体素x、y的次数与出现次数相同 在直方图中 对于z中的iz: 数据点附录,y 现在适合你的GMM 从sklearn.mixed导入GMM gmm=gmm gmm.fitdata_点
尽管如此,@Kyle Kastner指出,有更好的方法来实现这一点。首先,你的直方图将被“装箱”,这将使你失去一些分辨率。您能在原始数据被装箱之前获得它吗?

欢迎使用slashdot!我对scikit了解不多,但是如果你能发布更多的细节,包括一些讨论的示例代码,你可能会得到更多的回复。这取决于应用程序。你真的需要高斯混合模型的位置和标准差吗?你用它来分类吗?如果你真的需要高斯混合模型,你可以使用多峰高斯拟合来近似高斯混合模型的直方图。但是,如果你只是想要平滑插值,那就不是最简单的方法,在这种情况下,像双三次插值这样的方法可能更简单。