写在前面

准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正。

如果有朋友对此感兴趣,可以加入我:https://github.com/feiyun0112/machinelearning-samples.zh-cn

GitHub Labeler

ML.NET 版本 API 类型 状态 应用程序类型 数据类型 场景 机器学习任务 算法
v0.7 动态 API 最新的 控制台应用程序 .csv 文件 和 GitHub 问题 问题分类 多类分类 SDCA 多类分类器

这是一个简单的原型应用程序,演示如何使用ML.NET APIs。主要的重点是创建、训练和使用在 Predictor.cs 类中实现的ML(机器学习)模型。

概述

GitHubLabeler 是一个.NET Core控制台应用程序, 它的功能如下:

  • 在被标记的GitHub问题上训练ML模型,以教导模型如何为新问题分配标签。 (例如,您可以使用corefx-issues-train.tsv文件,该文件包含来自包含来自公共的corefx存储库的问题)
  • 标记新问题。 应用程序将从appsettings.json文件中指定的GitHub存储库中获取所有未标记的未解决问题,并使用在上面步骤中创建的受过训练的ML模型对其进行标记

这个ML模型使用ML.NET的多类分类算法(SdcaMultiClassTrainer)。

输入您的GitHub配置数据

  1. appsettings.json文件中提供您的GitHub数据:

    为了允许应用程序在GitHub存储库中标记问题,您需要向 appsettings.json 文件中提供以下数据。

        {
"GitHubToken": "YOUR-GUID-GITHUB-TOKEN",
"GitHubRepoOwner": "YOUR-REPO-USER-OWNER-OR-ORGANIZATION",
"GitHubRepoName": "YOUR-REPO-SINGLE-NAME"
}
您的用户帐户(`GitHubToken`)应具有对存储库(`GitHubRepoName`)的写入权限。

点击这里查看[如何创建Github令牌](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/)。

`GitHubRepoOwner`可以是GitHub用户ID(即“MyUser”),也可以是GitHub组织(即“dotnet”)。
  1. 提供训练文件

    a. 您可以使用现有的corefx_issues.tsv数据文件来体验该程序。 在这种情况下,将从corefx存储库的标签中选择预测的标签。 无需更改。

    b. 要使用GitHub存储库中的标签,您需要在数据上训练模型。为此,请从您的存储库中导出GitHub问题到.tsv文件,文件包含以下几列:

    • ID - 问题 ID
    • Area - 问题的标签(以这种方式命名以避免与ML.NET中的Label概念混淆)
    • Title - 问题的标题
    • Description - 问题的描述

    将文件添加到Data文件夹下。更新DataSetLocation段以匹配您的文件名:

private static string DataSetLocation = $"{BaseDatasetsLocation}/corefx-issues-train.tsv";

训练

训练是通过已知示例(在本例中,是包含标签的问题)运行ML模型并教授它如何标记新问题的过程。在这个示例中,它是通过在控制台应用程序调用下列方法来完成:

BuildAndTrainModel(DataSetLocation, ModelFilePathName);

训练完成后,模型将保存为MLModels\GitHubLabelerModel.zip

标记

当模型被训练后,它可以用于预测新问题的标签。

对于没有连接到真正的GitHub存储库的单个测试/演示,请在控制台应用程序中调用下列方法:

TestSingleLabelPrediction(ModelFilePathName);

要访问GitHub存储库的实际问题,请在控制台应用程序中调用另一个方法:

await PredictLabelsAndUpdateGitHub(ModelFilePathName);

为了便于在从GitHub仓库中读取问题时进行测试,它只会加载过去10分钟中创建的并且需要标记的未标记问题。 但是您可以修改这个配置:

Since = DateTime.Now.AddMinutes(-10)

您可以修改这些设置。 在预测标签后,程序会使用预测的标签更新GitHub仓库中的问题。

