在不标记 ML.NET 中的特征的情况下训练模型
Train a model without labeling the features in ML.NET
我想训练一个具有大量特征的模型,这些特征是特定关键字是否出现在页面上。功能列表太大,我无法按照 ML.NET 教程 here.
中的建议对所有功能进行标记
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;
}
相反,我希望能够给它一个未命名特征的列表,就像你在 sklearn 中使用 python 所做的那样,只需给它一个特征数组 [[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[] {
// We read the first 10 values as a single float vector.
new TextLoader.Column("FeatureVector", DataKind.R4, new[] {new TextLoader.Range(0, 10)}),
// Separately, read the target variable.
new TextLoader.Column("Target", DataKind.R4, 11)
},
// Default separator is tab, but we need a comma.
separatorChar: ',');
我想训练一个具有大量特征的模型,这些特征是特定关键字是否出现在页面上。功能列表太大,我无法按照 ML.NET 教程 here.
中的建议对所有功能进行标记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;
}
相反,我希望能够给它一个未命名特征的列表,就像你在 sklearn 中使用 python 所做的那样,只需给它一个特征数组 [[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[] {
// We read the first 10 values as a single float vector.
new TextLoader.Column("FeatureVector", DataKind.R4, new[] {new TextLoader.Range(0, 10)}),
// Separately, read the target variable.
new TextLoader.Column("Target", DataKind.R4, 11)
},
// Default separator is tab, but we need a comma.
separatorChar: ',');