说说 ML.NET and AutoML

经常参加培训讲座。发现最受欢迎的讲座之一是"ML.NET和AutoML的介绍"。ML.NET是一个代码库,可用于创建经典(非神经网络)机器学习预测模型。AutoML 是命令行工具中的非正式术语,可自动为您生成ML.NET代码。

以下是我使用的两个数据文件,演示ML.NET程序的源代码,以及 AutoML 的 shell 命令。目标是从年龄、工作类型、年收入和工作满意度中预测一个人的性别。

文件: employees_norm_train.tsv

isMale	age	job	income	satisfac
False	0.66	mgmt	0.5210	low
True	0.35	tech	0.8610	medium
False	0.24	tech	0.4410	high
True	0.43	sale	0.5170	medium
True	0.37	mgmt	0.8860	medium
True	0.30	sale	0.8790	low
False	0.40	mgmt	0.2020	medium
False	0.58	tech	0.2650	low
True	0.27	mgmt	0.8480	low
False	0.33	sale	0.5600	medium
True	0.59	tech	0.2330	high
True	0.52	sale	0.8700	high
False	0.41	mgmt	0.5170	medium
True	0.22	sale	0.3500	high
False	0.61	sale	0.2980	low
True	0.46	mgmt	0.6780	medium
True	0.59	mgmt	0.8430	low
False	0.28	tech	0.7730	high
True	0.46	sale	0.8930	medium
False	0.48	tech	0.2920	medium
False	0.28	mgmt	0.6690	medium
False	0.23	sale	0.8970	high
True	0.60	mgmt	0.6270	high
True	0.29	sale	0.7760	low
True	0.24	tech	0.8750	high
False	0.51	mgmt	0.4090	medium
True	0.22	sale	0.8910	low
True	0.19	tech	0.5380	low
False	0.25	sale	0.9000	high
True	0.44	tech	0.8980	medium
True	0.35	mgmt	0.5380	medium
True	0.29	sale	0.7610	low
False	0.25	mgmt	0.3450	medium
False	0.66	mgmt	0.2210	low
False	0.43	tech	0.7450	medium
True	0.42	sale	0.8520	medium
True	0.44	mgmt	0.6580	medium
False	0.42	sale	0.6970	medium
True	0.56	tech	0.3680	high
True	0.38	mgmt	0.2600	low

文件: employees_norm_test.tsv

isMale	age	job	income	satisfac
True	0.50	mgmt	0.5470	medium
False	0.67	tech	0.3200	low
False	0.23	sale	0.7510	high
True	0.18	tech	0.7950	low
False	0.33	mgmt	0.6210	medium
True	0.47	sale	0.4650	medium
True	0.59	sale	0.7420	high
True	0.51	tech	0.4970	medium
False	0.33	tech	0.2630	medium
False	0.35	mgmt	0.8300	high

文件: GenderMLdotNETProgram.cs

using System;
using Microsoft.ML;
using Microsoft.ML.Data;
using Microsoft.ML.Trainers;
namespace GenderMLdotNET
{
  class GenderMLdotNETProgram
  {
    static void Main(string[] args)
    {
      Console.WriteLine("\nBegin ML.NET gender demo \n");
      MLContext mlc = new MLContext(seed: 1);

      // 1. load data and create data pipeline
      Console.WriteLine("\nLoading norm data into memory \n");
      string trainDataPath =
        "..\\..\\..\\Data\\employees_norm_train.tsv";

      IDataView trainData =
        mlc.Data.LoadFromTextFile
        (trainDataPath, ‘\t‘, hasHeader: true);

      var a = mlc.Transforms.Categorical.OneHotEncoding(new[]
       { new InputOutputColumnPair("job", "job") });
      var b = mlc.Transforms.Categorical.OneHotEncoding(new[]
        { new InputOutputColumnPair("satisfac", "satisfac") });
      var c = mlc.Transforms.Concatenate("Features", new[]
        { "age", "job", "income", "satisfac" });
      var dataPipe = a.Append(b).Append(c);

      Console.WriteLine("Creating logistic regression model");
      var options =
        new LbfgsLogisticRegressionBinaryTrainer.Options()
      {
        LabelColumnName = "isMale",
        FeatureColumnName = "Features",
        MaximumNumberOfIterations = 100,
        OptimizationTolerance = 1e-8f
      };

      var trainer =
        mlc.BinaryClassification.Trainers.
        LbfgsLogisticRegression(options);
      var trainPipe = dataPipe.Append(trainer);
      Console.WriteLine("Starting training");
      ITransformer model = trainPipe.Fit(trainData);
      Console.WriteLine("Training complete");

      // 3. evaluate model
      IDataView predictions = model.Transform(trainData);
      var metrics = mlc.BinaryClassification.
        EvaluateNonCalibrated(predictions, "isMale", "Score");
      Console.Write("Model accuracy on training data = ");
      Console.WriteLine(metrics.Accuracy.ToString("F4") + "\n");

      // 4. use model
      ModelInput X = new ModelInput();
      X.Age = 0.32f; X.Job = "mgmt"; X.Income = 0.4900f;
      X.Satisfac = "medium";

      var pe = mlc.Model.CreatePredictionEngine(model);
      var Y = pe.Predict(X);
      Console.Write("Set age = 32, job = mgmt, income = $49K, ");
      Console.WriteLine("satisfac = medium");
      Console.Write("Predicted isMale : ");
      Console.WriteLine(Y.PredictedLabel);

      Console.WriteLine("\nEnd ML.NET demo ");
      Console.ReadLine();
    } // Main
  } // Program

  class ModelOutput
  {
    [ColumnName("predictedLabel")]
    public bool PredictedLabel { get; set; }

