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仓库中的问题。
最新文章
- Android Studio快捷键
- Java中的进程和线程
- HTML教程-各窗口间相互操作(Frame Target)
- Android Studio安装使用图文教程(转)
- canvas drawImage异步特性
- 根据文字返回Label高度
- 23种设计模式学习一(单列模式)singleton
- samba服务设置,Linux系统和Windows文件共享
- Java Web应用中调优线程池的重要性
- kali 安装中文输入法
- ruby字符串相关方法
- 转:assert()函数用法总结
- http staus汇总
- Node.js之断言处理
- Python的数据库操作(pymysql)
- jQuery事件合成
- 【Spring Boot】构造、访问Restful Webservice与定时任务
- Linux系统挂载windows共享目录报错mount error(121):remote error I/O error
- autocomplate 学习
- HDU4403-模拟、数学
热门文章
- linux上用newman+postman进行自动化测试
- servlet及jsp之间的请求转发
- (网页)SQLserver中在上线的项目中遇到科学计数法怎么办?
- Scrapy爬取遇到的一点点问题
- 校园网下对VMware网络的配置
- Servlet (HttpServletResponse)对象
- Linux小技巧之:两种方法统计访问web网站的前10个IP
- January 21st, 2018 Week 3rd Sunday
- Nginx使用教程(一):Nginx编译参数详解
- HTML5原生拖拽事件的值传递(三dataTransfer对象)