1

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

4

2 回答 2

0

Scikit-learn 具有广泛的内核密度估计实用程序和算法,特别是围绕从直方图等事物推断分布。有关一些示例,请参阅此处的文档。如果您对数据的分布没有期望,KDE 可能是一种更通用的方法。

于 2014-06-24T09:19:18.970 回答
0

对于 2D 直方图Z(您的 2D 体素数组)

import numpy as np
# create the co-ordinate values
X, Y = np.mgrid[0:Z.shape[0], 0:Z.shape[1]]

# artificially create a list of points from your histogram
data_points = []
for x, y, z in zip(X.ravel(), Y.ravel(), Z.ravel()):
    # add the data point / voxel (x, y) as many times as it occurs
    # in the histogram
    for iz in z:
        data_points.append((x, y))

# now fit your GMM
from sklearn.mixture import GMM
gmm = GMM()
gmm.fit(data_points)

不过,正如@Kyle Kastner 指出的那样,有更好的方法可以实现这一目标。首先,您的直方图将被“分箱”,这已经会使您失去一些分辨率。你能在原始数据被分箱之前得到它吗?

于 2015-05-11T16:26:19.583 回答