ML.NET Cookbook:(11)如果我的训练数据不在文本文件中怎么办?
对于ML.NET,通常演示的用例是当训练数据驻留在磁盘的某个地方时,我们使用TextLoader
来加载它。然而,在真实的训练场景中,训练数据可以在其他地方:在一堆SQL表中,从日志文件中提取,甚至动态生成。
下面是我们如何使用模式理解[1]将现有的C#IEnumerable
作为数据视图引入ML.NET。
在本例中,我们假设我们建立了客户流失预测模型,并且我们可以从生产系统中提取以下特征:
客户ID(模型忽略)
客户是否有流失(目标“标签”)
“人口统计类别”(字符串,如“年轻人”等)
最近5天的访问次数。
private class CustomerChurnInfo
{public string CustomerID { get; set; }public bool HasChurned { get; set; }public string DemographicCategory { get; set; }// 最近5天内的访问,最早到最新。[VectorType(5)]public float[] LastVisits { get; set; }
}
有了这些信息,下面就是我们如何将这些数据转换为ML.NET数据视图并对其进行训练的方法:
// 第一步:将数据加载为IDataView。
// 假设“ GetChurnData()”从某处获取并返回训练数据
IEnumerable<CustomerChurnInfo> churnData = GetChurnInfo();var trainData = mlContext.Data.LoadFromEnumerable(churnData);// 建立学习管道。
// 在我们的案例中,我们将对人口统计类别进行一次编码,然后将其与访问次数结合起来。
// 我们应用FastTree二进制分类器来预测“ HasChurned”标签。var pipeline =// 将分类功能“DemographicCategory”转换为独热编码。mlContext.Transforms.Categorical.OneHotEncoding("DemographicCategoryOneHot", "DemographicCategory")// 将所有分类特征转换为索引,并构建一个“词袋”。.Append(mlContext.Transforms.Concatenate("Features", new[] { "DemographicCategoryOneHot", "LastVisits" }).Append(mlContext.BinaryClassification.Trainers.FastTree());var model = pipeline.Fit(trainData);
欢迎关注我的个人公众号”My IO“
参考资料
[1]
模式理解: https://github.com/dotnet/machinelearning/blob/main/docs/code/SchemaComprehension.md
ML.NET Cookbook:(11)如果我的训练数据不在文本文件中怎么办?相关推荐
- 【Designing ML Systems】第 4 章 :训练数据
- 人脸识别0-02:insightFace-模型训练与训练数据制作-史上最全
以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:944284742相互讨论技术. 人脸识别0-00:insightFace目录:https ...
- ML.NET Cookbook:(7)如何训练回归模型?
通常,为了在ML.NET中训练任何模型,您将经历三个步骤: 弄清楚训练数据如何以IDataView形式进入ML.NET. 将"学习管道"构建为一系列基本的"运算符&quo ...
- PyTorch 1.7发布,支持CUDA 11、Windows分布式训练
机器之心报道 参与:魔王.小舟 昨日,PyTorch 团队发布 PyTorch 1.7 版本.该版本增添了很多新特性,如支持 CUDA 11.Windows 分布式训练.增加了支持快速傅里叶变换(FF ...
- ML之DT:基于简单回归问题训练决策树(DIY数据集+七种{1~7}深度的决策树{依次进行10交叉验证})
ML之DT:基于简单回归问题训练决策树(DIY数据集+七种{1~7}深度的决策树{依次进行10交叉验证}) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for iDepth in ...
- ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较)
ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for i in range(1, len(xPl ...
- ML.NET Cookbook:(20)我如何定义自己的数据转换?
ML.NET有很多内置的转换器,但是我们不可能涵盖所有内容.不可避免地,您将需要执行自定义的用户定义操作.为此,我们添加了MLContext.Transforms.CustomMapping就是为了这 ...
- ML.NET Cookbook:(17)如何在分类数据上训练模型?
一般来说,所有的ML.NET学习器都希望这些特征是一个浮点向量.因此,如果您的一些数据不是一个float,您需要将其转换为float. 如果我们的数据包含"分类"特征(比如&quo ...
- ML.NET Cookbook:(16)什么是规范化?为什么我需要关心?
在ML.NET中,我们公开了许多参数和非参数算法[1]. 通常,参数学习器对训练数据持有一定的假设,如果不满足这些假设,训练就会受到极大的阻碍(有时甚至完全不可能). 最常见的假设是 所有特征的值大致 ...
最新文章
- 网页布局(div布局)
- logz.io一个企业级的ELK日志分析器 内部集成了机器学习识别威胁——核心:利用用户对于特定日志事件的反馈处理动作来学习判断日志威胁 + 类似语音识别的专家系统从各方收集日志威胁信息...
- 给定2个字符串,如何计算变化(插入、删除、替换)?【levenshtein distance 算法】
- python3.6字典有序_一日一技:Python 3.6以后,字典有序
- 读书笔记 --- [基础知识点] 小结3
- ebs r12 -- adadmin: error while loading shared libraries: libclntsh.so.10.1
- android sdk 4.4.4,4.4.4 not in Android SDK manager
- px、em、rem区别介绍
- wikioi 1688 求逆序对
- mysql 修改最大连接数
- 《浪潮之巅》读书笔记3
- 如何选择使用IEnumerable, ICollection, IList
- 128 数据库基本操作
- php 递归函数 示例,php 递归函数用法示例
- 【南航计算机网络实验】Ping 命令的实现
- Inno Setup打包基本笔记
- java设计模式案例及使用
- Java-基于百度API的图片文字识别(支持中文,英文和中英文混合)【收藏】
- JavaScript 之 学习网站推荐 强推【javascript.info】
- 高电压放大器与高电流放大器该如何选择使用
热门文章
- 话里话外:流程图绘制初级:六大常见错误
- 安卓加载asset中的json文件_Android解析Asset目录下的json文件
- python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...
- Arts 第十九周(7/22 ~ 7/28)
- CodeChef Chef and Churu [分块]
- C++库(Google Breakpad)
- OpenGL中shader使用
- jquery获取文档高度和窗口高度的例子
- ipad和iphone切图_如何在iPhone,iPad和Mac上签名PDF
- Linux就该这么学---第七章(LVM逻辑卷管理器)