无法理解 C# 代码的这一部分

本文关键字:一部分 代码 | 更新日期: 2023-09-27 18:36:39

这部分代码取自本教程,介绍如何在 Infer.NET 库中使用学习者。我打算将其用于机器学习,但不幸的是我无法获得此代码片段。请帮帮我。

/// <summary>
/// A mapping for the Bayes Point Machine classifier tutorial.
/// </summary>
public class ClassifierMapping 
    : IClassifierMapping<IList<Vector>, int, IList<string>, string, Vector>
{
    public IEnumerable<int> GetInstances(IList<Vector> featureVectors)
    {
        for (int instance = 0; instance < featureVectors.Count; instance++)
        {
            yield return instance;
        }
    }
    public Vector GetFeatures(int instance, IList<Vector> featureVectors)
    {
        return featureVectors[instance];
    }
    public string GetLabel(
        int instance, IList<Vector> featureVectors, IList<string> labels)
    {
        return labels[instance];
    }
    public IEnumerable<string> GetClassLabels(
        IList<Vector> featureVectors = null, IList<string> labels = null)
    {
        return new[] { "Female", "Male" };
    }
}

提前谢谢你!

无法理解 C# 代码的这一部分

唯一远程复杂的位是yield return

public IEnumerable<int> GetInstances(IList<Vector> featureVectors)
{
    for (int instance = 0; instance < featureVectors.Count; instance++)
    {
        yield return instance;
    }
}

可以替换为:

public IEnumerable<int> GetInstances(IList<Vector> featureVectors)
{
    var result = new List<int>();
    for (int instance = 0; instance < featureVectors.Count; instance++)
    {
       result.Add(instance);
    }
    return result;
}
这是

创建一个实现IClassifierMapping接口的映射类。

http://research.microsoft.com/en-us/um/cambridge/projects/infernet/docs/Infer.NET%20Learners%20-%20Bayes%20Point%20Machine%20classifiers%20-%20API%20-%20Mappings%20-%20Standard%20Data%20Format%20Mapping.aspx

还有其他映射接口,也可以在这里看到。

http://research.microsoft.com/en-us/um/cambridge/projects/infernet/docs/Infer.NET%20Learners%20-%20Bayes%20Point%20Machine%20classifiers%20-%20API%20-%20Mappings.aspx

使用此映射类,您现在可以创建贝叶斯点机分类器。

关于代码的复杂性,你可以看看韦斯顿的答案。