首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Microsoft.ML在使用LoadFromEnumerable时添加标签

Microsoft.ML在使用LoadFromEnumerable时添加标签
EN

Stack Overflow用户
提问于 2021-02-08 16:07:42
回答 1查看 139关注 0票数 0

有些东西不起作用,我想不出.我想从列表中加载数据。我试过几个密码

代码语言:javascript
复制
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},
            new ProductEntry {CoPurchaseProductID = 11, 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();

我遇到了一个关于“标签”的问题--这是类:

代码语言:javascript
复制
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')'的有效数据类型

有什么想法吗?谢谢你们!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-26 13:08:36

删除[KeyType(count: 262111)]属性的public float Label { get; set; }注释

Label不是密钥

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66105173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档