如何解决Microsoft.ML 在使用 LoadFromEnumerable 时添加标签
有些东西不起作用,我想不通...... 我想从列表中加载数据。我已经尝试了几个代码
MLContext mlContext = new MLContext();
var listData = new List<ProductEntry>
{
new ProductEntry {copurchaseProductID = 12,ProductID = 4},new ProductEntry {copurchaseProductID = 12,ProductID = 3},new ProductEntry {copurchaseProductID = 11,ProductID = 5},ProductID = 3}
};
var data = mlContext.Data.LoadFromEnumerable(listData);
var options = new MatrixFactorizationTrainer.Options
{
MatrixColumnIndexColumnName = nameof(ProductEntry.ProductID),MatrixRowIndexColumnName = nameof(ProductEntry.copurchaseProductID),LabelColumnName = "Label",LossFunction = MatrixFactorizationTrainer.LossFunctionType.SquareLossOneClass,Alpha = 0.01,Lambda = 0.025,Quiet = false,C = 0.00001,ApproximationRank = 10,NumberOfIterations = 20
};
var est = mlContext.Recommendation().Trainers.MatrixFactorization(options);
ITransformer model = est.Fit(data);
var predictionengine = mlContext.Model.CreatePredictionEngine<ProductEntry,copurchase_prediction>(model);
Console.WriteLine("Calculating the top 3 products for product 3...");
var top5 = (from m in Enumerable.Range(1,262111)
let p = predictionengine.Predict(
new ProductEntry()
{
ProductID = 3,copurchaseProductID = (uint)m
})
orderby p.score descending
select (ProductID: m,score: p.score)).Take(10);
foreach (var t in top5)
Console.WriteLine($" score:{t.score}\tProduct: {t.ProductID}");
Console.ReadKey();
我遇到了有关“标签”的问题 这是课程:
public class copurchase_prediction
{
public float score { get; set; }
}
public class ProductEntry
{
[KeyType(count: 262111)]
public float Label { get; set; }
[KeyType(count: 262111)]
public uint ProductID { get; set; }
[KeyType(count: 262111)]
public uint copurchaseProductID { get; set; }
}
出现错误:
System.ArgumentOutOfRangeException: '用 KeyType 属性标记的成员标签,但似乎不是密钥类型的有效数据类型(参数'userType')'
有什么想法吗? 谢谢各位!
解决方法
删除 [KeyType(count: 262111)]
属性的 public float Label { get; set; }
注释
Label
不是键
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。