You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2022/.NET8下ML.NET中Recommendation()方法找不到的问题求助

问题排查与解决

核心原因

你遇到的Recommendation()方法无法调用的问题,是因为ML.NET在适配.NET 8的3.x及以上版本中,已移除mlContext.Recommendation()这个API入口,相关的矩阵分解训练器被整合到了回归任务模块中(电影评分预测属于回归场景)。

具体修复步骤

1. 替换训练管道的API调用

将原代码中构建训练管道的行:

var trainingPipeLine = dataProcessingPipeline.Append(mlContext.Recommendation().Transforms.MatrixFactorization(options));

替换为回归任务模块下的训练器调用:

var trainingPipeLine = dataProcessingPipeline.Append(mlContext.Regression.Trainers.MatrixFactorization(options));

2. 确认依赖包版本

确保项目安装了最新稳定版的Microsoft.ML NuGet包,无需单独安装Microsoft.ML.Recommendation,该包功能已整合到主包中。可通过VS2022的NuGet包管理器搜索并更新。

3. 验证标签字段类型

确保MovieRating类中的Label字段为float类型(回归任务要求标签为数值型),示例定义:

public class MovieRating
{
    [LoadColumn(0)]
    public float userId;

    [LoadColumn(1)]
    public float movieId;

    [LoadColumn(2)]
    public float Label; // 电影评分,作为模型预测的标签
}

完整修正后的方法代码

using Microsoft.ML;
using Microsoft.ML.Trainers;
using Microsoft.ML.Data;
using Microsoft.ML.Transforms;

ITransformer BuildAndTrainModel(MLContext mlContext, IDataView trainingDataView)
{
    // 数据处理管道:将userId和movieId编码为模型可识别的键值
    var dataProcessingPipeline = mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "userIdEncoded", inputColumnName: nameof(MovieRating.userId))
                   .Append(mlContext.Transforms.Conversion.MapValueToKey(outputColumnName: "movieIdEncoded", inputColumnName: nameof(MovieRating.movieId)));

    // 配置矩阵分解训练器参数
    MatrixFactorizationTrainer.Options options = new MatrixFactorizationTrainer.Options();
    options.MatrixColumnIndexColumnName = "userIdEncoded";
    options.MatrixRowIndexColumnName = "movieIdEncoded";
    options.LabelColumnName = "Label";
    options.NumberOfIterations = 20;
    options.ApproximationRank = 100;

    // 构建训练管道:使用回归模块下的矩阵分解训练器
    var trainingPipeLine = dataProcessingPipeline.Append(mlContext.Regression.Trainers.MatrixFactorization(options));

    Console.WriteLine("=============== Training the model ===============");
    ITransformer model = trainingPipeLine.Fit(trainingDataView);

    return model;
}

内容的提问来源于stack exchange,提问作者Rihah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 18:14:50