【问题标题】:Schema mismatch for feature column 'Features':特征列“特征”的架构不匹配:
【发布时间】:2019-12-22 05:14:02
【问题描述】:

特征列“特征”的架构不匹配:预期向量,得到向量参数名称:inputSchema 该错误发生在以下代码中

 static readonly string _dataPat=Path.Combine(Environment.CurrentDirectory, "Data", "train_data.csv"); 
static void Main(string[] args)
    {

            var mlContext = new MLContext(seed: 0);

        IDataView data = mlContext.Data.LoadFromTextFile<IrisData>(_dataPath, separatorChar: ',', hasHeader: true);

        string featuresColumnName = "Features";

            var pipeline = mlContext.Transforms
                .Concatenate(featuresColumnName,"Class", "Sex", "AgeGroup", "Embarked")
                .Append(mlContext.Clustering.Trainers.KMeans(featuresColumnName, numberOfClusters: 2));

            var model = pipeline.Fit(data);

错误与代码一致

var model = pipeline.Fit(data);

我的班级 IrisData

public class IrisData
{
    [LoadColumn(0)]
    public string Class;

    [LoadColumn(1)]
    public string Sex;

    [LoadColumn(2)]
    public string AgeGroup;

    [LoadColumn(3)]
    public string Embarked;
}

CSV file in my project

【问题讨论】:

  • 尝试将Concatenate 的第二个参数作为列名数组。
  • @Jon 现在出现错误“找不到输入列'Features'参数名称:inputSchema'”
  • 那个错误是由于添加了csv文件可能。我已经更新了我的问题并在我的项目中添加了我的 csv 文件的图片
  • 不要使用Concatenate,而是尝试使用FeaturizeText

标签: c# ml.net


【解决方案1】:

您的Features 列需要是floats 的向量。但是你正在创建一个strings 的向量。

您需要将这些字符串转换为数字。一种方法是使用 OneHotEncoding。见https://docs.microsoft.com/en-us/dotnet/machine-learning/how-to-guides/prepare-data-ml-net#work-with-categorical-data

【讨论】:

    猜你喜欢
    • 2019-08-08
    • 1970-01-01
    • 1970-01-01
    • 2016-06-19
    • 2017-07-23
    • 2018-04-27
    • 1970-01-01
    • 2021-08-01
    • 2016-01-26
    相关资源
    最近更新 更多