1

Wekaで使用される確率の平均はどれくらいですか?内部のコードは何をしdistributionForInstanceAverageていますか?

4

1 に答える 1

1

これは、各基本分類子の確率分布の平均を返すだけです(Vote内で学習するか、Voteの外部で構築され、Voteによってロードされます)。

最初にVote内で学習されたモデルについてそれらを合計し、次にロードされたモデルについて合計し、次に配列をモデルの総数で要素ごとに除算します。

protected double[] distributionForInstanceAverage(Instance instance) throws Exception {

    //Init probs array with first classifier used within model (learnt or loaded)
    double[] probs = (m_Classifiers.length > 0) 
    ? getClassifier(0).distributionForInstance(instance)
        : m_preBuiltClassifiers.get(0).distributionForInstance(instance);

    //Add the distributions of any classifiers built within the Vote classifier to probs array
    for (int i = 1; i < m_Classifiers.length; i++) {
      double[] dist = getClassifier(i).distributionForInstance(instance);
      for (int j = 0; j < dist.length; j++) {
          probs[j] += dist[j];
      }
    }

    //Add the distributions of any classifiers built outside of the Vote classifier (loaded in) to the probs array
    int index = (m_Classifiers.length > 0) ? 0 : 1;
    for (int i = index; i < m_preBuiltClassifiers.size(); i++) {
      double[] dist = m_preBuiltClassifiers.get(i).distributionForInstance(instance);
      for (int j = 0; j < dist.length; j++) {
        probs[j] += dist[j];
      }
    }

    //Divide each probability by the total number of classifiers used in Vote (to get the mean)
    for (int j = 0; j < probs.length; j++) {
      probs[j] /= (double)(m_Classifiers.length + m_preBuiltClassifiers.size());
    }
    return probs;
  }
于 2012-12-30T15:05:27.183 に答える