我需要实现 EM 算法以在图像数据(像素)上拟合 GMM。数据以 .mat 文件的形式提供。数据类似于 MNIST 数据集。所以它是一个形状为 784 x 1990 的图像矩阵。有 1990 张图像,矩阵的每一列对应一个大小为 28 x 28 像素的图像(所以 28*28 = 784)。
我在 python 中看到了很多关于 EM 的在线示例,但没有一个用于处理图像。大多数生成如下数据。我应该如何处理这些像素图像向量?我不确定如何重塑它或如何开始这项任务。我是否平均每列的像素?我的目标 X 应该是一个列表还是列表列表?以我的拙见,我认为我需要获取每个黑白图像的 x,y 坐标。
random_seed=36788765
np.random.seed(random_seed)
Mean1 = 2.0 # Input parameter, mean of first normal probability distribution
Standard_dev1 = 4.0 #@param {type:"number"}
Mean2 = 9.0 # Input parameter, mean of second normal probability distribution
Standard_dev2 = 2.0 #@param {type:"number"}
# generate data
y1 = np.random.normal(Mean1, Standard_dev1, 1000)
y2 = np.random.normal(Mean2, Standard_dev2, 500)
data=np.append(y1,y2)
或者像这样,有一个 X 和 Y 来生成散点图:
from sklearn.datasets.samples_generator import make_blobs
# Create dataset
X,Y = make_blobs(cluster_std=1.5,random_state=20,n_samples=500,centers=3)```