.NET深度学习框架ML.NET入门笔记(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq870841070/article/details/80256883

ML.NET入门笔记

ML.NET机器学习框架是基于.NET core 2.x的,所以我们必须安装.net core 2.x,然后顺便安装vs2017便于开发

1.创建项目

此例我们创建一个控制台应用myApp,创建之后使用Nuget安装 Microsoft.ML
安装完成之后我们来使用ML框架来做一个小程序,通过给定一些训练样本训练之后来预测花的品种 训练样本数据格式如下:

//萼片长度,萼片宽度,花瓣长度,花瓣宽度,品种
5.1,3.5,1.4,0.2,玫瑰花
4.9,3.0,1.4,0.2,玫瑰花
6.3,3.3,6.0,2.5,向日葵
...此处省略更多的数据

由此可见,上面每一行数据都是一个样本,其中每行的数值部分叫做样本的特征,而最后一列则为此特征的实际结果,那我们所做的就是利用大量的样本学习之后,我们给出一组特征值
比如1.2,3.5,1.4,0.6 然后在通过调用预测函数得到一个结果,比如结果就是玫瑰花或者其他的品种,好了,既然过程介绍完了就开始撸代码吧

1.首先为我们的样本创建一个对应的实体类

///花的样本实体类
public class IrisData
{
    //萼片长度
    [Column("0")]
    public float SepalLength;
    //萼片宽度
    [Column("1")]
    public float SepalWidth;
    //花瓣长度
    [Column("2")]
    public float PetalLength;
    //花瓣宽度
    [Column("3")]
    public float PetalWidth;
    //品种
    [Column("4")]
    [ColumnName("Label")]
    public string Label;
}

///预测结果返回的实体类
public class IrisPrediction
{
    [ColumnName("PredictedLabel")]
    public string PredictedLabels;
}

主要的调用代码

class Program
{
    static void Main(string[] args)
    {
        // 创建学习管道对象
        var pipeline = new LearningPipeline();

        // 载入样本文件,并用作,分隔符
        string dataPath = "iris-data.txt";
        pipeline.Add(new TextLoader<IrisData>(dataPath, separator: ","));

        // 转换数据
        pipeline.Add(new Dictionarizer("Label"));

        // 放入特征向量
        pipeline.Add(new ColumnConcatenator("Features", "SepalLength", "SepalWidth", "PetalLength", "PetalWidth"));

        //为管道添加分类器算法
        pipeline.Add(new StochasticDualCoordinateAscentClassifier());

        // Label转换为原始文本
        pipeline.Add(new PredictedLabelColumnOriginalValueConverter() { PredictedLabelColumn = "PredictedLabel" });

        // 训练模型
        var model = pipeline.Train<IrisData, IrisPrediction>();

        // 使用训练好的模型来预测结果
        var prediction = model.Predict(new IrisData()
        {
            SepalLength = 3.3f,
            SepalWidth = 1.6f,
            PetalLength = 0.2f,
            PetalWidth = 5.1f,
        });

        Console.WriteLine($"这朵花是: {prediction.PredictedLabels}");
        Console.ReadKey();
    }
}

猜你喜欢

转载自blog.csdn.net/qq870841070/article/details/80256883