【问题标题】:Sklearn GaussianMixtureSklearn GaussianMixture
【发布时间】:2018-03-06 16:55:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: python python-3.x scikit-learn handwriting-recognition mixture


    【解决方案1】:

    因此,您想在生成分类器中使用 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)
    

    【讨论】:

      猜你喜欢
      • 2021-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-03
      • 2017-07-12
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      相关资源
      最近更新 更多