我有一个二进制分类问题,我试图ML.net在Visual Studio 2022中应用www.example.com。
使用VS中的向导(右击项目、添加、机器学习模型),我取得了非常好的效果,准确率在90%以上。
然而,我希望这一切都在源代码中,而不是由向导完成的魔术,所以我试图用Auto ML API复制结果。我得到了几个百分点,但我从来没有达到与向导相同的准确性,所以我假设我错过了一两个步骤。
以下是我现在正在做的:
我创建了一个新的MLContext,并使用它从csv文件中加载数据。我已经尝试过显式地分离训练和测试数据,或者让ML.net处理它,这似乎没有什么区别。
然后我设置列信息,以处理数值列、分类列和忽略列,就像我在向导的UI中所做的那样。然后我创建实验,并运行它:
var settings = new BinaryExperimentSettings()
{
MaxExperimentTimeInSeconds = 60 * 15, // Train for 15 minutes, same as in wizard
CacheDirectoryName = null, // Skip the disk and store in-memory
};
BinaryClassificationExperiment experiment = context.Auto().CreateBinaryClassificationExperiment(settings);
// Actually Train the model
ExperimentResult<BinaryClassificationMetrics> result;
result = experiment.Execute(trainData: trainData,
progressHandler: new ProgressReporter(),
columnInformation: columnInformation
);
是否有一些明显的向导做的事情,我在这里错过了?或者:我能做些什么来提高我的成绩?
1条答案
按热度按时间68bkxrlz1#
这里的ModelBuilder开发人员,我会说模型构建器中的automl部分本质上与BinaryExperiment相同。featurizer的创建方式可能会略有不同,但不会导致训练指标的大差异。
如果您在ML.Net repo中提出问题并使用AutoML.Net对其进行标记,我们可以帮助您深入了解此问题。