ML.NET 示例:多类分类之问题分类
写在前面
准备近期将微软的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配置数据
在
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”)。
提供训练文件
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 示例:多类分类之问题分类的更多相关文章
- ML.NET 示例:二元分类之信用卡欺诈检测
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:开篇
写在前面 准备近期将微软的machinelearning-samples翻译成中文,水平有限,如有错漏,请大家多多指正. 如果有朋友对此感兴趣,可以加入我:https://github.com/fei ...
- ML.NET 示例:目录
ML.NET 示例中文版:https://github.com/feiyun0112/machinelearning-samples.zh-cn 英文原版请访问:https://github.com/ ...
- ipv4理论知识2-分类编址、ip分类、网络标识、主机标识、地址类、地址块
分类编址 ipv4的体系结构中有分类编址和无分类编址(后续会介绍到),在分类编址时,ipv4地址分为A.B.C.D.E这5类.每类占用的IP比例和个数如下图: ipv4分类识别 计算机以二进制方式存储 ...
- OC语言类的本质和分类
OC语言类的深入和分类 一.分类 (一)分类的基本知识 概念:Category 分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...
- 李洪强iOS开发之OC语言类的深入和分类
OC语言类的深入和分类 一.分类 (一)分类的基本知识 概念:Category 分类是OC特有的语言,依赖于类. 分类的作用:在不改变原来的类内容的基础上,为类增加一些方法. 添加一个分类: 文件 ...
- destoon实现调用当前栏目分类及子分类和三级分类的方法
调用当前栏目分类及子分类和三级分类是程序设计里常用的方法,本文就来详细讲述destoon实现调用当前栏目分类及子分类和三级分类的方法.具体操作如下: 在destoon中提供了如下的调用语句: 一级分类 ...
- 【C#小知识】C#中一些易混淆概念总结(二)--------构造函数,this关键字,部分类,枚举 分类: C# 2014-02-03 01:24 1576人阅读 评论(0) 收藏
目录: [C#小知识]C#中一些易混淆概念总结--------数据类型存储位置,方法调用,out和ref参数的使用 继上篇对一些C#概念问题进行细节的剖析以后,收获颇多.以前,读书的时候,一句话一掠而 ...
- wordpress 获取分类ID,分类标题,分类描述,分类链接url函数
get_cat_ID() 根据分类名称获取分类ID ///// get_cat_name() 根据分类ID获取分类名称 用法:<?phpget_cat_ID( $cat_name ...
随机推荐
- 记录修改安卓5.0系统浏览器UI遇到的部分问题
碎碎念 今年七月份本科毕业后入职一家会议平板公司,经过一个一个多月的咸鱼培训轮岗生活,接手了几个小任务,本次记录一下其中一个任务:修改安卓5.0系统浏览器UI.刚接到任务的时候,本以为是很简单的一个任 ...
- JAVA 设计模式遵循的六大基本准则
JAVA 设计模式遵循的六大基本准则 一.单一职责原则:(Single Responsibility Pinciple) 一个类只负责一项职责. 当超过一项职责需要负责时,需要增加新的类来负责新的职 ...
- SQL注入介绍
一.SQL注入概念 1.sql注入是一种将sql代码添加到输入参数中 2.传递到sql服务器解析并执行的一种攻击手法 举例:某个网站的用户名为name=‘admin’.执行时为select ...
- Oracle EBS FA 获取累计折旧
FUNCTION get_ltd_deprn(p_asset_id IN NUMBER, p_book_type_code IN VARCHAR2, p_rate_source_rule IN VAR ...
- Chrome及Chrome内核浏览器改变开发者工具字体大小
1.打开浏览器,按F12调用开发者工具 2.按Ctrl+数字加号键,可看到字体变大,按Ctrl+数字减号键,字体变小 3.重新启动浏览器后字体仍然保持修改后的字体大小
- D-Link DIR-600 - Authentication Bypass
#Exploit Title: D-Link DIR-600 - Authentication Bypass (Absolute Path Traversal Attack) # CVE - http ...
- vue打包速度优化
这是一个很头疼的问题,webpack极大的简化了前端自动化配置,但是打包速度实在是不如人意.在此之前,本人也尝试过网友的一些方法,但是,很多坑,跳进去就出不来,经过多个项目实践,现总结一下我用到的优化 ...
- CSS3 animation动画,循环间的延时执行时间
如下代码,其中的delay值为3s,但是animation按现在的规则,这个delay是指动画开始前的延时,在动画循环执行间,这个delay是不生效的. .item{ webkit-animation ...
- C#从入门到精通视频教程(2009年最新)- 视频列表
http://www.jz97.net/index.php/playlist/view/182/page/2 C#从入门到精通视频教程(2009年最新)- 视频列表
- 【BZOJ3622】已经没有什么好害怕的了
Description 已经使 Modoka 有签订契约, 和自己一起战斗的想法后 , Mami 忽然感到自己不再是孤单一人了呢. 于是, 之前的谨慎的战斗作风也消失了 , 在对 Charlotte ...