使用 .NET 5 体验大数据和机器学习 (5)

此时,数据已经为训练模型做了适当的准备。训练是无监督的,这意味着它必须用一个例子来推断信息。你没有将样本类别输入到模型中,所以算法必须通过分析特征如何聚类来找出数据的相互关联。你将使用k-means 聚类算法。该算法使用特征计算文档之间的“距离”,然后围绕分组后的文档“绘制”边界。该算法涉及随机化,因此两次运行结果会是不相同的。主要的挑战是确定训练的最佳聚类大小。不同的文档集最好有不同的最佳类别数,但算法需要你在训练前输入类别数。

代码在 2 到 20 个簇之间迭代,以确定最佳大小。对于每次运行,它都会获取特征数据并应用算法或训练器。然后,它根据预测模型对现有数据进行转换。对结果进行评估,以确定每个簇中文档的平均距离,并选择平均距离最小的结果。

var options = new KMeansTrainer.Options { FeatureColumnName = features, NumberOfClusters = categories, }; var clusterPipeline = pipeline.Append(context.Clustering.Trainers.KMeans(options)); var model = clusterPipeline.Fit(dataToTrain); var predictions = model.Transform(dataToTrain); var metrics = context.Clustering.Evaluate(predictions); distances.Add(categories, metrics.AverageDistance);

经过培训和评估后,你可以保存最佳模型,并使用它对数据集进行预测。将生成一个输出文件以及一个摘要,该摘要显示有关每个类别的一些元数据并在下面列出标题。标题只是几个功能之一,因此有时需要仔细研究细节才能使类别有意义。在本地测试中,教程之类的文档归于一组,API 文档归于另一组,而例外归于它们自己的组。

ML zip 文件可与 Prediction Engine 一起用于其他项目中的新数据。

机器学习模型另存为单个 zip 文件。该文件可以包含在其他项目中,与 Prediction Engine 一起使用以对新数据进行预测。例如,你可以创建一个 WPF 应用程序,该应用程序允许用户浏览目录,然后加载并使用经过训练的模型对文档进行分类,而无需先对其进行训练。

下一步是什么

Spark for .NET 计划与.NET 5 同时在 GA(译注:GA=General Availability,正式发布的版本)发布。请访问 https://aka.ms/spark-net-roadmap 阅读路线图和推出功能的计划。(译注:.NET 5 正式发布时间已过,Spark for .NET 已随 .NET 5 正式发布)

本文着重于本地开发体验,为了充分利用大数据的力量,你可以将 Spark 作业提交到云中。有各种各样的云主机可以容纳 PB 级数据,并为你的工作负载提供数十个核的计算能力。Azure Synapse Analytics 是一项 Azure 服务,旨在承载大量数据,提供用于运行大数据作业的群集,并允许通过基于图表的仪表盘进行交互式探索。若要了解如何将 Spark for .NET 作业提交到 Azure Synapse,请阅读官方文档(https://aka.ms/spark-net-synapse)。

下面这张表列举了 ML.NET 机器学习的常见任务和场景:

任务 示例场景
分类(基于文本)
Classification
  将邮件信息分类为垃圾邮件或非垃圾邮件,或根据内容将调查评论分为不同的组别。  
回归
Regression
  根据二手车的品牌、型号、里程数来预测二手车的价格,或者根据广告预算来预测产品的销量。  
预测
Forecasting
  根据过去的销售情况来预测未来产品的销售情况,或天气预报。  
异常检测
Anomaly detection
  检测产品在一段时间内的销售高峰或检测断电情况。  
排名
Ranking
  预测搜索引擎结果的最佳显示顺序,或为用户的新闻排序。  
聚类
Clustering
  对客户进行细分。  
推荐
Recommendation
  根据用户之前看的电影向用户推荐电影,或者推荐经常一起购买的产品。  
图像分类
Image classification
  对机器零件的图像进行分类。  
对象检测
Object detection
  检测汽车图像上的车牌。  

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wspssj.html