在尝试获取IDataView
对象的预览数据时,我遇到了以下错误
外部异常
System.FormatException: ‘解析时出现异常:无法解析第{number}行{name of column}列的值{some value}’
内部异常
InvalidOperationException: 无法解析第{number}行{name of column}列的值{some value}
这里是我尝试加载的数据集
输入模型
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();//在这里抛出异常
注意事项:
- 我已经尝试将CSV文件中的行数减少到1,但仍然会发生异常。
- 错误中指定的列名类型为
boolean
,但显示的值类型为string
回答:
对你的JobPostInput
进行小幅修改可以解决这个问题。
将以下属性从bool
改为float
类型:
- Telecommuting
- HasCompanyLogo
- HasQuestions
- IsFraud
它试图将这些值解析为布尔值,但实际上它们是整数(在ML.NET中是浮点数)。可以通过使用context.Transforms.Conversion.ConvertType
方法将它们转换为布尔值。