我是 C# 和 ML.Net 的初学者,我正在努力在 ML.Net 中加载数据,为此我将一些数据存储在 .csv 文件中。第一步是为数据模型创建一个类,如下所示:
public class ModelInput [ColumnName("sepallength"), LoadColumn(1)] public float Sepallength { get; set; } [ColumnName("sepalwidth"), LoadColumn(2)] public float Sepalwidth { get; set; } [ColumnName("petallength"), LoadColumn(3)] public float Petallength { get; set; } [ColumnName("petalwidth"), LoadColumn(4)] public float Petalwidth { get; set; } [ColumnName("variety"), LoadColumn(5)] public string Variety { get; set; }
因此,在加载 .csv 文件之前,我需要将我的 .csv 第一行中的所有功能存储在此类中。我还需要知道由特征(字符串、浮点数、日期时间等)表示的变量的类型,以及在我的 .csv 中表示该特征的列。
创建此类后,我将使用以下简单的代码行从 .csv 加载数据:
var myData = mlContext.Data.LoadFromTextFile<ModelInput>("Iris.csv",
hasHeader: true, separatorChar: ',');
所以这个命令使用我首先为数据模型创建的类。
问题是:我想做我在动态方法中描述的第一步,因为在加载我的 .csv 文件之前,我需要已经知道我的 .csv 的结构并实现该类。但是如果我不知道呢?(例如,如果有人想加载自己的文件怎么办?)
我的想法是编写一些脚本,第一次读取我的 .csv 文件并创建一个 .cs 文件并用我的课程所需的代码填充这个文件,因此该脚本将取决于我的 .csv 和还有他们的变量类型(甚至其他东西......)
但是我想知道我的想法的可行性,因为在通过读取 .csv 为数据模型自动创建我的类之后,它必须被编译,但我已经编译了所有文件,这意味着我需要以某种方式重新编译...
这是正确的方法还是我错过了更容易的东西?
预先感谢您的回答