目前的机器学习框架很多,TensorFlow更是其中最热门的机器框架。但是,适合C#开发者的机器学习框架却不多,TensorFlow虽然有TensorFlowSharp供C#开发者来写TensorFlow程序,但是按照GitHub的例子写却一直报错。
但是微软在Build 2018大会上兴奋地宣布了http://ML.NET的预览版,这是一种跨平台的开源机器学习框架。http://ML.NET将让广大.NET开发人员可以开发自己的模型,并且将自定义的机器学习融入到其应用程序中,无需之前拥有开发或调整机器学习模型方面的专业知识。
http://ML.NET首先是一个框架,这意味着它经扩展后可以添加流行的机器学习库,http://ML.NET将充分利用流行的深度学习库(比如TensorFlow、Caffe2和CNTK)以及一般的机器学习库(比如http://Accord.NET),从而支持其他机器学习场景,比如推荐系统、异常检测及其他方法(比如深度学习)。
今天小编测试编写了鸢尾花的分类示例,真的好写的感动到哭。
// 步骤2:创建管道并加载数据 var pipeline = new LearningPipeline();
// 如果在VisualStudio中工作,请确保IrIS-DATA.TXT的“复制到输出目录”属性设置为“始终复制”。 string dataPath = "iris-data.txt";
pipeline.Add(new TextLoader<IrisData>(dataPath, separator: ","));
// 第3步:转换数据 // 将数值分配给“标签”列中的文本,因为只有在模型训练过程中才能处理数字。 pipeline.Add(new Dictionarizer("Label"));
// 将所有特征放入向量中 pipeline.Add(new ColumnConcatenator("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"));
// 第4步:增加学习者 // 将学习算法添加到流水线中。 // 这是一个分类场景(这是什么类型的鸢尾花?) pipeline.Add(new StochasticDualCoordinateAscentClassifier());
// 将标签转换为原始文本(在步骤3中转换为数字) pipeline.Add(new PredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" });
// 第5步:根据数据集训练模型 var model = pipeline.Train<IrisData, IrisPrediction>();
// 第6步:使用你的模型进行预测 // 你可以改变这些数字来测试不同的预测。 var prediction = model.Predict(new IrisData()
{
SepalLength = 3.3f,
SepalWidth = 1.6f,
PetalLength = 0.2f,
PetalWidth = 5.1f,
});
Console.WriteLine($"Predicted flower type is: {prediction.PredictedLabels}");
通过这段代码,我觉得有点像用rapidminer的感觉,对于初级开发者来说,来给成功例子,比直接上来就手写训练模型来的简单,而且容易成功!我相信,http://ML.NET陆续的也会开放自定义训练模型,现在就一直在GitHub上跟踪学习。