VisualStudio2019机器学习Machine Learning

在Visual studio 2019 新建.net core 控制台项目MachineLearningDemo。

点击 工具--->NuGet包管理器--->程序包管理器控制台

VisualStudio2019机器学习Machine Learning_第1张图片

 

输入命令 Install-Package Microsoft.ML

VisualStudio2019机器学习Machine Learning_第2张图片等待安装完成即可。

机器学习整体逻辑如下:

1.加入训练模型种子,一般为集合,集合越大,预测结果更接近实际结果。

2.估计预测:比如使用特征Features,输入参数,输出参数的指定

3.训练模型:比如这里使用线性回归,Fit()函数:训练并返回一个转换

4.根据输入参数,来预测返回结果,Predict()函数:预测结果。

因是预测,每次获得的结果不是固定的,即结果在某个范围内波动

 

一、在控制台程序中,输入代码,如下:

using System;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Trainers;

namespace MachineLearningDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            /*
             * https://docs.microsoft.com/zh-cn/dotnet/machine-learning/
             * 机器学习Demo : ML.NET 文档
             * 本文引用 https://docs.microsoft.com/zh-cn/dotnet/machine-learning/how-does-mldotnet-work
            */            
            MLContext mlContext = new MLContext();//机器学习上下文
            //1.Import or create training data 导入或创建一个训练数据
            //定义一个房屋元组:第一个代表房屋大小,对应字段:Item1(Size)。第二个代表房屋价格,对应字段:Item2(Price)
            Tuple[] houseData = new Tuple[]
            {
                Tuple.Create(1.1F, 1.2F),
                Tuple.Create(1.9f, 2.3f),
                Tuple.Create(2.8f, 3.0f),
                Tuple.Create(3.4f, 3.7f),
                Tuple.Create(0.7f, 0.765f),
            };
            IDataView trainingData = mlContext.Data.LoadFromEnumerable(houseData);

            // 2. Specify data preparation and model training pipeline 指定数据准备和模型培训管道
            //特征Features:输入房屋大小【Item1(Size)】,输出房屋价格【Item2(Price)】 
            //估计链条<回归预测变换<线性回归模型参数>> Concatenate;连接
            //线性回归关系:Item2 = Item1 * 1.09  注意:Item1,Item2是元组类Tuple的属性(成员变量)
            EstimatorChain>
             pipeline = mlContext.Transforms.Concatenate("Features", new[] { "Item1" })
                .Append(mlContext.Regression.Trainers.Sdca(labelColumnName: "Item2", maximumNumberOfIterations: 100));

            // 3. Train model 训练模型 
            //转换链<回归预测变换<线性回归模型参数>> Fit函数:训练并返回一个转换
            TransformerChain> model = pipeline.Fit(trainingData);
            // 4. Make a prediction  做一个预测: 输入参数:房屋大小为3.5
            Tuple size = new Tuple(3.5F, 0);
            //创建预测
            PredictionPrice price = mlContext.Model.CreatePredictionEngine, PredictionPrice>(model).Predict(size);

            //注意:每次运行结果结果一般不是固定的数 在某个数值内(3.82)波动
            Console.WriteLine($"Predicted price for size: {size.Item1 * 1000} sq ft= {price.Price * 100:C}k");
            Console.ReadLine();
        }
    }

    ///


    /// 预测价格类
    ///

    public class PredictionPrice
    {
        [ColumnName("Score")]
        public float Price { get; set; }
    }
}
程序运行结果【因为是预测结果,所以每次运行的结果都不是固定值,在某个范围内波动】如图

VisualStudio2019机器学习Machine Learning_第3张图片

 

 

 

 

 

 

你可能感兴趣的:(.Net,Core,机器学习)