无法解析行 xxx、列 xxx 中的值 xxx

Could not parse value xxx in line xxx, column xxx

在尝试获取 IDataView 对象的预览数据时,出现以下错误

外部异常

System.FormatException: 'Parsing failed with an exception: Could not parse value {some value} in line {number}, column {name of column}'

内部异常

InvalidOperationException: Could not parse value {some value} in line {number}, column {name of column}

Here 是我尝试加载的数据集

输入模型

public class JobPostInput
    {
        [LoadColumn(0)]
        [ColumnName("job_id")]
        public int JobId { get; set; }
        [LoadColumn(1)]
        [ColumnName("title")]
        public string Title { get; set; }
        [LoadColumn(2)]
        [ColumnName("location")]
        public string Location { get; set; }
        [LoadColumn(3)]
        [ColumnName("department")]
        public string Department { get; set; }
        [LoadColumn(4)]
        [ColumnName("salary_range")]
        public string SalaryRange { get; set; }
        [LoadColumn(5)]
        [ColumnName("company_profile")]
        public string CompanyProfile { get; set; }
        [LoadColumn(6)]
        [ColumnName("description")]
        public string Description { get; set; }
        [LoadColumn(7)]
        [ColumnName("requirements")]
        public string Requirements { get; set; }
        [LoadColumn(8)]
        [ColumnName("benefits")]
        public string Benefits { get; set; }
        [LoadColumn(9)]
        [ColumnName("telecommuting")]
        public bool Telecommuting { get; set; }
        [LoadColumn(10)]
        [ColumnName("has_company_logo")]
        public bool HasCompanyLogo { get; set; }
        [LoadColumn(11)]
        [ColumnName("has_questions")]
        public bool HasQuestions { get; set; }
        [LoadColumn(12)]
        [ColumnName("employment_type")]
        public string EmployementType { get; set; }
        [LoadColumn(13)]
        [ColumnName("required_experience")]
        public string ExperienceRequired { get; set; }
        [LoadColumn(14)]
        [ColumnName("required_education")]
        public string RequiredEducation { get; set; }
        [LoadColumn(15)]
        [ColumnName("industry")]
        public string Industry { get; set; }
        [LoadColumn(16)]
        [ColumnName("function")]
        public string Function { get; set; }
        [LoadColumn(17)]
        [ColumnName("fraudulent")]
        public bool IsFraud { get; set; }
    }

错误代码

    var dataView = _context.Data.LoadFromTextFile<JobPostInput>(path: "file path", hasHeader: true, separatorChar: ',');
    var preview = dataView.Preview();//exception here

注:

  1. 我试过将 csv 文件中的行数减少到 1。即使发生了异常。
  2. 错误中指定的列名是boolean类型,但显示的值是string
  3. 类型

对您的 JobPostInput 稍作改动应该有助于解决这个问题。

更改以下属性以使用 float 而不是 bool

  • 远程办公
  • 有公司标志
  • 有问题
  • 是欺诈

它试图将它们解析为布尔值,但它们实际上是整数(在 ML.NET 的情况下是浮点数)。可以使用 context.Transforms.Conversion.ConvertType 方法将它们转换为布尔值。