ML.NET 示例:多类分类之问题分类的更多相关文章

  1. ML.NET 示例:二元分类之信用卡欺诈检测

    写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...

  2. ML.NET 示例:开篇

    写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...

  3. ML.NET 示例:目录

    ML.NET 示例中文版:https://github.com/feiyun0112/machinelearning-samples.zh-cn 英文原版请访问:https://github.com/ ...

  4. ipv4理论知识2-分类编址、ip分类、网络标识、主机标识、地址类、地址块

    分类编址 ipv4的体系结构中有分类编址和无分类编址(后续会介绍到),在分类编址时,ipv4地址分为A.B.C.D.E这5类.每类占用的IP比例和个数如下图: ipv4分类识别 计算机以二进制方式存储 ...

  5. OC语言类的本质和分类

    OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...

  6. 李洪强iOS开发之OC语言类的深入和分类

    OC语言类的深入和分类 一.分类 (一)分类的基本知识  概念:Category  分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...

  7. destoon实现调用当前栏目分类及子分类和三级分类的方法

    调用当前栏目分类及子分类和三级分类是程序设计里常用的方法,本文就来详细讲述destoon实现调用当前栏目分类及子分类和三级分类的方法.具体操作如下: 在destoon中提供了如下的调用语句: 一级分类 ...

  8. 【C#小知识】C#中一些易混淆概念总结(二)--------构造函数,this关键字,部分类,枚举 分类: C# 2014-02-03 01:24 1576人阅读 评论(0) 收藏

    目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 继上篇对一些C#概念问题进行细节的剖析以后,收获颇多.以前,读书的时候,一句话一掠而 ...

  9. wordpress 获取分类ID,分类标题,分类描述,分类链接url函数

    get_cat_ID()    根据分类名称获取分类ID   ///// get_cat_name()    根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...

随机推荐

  1. (网页)Angular.js 中 copy 赋值与 = 赋值 区别

    转自st.gg Angular.js 中 copy 赋值与 = 赋值 区别 为什么用 $scope.user = $scope.master; $scope.master 会跟着 $scope.use ...

  2. Excel两列查找重复值

    判断A列的值在B列是否存在,如果存在则输出“yes” 在C1单元格使用如下公式: =IF(COUNTIF(A:A,B2)>0,"yes","")

  3. VScode启动后cup100%占用的解决方法

    新安装的vscode,版本1.29.1.启动后,cpu占用一直是100%,非常的卡.百度以下,找到了解决方法,整理一下. 解决方法:在VScode中文件->首选项->设置->搜索-& ...

  4. 【PAT】B1042 字符统计(20 分)

    /* 15分的题很简单,但是自己写的时候在输入数据时没有考虑好下标 另外有忘记了输入字符时考虑是否有\n */ #include<stdio.h> #include<algorith ...

  5. MySQL 1130 - Host 127.0.0.1 is not allowed to connect to this MySQL server

    在开发中为了让开发更方便,在本地配置环境,希望可以直接访问服务器上的MySQL数据库,更方便的管理数据库, 需要在本地远程连接linux服务器的本地数据库,直接用数据库管理工具连接出现如下报错1130 ...

  6. Nginx使用教程(一):下载并编译安装Nginx

    安装依赖 <br\>我们已经选择下载程序源代码进行手动编译,而不是使用软件包管理器(如Yum,Aptitude或Yast)进行安装. 这个选择有两个原因. 首先,软件包可能不包含在您的Li ...

  7. 【HDU4507】恨7不成妻

    Description 单身! 依然单身! 吉哥依然单身! DS级码农吉哥依然单身! 所以,他生平最恨情人节,不管是214还是77,他都讨厌! 吉哥观察了214和77这两个数,发现: 2+1+4=7 ...

  8. SALALchemy Session与scoped_session的源码分析

    我们发现Session与scoped_session都有一些方法: 但是scoped_session的源码里面没有设置这些方法让我们从源码里去窥探下源码在哪里设置了这些方法: Session里面的方法 ...

  9. xiaowuga poj3735—Training little cats(特殊操作转化为矩阵操作)

    题意:有n只猫,对其进行k次操作,然后反复这样操作m次. 其中g 表示 i 猫加1, e表示 i 猫为0:s表示  i 与 j 猫互换. 解释一下样例: 3 1 6g 1g 2g 2s 1 2g 3e ...

  10. 使用python制作时间戳转换工具

    使用python制作时间戳转换工具 python 时间戳转日期 日期转时间戳 前言:作为一个程序员一般情况下,json和时间戳是常用的两个工具,我咨询过很多个朋友,他们一般都是通过在线工具对json进 ...