Ejemplo n.º 1
0
 /// <summary>
 /// Priors from posteriors with possible missing features (e.g. for community training).
 /// </summary>
 /// <param name="posteriors">The posteriors.</param>
 /// <param name="featureSet">The feature set.</param>
 /// <param name="point">The point.</param>
 /// <param name="thresholdAndNoiseVariance">The threshold and noise variance.</param>
 /// <param name="userNames">The user names.</param>
 /// <returns>The <see cref="CommunityPriors" />.</returns>
 internal static CommunityPriors FromPosteriors(
     CommunityPosteriors posteriors,
     FeatureSet featureSet,
     double point,
     double thresholdAndNoiseVariance,
     IList <string> userNames)
 {
     return(new CommunityPriors
     {
         WeightMeans =
             featureSet.FeatureBuckets.ToDictionary(
                 ia => ia,
                 ia =>
                 posteriors.WeightMeans.ContainsKey(ia)
                     ? posteriors.WeightMeans[ia]
                     : Gaussian.FromMeanAndVariance(0.0, 1.0)),
         WeightPrecisions =
             featureSet.FeatureBuckets.ToDictionary(
                 ia => ia,
                 ia =>
                 posteriors.WeightPrecisions.ContainsKey(ia)
                     ? posteriors.WeightPrecisions[ia]
                     : Gamma.PointMass(point)),
         Thresholds =
             userNames.ToDictionary(
                 ia => ia,
                 ia =>
                 posteriors.Thresholds != null && posteriors.Thresholds.ContainsKey(ia)
                     ? posteriors.Thresholds[ia]
                     : Gaussian.FromMeanAndVariance(0.0, thresholdAndNoiseVariance)),
         NoiseVariance = thresholdAndNoiseVariance,
     });
 }
Ejemplo n.º 2
0
 /// <summary>
 /// Priors from the community posteriors, using the means of the weight mean and weight precision posteriors.
 /// </summary>
 /// <param name="posteriors">The posteriors.</param>
 /// <param name="featureSet">The feature set.</param>
 /// <param name="thresholdAndNoiseVariance">The threshold and noise variance.</param>
 /// <returns>The <see cref="Priors" /></returns>
 internal static Priors FromCommunityPosteriors(CommunityPosteriors posteriors, FeatureSet featureSet, double thresholdAndNoiseVariance)
 {
     return(new Priors
     {
         Weights =
             featureSet.FeatureBuckets.ToDictionary(
                 ia => ia,
                 ia =>
                 posteriors.WeightMeans.ContainsKey(ia) && posteriors.WeightPrecisions.ContainsKey(ia)
                                ? Gaussian.FromMeanAndPrecision(
                     posteriors.WeightMeans[ia].GetMean(),
                     posteriors.WeightPrecisions[ia].GetMean())
                                : Gaussian.FromMeanAndVariance(0.0, thresholdAndNoiseVariance)),
         Threshold = Gaussian.FromMeanAndVariance(0.0, thresholdAndNoiseVariance),
         NoiseVariance = thresholdAndNoiseVariance
     });
 }