在建立管道之后,我们通过使用所选算法拟合或使用训练数据来训练预测模型。 在该步骤中,模型被建立,训练并作为对象返回:
var model = trainingPipeline.Fit(trainingDataView); 3. 评估模型在本例中,模型的评估是在使用交叉验证方法训练模型之前执行的,因此您将获得指示模型准确度的指标。
var crossValidationResults = mlContext.Regression.CrossValidate(trainingDataView, trainingPipeline, numFolds: 6, labelColumn: "Label"); ConsoleHelper.PrintRegressionFoldsAverageMetrics(trainer.ToString(), crossValidationResults); 4. 保存模型供最终用户的应用程序稍后使用一旦创建和评估了模型,就可以将它保存到.ZIP文件中,任何最终用户的应用程序都可以通过以下代码使用它:
using (var file = File.OpenWrite(outputModelPath)) model.SaveTo(mlContext, file); 5. 用简单的测试预测试用模型简单地说,您可以从.ZIP文件中加载模型,创建一些示例数据,创建“预测函数”,最后进行预测。
ITransformer trainedModel; using (var stream = File.OpenRead(outputModelPath)) { trainedModel = mlContext.Model.Load(stream); } var predictionFunct = trainedModel.MakePredictionFunction<ProductData, ProductUnitPrediction>(mlContext); Console.WriteLine("** Testing Product 1 **"); // Build sample data ProductData dataSample = new ProductData() { productId = "263", month = 10, year = 2017, avg = 91, max = 370, min = 1, count = 10, prev = 1675, units = 910 }; //model.Predict() predicts the nextperiod/month forecast to the one provided ProductUnitPrediction prediction = predictionFunct.Predict(dataSample); Console.WriteLine($"Product: {dataSample.productId}, month: {dataSample.month + 1}, year: {dataSample.year} - Real value (units): 551, Forecast Prediction (units): {prediction.Score}"); 引用eShopDashboardML数据集是基于UCI(+retail) 的一个公共在线零售数据集
Daqing Chen, Sai Liang Sain, 和 Kun Guo, 在线零售业的数据挖掘: 基于RFM模型的数据挖掘客户细分案例研究, 数据库营销与客户战略管理杂志, Vol. 19, No. 3, pp. 197–208, 2012 (印刷前在线发布: 27 August 2012. doi: 10.1057/dbm.2012.17).