0

几个月来,我一直在通过一个字符识别和笔迹转录项目为自己学习人工智能。到目前为止,我已经通过实现 CNN、CTC 神经网络成功地使用了 Keras、Theano 和 Tensorflow。

今天,我尝试使用高斯混合模型,这是迈向高斯发射隐马尔可夫模型的第一步。为此,我使用带有 pca 缩减的 sklearn 混合来选择具有 Akaike 和贝叶斯信息标准的最佳模型。Aic 的协方差类型为 Full,它提供了一个很好的 U 曲线,而 Bic 的协方差类型为 Tied,因为全协方差 Bic 只给出线性曲线。对于 12.000 个样本,我得到了 Aic 为 60 个 n 分量和 Bic 为 120 个 n 分量的最佳模型。

我的输入图像有 64 个像素,仅代表英文字母的大写字母,26 个类别,编号从 0 到 25。

Sklearn GaussianMixture 的 fit 方法忽略标签, predict 方法将分量的位置(0 到 59 或 0 到 119)返回到关于概率的 n 个分量中。

如何使用 sklearn GaussianMixture 检索列表中字符位置的原始标签?

4

1 回答 1

0

因此,您想在生成分类器中使用 GaussianMixture。您需要为每个标签计算 P(Y|X) 并根据这些概率估计标签。为此,您需要为每个标签保留一个 GMM,并使用来自相应标签的数据进行训练。然后 score 方法将为您提供给定数据的可能性 P(X|Y)(或对数似然,您可能需要检查)。如果你对先验进行多重可能性,你会得到后验,P(Y|X)。对于每个标签,您将得到一个后验,例如 P(Y=0|X), P(Y=1|X), ... 具有最大后验概率的标签可以报告为估计标签。

您可以从下面的代码示例中获得一些提示。(这里假设先验概率相等,您需要在实现中考虑这一点)

Y_predicted = clf.predict(X_test)

score = np.empty((Y_test.shape[0], 10))
predictor_list = []
for i in range(10):
  predictor = GMM()
  predictor.fit(X[Y==i])
  predictor_list.append(predictor)
  score[:, i] = predictor.score(X_test)

Y_predicted = np.argmax(score, axis=1)
于 2018-03-07T05:16:29.757 回答