对于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)如果我的训练数据不在文本文件中怎么办?相关推荐

  1. 【Designing ML Systems】第 4 章 :训练数据

  2. 人脸识别0-02:insightFace-模型训练与训练数据制作-史上最全

    以下链接是个人关于insightFace所有见解,如有错误欢迎大家指出,我会第一时间纠正,如有兴趣可以加QQ:944284742相互讨论技术. 人脸识别0-00:insightFace目录:https ...

  3. ML.NET Cookbook:(7)如何训练回归模型?

    通常,为了在ML.NET中训练任何模型,您将经历三个步骤: 弄清楚训练数据如何以IDataView形式进入ML.NET. 将"学习管道"构建为一系列基本的"运算符&quo ...

  4. PyTorch 1.7发布,支持CUDA 11、Windows分布式训练

    机器之心报道 参与:魔王.小舟 昨日,PyTorch 团队发布 PyTorch 1.7 版本.该版本增添了很多新特性,如支持 CUDA 11.Windows 分布式训练.增加了支持快速傅里叶变换(FF ...

  5. ML之DT:基于简单回归问题训练决策树(DIY数据集+七种{1~7}深度的决策树{依次进行10交叉验证})

    ML之DT:基于简单回归问题训练决策树(DIY数据集+七种{1~7}深度的决策树{依次进行10交叉验证}) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for iDepth in ...

  6. ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较)

    ML之DT:基于简单回归问题训练决策树(DIY数据集+三种深度的二元DT性能比较) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 for i in range(1, len(xPl ...

  7. ML.NET Cookbook:(20)我如何定义自己的数据转换?

    ML.NET有很多内置的转换器,但是我们不可能涵盖所有内容.不可避免地,您将需要执行自定义的用户定义操作.为此,我们添加了MLContext.Transforms.CustomMapping就是为了这 ...

  8. ML.NET Cookbook:(17)如何在分类数据上训练模型?

    一般来说,所有的ML.NET学习器都希望这些特征是一个浮点向量.因此,如果您的一些数据不是一个float,您需要将其转换为float. 如果我们的数据包含"分类"特征(比如&quo ...

  9. ML.NET Cookbook:(16)什么是规范化?为什么我需要关心?

    在ML.NET中,我们公开了许多参数和非参数算法[1]. 通常,参数学习器对训练数据持有一定的假设,如果不满足这些假设,训练就会受到极大的阻碍(有时甚至完全不可能). 最常见的假设是 所有特征的值大致 ...

最新文章

  1. 网页布局(div布局)
  2. logz.io一个企业级的ELK日志分析器 内部集成了机器学习识别威胁——核心:利用用户对于特定日志事件的反馈处理动作来学习判断日志威胁 + 类似语音识别的专家系统从各方收集日志威胁信息...
  3. 给定2个字符串,如何计算变化(插入、删除、替换)?【levenshtein distance 算法】
  4. python3.6字典有序_一日一技:Python 3.6以后,字典有序
  5. 读书笔记 --- [基础知识点] 小结3
  6. ebs r12 -- adadmin: error while loading shared libraries: libclntsh.so.10.1
  7. android sdk 4.4.4,4.4.4 not in Android SDK manager
  8. px、em、rem区别介绍
  9. wikioi 1688 求逆序对
  10. mysql 修改最大连接数
  11. 《浪潮之巅》读书笔记3
  12. 如何选择使用IEnumerable, ICollection, IList
  13. 128 数据库基本操作
  14. php 递归函数 示例,php 递归函数用法示例
  15. 【南航计算机网络实验】Ping 命令的实现
  16. Inno Setup打包基本笔记
  17. java设计模式案例及使用
  18. Java-基于百度API的图片文字识别(支持中文,英文和中英文混合)【收藏】
  19. JavaScript 之 学习网站推荐 强推【javascript.info】
  20. 高电压放大器与高电流放大器该如何选择使用

热门文章

  1. 话里话外:流程图绘制初级:六大常见错误
  2. 安卓加载asset中的json文件_Android解析Asset目录下的json文件
  3. python怎么模拟浏览器交互_干货分享:python爬虫模拟浏览器的两种方法实例分析(赶紧收藏)...
  4. Arts 第十九周(7/22 ~ 7/28)
  5. CodeChef Chef and Churu [分块]
  6. C++库(Google Breakpad)
  7. OpenGL中shader使用
  8. jquery获取文档高度和窗口高度的例子
  9. ipad和iphone切图_如何在iPhone,iPad和Mac上签名PDF
  10. Linux就该这么学---第七章(LVM逻辑卷管理器)