    [ColumnName("score")]
    public float Score { get; set; }
  }

  class ModelInput
  {
    [ColumnName("isMale"), LoadColumn(0)]
    public bool IsMale { get; set; }

    [ColumnName("age"), LoadColumn(1)]
    public float Age { get; set; }

    [ColumnName("job"), LoadColumn(2)]
    public string Job { get; set; }

    [ColumnName("income"), LoadColumn(3)]
    public float Income { get; set; }

    [ColumnName("satisfac"), LoadColumn(4)]
    public string Satisfac { get; set; }
  }
} // ns

AutoML命令:

mlnet auto-train ^
--task binary-classification ^
--dataset ".\Data\employees_norm_train.tsv" ^
--test-dataset ".\Data\employees_norm_test.tsv" ^
--label-column-name isMale ^
--max-exploration-time 60 ^
--name PredictGenderAutoML

原文地址:https://www.cnblogs.com/BeanHsiang/p/12546140.html

时间: 2024-10-11 23:51:25

说说 ML.NET and AutoML的相关文章

Bayesian - Auto ML

auto ml主要是提供end-to-end的解决方案,目前也存在很多算法去解决最优解搜索的问题,常见的例如: grid search... 就AutoML的流程而言,可以参考下图: 整个过程中,柱形表示的是:数据,模型,以及要tune的数据对, 如:(lr, accuracy) 用户需要预设定一些数据对,然后算法会在数据对上寻找能使得accuracy最高的组合 这里用的贝叶斯算法,是建立在两个数据点之间的分布是高斯分布, 然后用不断逼近的方式去寻找最优解. 求解过程可以用下图简略表示: 关于实

ML.NET 示例:目录

ML.NET 示例中文版,英文原版请访问:https://github.com/dotnet/machinelearning-samples ML.NET 示例 ML.NET 是一个跨平台的开源机器学习框架,使.NET开发人员使用机器学习变得很容易. 在这个GitHub 存储库中,我们提供了示例,这些示例将帮助您开始使用ML.NET,以及如何将ML.NET加入到现有的和新的.NET应用程序中. 注意: 请在机器学习存储库中打开与ML.NET框架相关的问题.请仅当您遇到此存储库中的示例问题时,才在

使用ML.NET进行自定义机器学习

ML.NET是Microsoft最近发布的用于机器学习的开源,跨平台,代码优先的框架.尽管对我们来说是一个新的框架,但该框架的根源是Microsoft Research,并且在过去十年中已被许多内部团队使用,包括那些您几乎肯定听说过的产品的开发人员-Microsoft Windows,Office和Bing,仅举几例. ML.NET使.NET开发人员可以轻松地将机器学习集成到其应用程序中,无论是控制台,桌面还是Web.它涵盖了机器学习活动的整个生命周期,从模型的训练和评估到使用和部署.支持许多典

Mercedes-Benz NEC BGA 315MHZ 433MHZ 434MHZ GLK GLA GLC ML W204 W207 W212 W221 W222 S300 S350 S400 S500 S550 S600 C180 C200 C260 C300 ES350 GLK300 GLA200 E260L C200 B200 S320L Mercedes-Benz KEY PC

AUTO ECU CHIPS  STOCK ESL Motor  ELV Motor  Steering Lock Wheel Motor for Mercedes-Benz ESL/ELV Motor Steering Lock Wheel Motor for Mercedes-Benz W204 W207 W212 esl motor elv motor Mercedes-Benz NEC   BGA 315MHZ 433MHZ  434MHZ GLK GLA GLC ML W204 W20

Spark ML下实现的多分类adaboost+naivebayes算法在文本分类上的应用

1. Naive Bayes算法 朴素贝叶斯算法算是生成模型中一个最经典的分类算法之一了,常用的有Bernoulli和Multinomial两种.在文本分类上经常会用到这两种方法.在词袋模型中,对于一篇文档$d$中出现的词$w_0,w_1,...,w_n$, 这篇文章被分类为$c$的概率为$$p(c|w_0,w_1,...,w_n) = \frac{p(c,w_0,w_1,...,w_n)}{p(w_0,w_1,...,w_n)} = \frac{p(w_0,w_1,...,w_n|c)*p(c

Notes : <Hands-on ML with Sklearn & TF> Chapter 7

.caret, .dropup > .btn > .caret { border-top-color: #000 !important; } .label { border: 1px solid #000; } .table { border-collapse: collapse !important; } .table td, .table th { background-color: #fff !important; } .table-bordered th, .table-bordere

机器学习 - ML

CNCC - 2016 | 机器学习(原文链接) Machine Learning - ML,机器学习是人工智能AI的一个分支. 参考: :

(转)VC运行库MD /MDd /MT /MTd /ML /MLd

VC编译选项 - 多线程(/MT) - 多线程调试 (/MTd) - 多线程DLL (/MD) - 多线程调试DLL (/MDd) C 运行时库 库文件 - Single thread(static link) ML libc.lib - Debug single thread(static link) MLd libcd.lib - MultiThread(static link) MT libcmt.lib - Debug multiThread(static link) MTd libcm

windows下ML python lib的安装

万事开头难,作为第一篇博客,学不来深入浅出,妙趣横生,但求老老实实把事情说明白. 事情起源于kaggle竞赛者很慷慨地在github上开放了源码,kaggle非常贴心地将这些优异的解决方案和实现整理出来.对于小白级数据工作者,如我,是临摹思路,学习代码的绝好机会.为了享受这场盛宴,我在windows下搭建了python环境.由于ML包依赖有点复杂,本文赘述一二. 常见ML的python lib有:numpy, matplotlib, scipy, scikit-learn. 方式一: 常用的wi