我想训练一个模型,模型包含大量特征,这些特征是基于特定关键词是否出现在页面上。我的特征列表非常庞大,无法像ML.NET教程中建议的那样标记所有特征,教程链接在这里。
public class IrisData{ [LoadColumn(0)] public float SepalLength; [LoadColumn(1)] public float SepalWidth; [LoadColumn(2)] public float PetalLength; [LoadColumn(3)] public float PetalWidth; [LoadColumn(4)] public string Label;}
我希望能够提供一个未命名特征的列表,类似于在Python的sklearn中,你可以简单地提供一个特征数组[[0,0,1],[0,1,0]]
和一个标签数组["ShoppingSite", "SocialNetwork"]
。
回答:
你的所有特征都是同一种类型吗,都是布尔类型?如果是的话,你可以使用TextLoader.Range(startIndex, EndIndex)将所有特征加载到一个单一列中:https://github.com/dotnet/machinelearning/blob/master/docs/code/MlNetCookBook.md#how-do-i-load-data-with-many-columns-from-a-csv
var reader = mlContext.Data.CreateTextReader(new[] { // 我们将前10个值读取为一个单一的浮点向量。 new TextLoader.Column("FeatureVector", DataKind.R4, new[] {new TextLoader.Range(0, 10)}), // 单独读取目标变量。 new TextLoader.Column("Target", DataKind.R4, 11) }, // 默认分隔符是制表符,但我们需要逗号。 separatorChar: ',');