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

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

假设我们有一个带有float数据的'Income'列的数据集,我们要计算'Label',如果收入超过50000,则等于true,否则等于false

这是我们如何通过自定义转换器执行此操作的方法:

// 为我们打算使用的所有输入列定义一个类。
class InputRow
{public float Income { get; set; }
}// 为我们打算产生的所有输出列定义一个类。
class OutputRow
{public bool Label { get; set; }
}public static IDataView PrepareData(MLContext mlContext, IDataView data)
{// 定义操作代码。Action<InputRow, OutputRow> mapping = (input, output) => output.Label = input.Income > 50000;// 创建一个定制的估计器并转换数据。var estimator = mlContext.Transforms.CustomMapping(mapping, null);return estimator.Fit(data).Transform(data);
}

您还可以在估计器管道中插入自定义映射:

public static ITransformer TrainModel(MLContext mlContext, IDataView trainData)
{// 使用自定义操作。Action<InputRow, OutputRow> mapping = (input, output) => output.Label = input.Income > 50000;// 构建学习管道。var estimator = mlContext.Transforms.CustomMapping(mapping, null).AppendCacheCheckpoint(mlContext).Append(mlContext.BinaryClassification.Trainers.FastTree(labelColumnName: "Label"));return estimator.Fit(trainData);
}

请注意,您需要将mapping操作变成“纯函数”

  • 它应该是可重入的(我们将从多个线程同时调用它)

  • 它不应该有副作用(我们可以在任何时候任意调用,或忽略调用)

一个重要的警告是:如果希望自定义转换成为已保存模型的一部分,则需要为其提供contractName。在加载时,您需要向MLContext注册自定义转换器。

下面是一个完整的示例,用于保存和加载带有自定义映射的模型。

/// <summary>
/// 一个类包含我们的模型所需的自定义映射功能。
/// 
/// It has a <see cref="CustomMappingFactoryAttributeAttribute"/> on it and
/// derives from <see cref="CustomMappingFactory{TSrc, TDst}"/>.
/// </summary>
[CustomMappingFactoryAttribute(nameof(CustomMappings.IncomeMapping))]
public class CustomMappings : CustomMappingFactory<InputRow, OutputRow>
{// 这是自定义映射。我们现在将它分离为一个方法,以便在训练和加载中都可以使用它。public static void IncomeMapping(InputRow input, OutputRow output) => output.Label = input.Income > 50000;// 当加载模型以获取映射操作时,将调用此工厂方法。public override Action<InputRow, OutputRow> GetMapping(){return IncomeMapping;}
}
// 构建学习管道。请注意,我们现在为自定义映射提供了一个约定名称:否则我们将无法保存模型。
var estimator = mlContext.Transforms.CustomMapping<InputRow, OutputRow>(CustomMappings.IncomeMapping, nameof(CustomMappings.IncomeMapping)).Append(mlContext.BinaryClassification.Trainers.FastTree(labelColumnName: "Label"));// 如果内存足够,我们可以将数据缓存在内存中,以避免在多次访问文件时从文件中加载数据。
var cachedTrainData = mlContext.Data.Cache(trainData);// 训练模型
var model = estimator.Fit(cachedTrainData);// 保存模型。
using (var fs = File.Create(modelPath))mlContext.Model.Save(model, fs);// 现在假设我们在一个不同的过程中。// 向ComponentCatalog注册包含“CustomMappings”的程序集,以便在加载模型时可以找到它。
newContext.ComponentCatalog.RegisterAssembly(typeof(CustomMappings).Assembly);// 现在我们可以加载模型了。
ITransformer loadedModel = newContext.Model.Load(modelPath, out var schema);

欢迎关注我的个人公众号”My IO“

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301459.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于centos5.8源码安装nginx之LNMP

LNMP 指的是什么呢&#xff0c;这里可以“望文生义”&#xff0c;其是linux NGINX Mysql PHP的组合。每一种工具的安装都有其特长来吸引我们去使用它&#xff0c;对此就要了解其组合的各个工具的特点&#xff1a;Linux&#xff1a;不用多说&#xff0c;这是我们都熟知的以开…

cheatengine找不到数值_“不会找问题”,只配在底层,最高效的思维方式导图,人生开挂!...

点击右上角【关注】&#xff0c;每天获取企业经营管理秘籍&#xff01;总裁周刊&#xff0c;与您一同成长&#xff01;声明&#xff1a;文章来源于zhang_liangj&#xff0c;不代表高管周刊立场&#xff0c;如有异议&#xff0c;请私信&#xff01;文|张良计现在&#xff0c;我们…

比乐高便宜十倍!4合1电动遥控积木玩法百变

▲数据汪特别推荐点击上图进入玩酷屋小木用真金白银来给大家送礼物啦&#xff0c;特别感谢这些年一直以来大家对我们的支持&#xff0c;才让我们越做越好。&#xff08;点我参与送礼活动&#xff09;前几天与同事在聊天&#xff0c;他说小时候的梦想就是拥有很多很多的玩具。没…

windows server 2003中 如何限制用户修改计算机名,Windows命令行下修改文件访问控制权限 -电脑资料...

随着Windows XP/Server 2003的流行&#xff0c;越来越多的用户开始选择NTFS文件系统&#xff0c;NTFS的好处自然是大大增强了系统的安全性&#xff0c;在“安全”标签页下&#xff0c;我们可以在这里为不同级别的用户设置相应的访问控制权限&#xff0c;包括完全控制、修改、读…

异步流使用注意事项

异步流是C#8.0出来的特性&#xff0c;可以让流式数据以尽快分批的方式返回&#xff0c;而不像之前那样&#xff0c;当全部获取到数据后&#xff0c;再返回。下面的例子的场景有点特殊&#xff0c;查询一个较多的数据&#xff0c;为了查询不给数据带来很大压力&#xff0c;做成一…

python类库32[多线程同步Lock+RLock+Semaphore+Event]

2019独角兽企业重金招聘Python工程师标准>>> 一 多线程同步 由于CPython的python解释器在单线程模式下执行&#xff0c;所以导致python的多线程在很多的时候并不能很好地发挥多核cpu的资源。大部分情况都推荐使用多进程。 python的多线程的同步与其他语言基本相同…

加个ing是什么意思_take的意思竟然是“要求”?奇奇怪怪的熟词僻义打卡终于来了!...

慢慢来&#xff0c;比较快。只要不喊停&#xff0c;我们就继续。考研人被玩坏了&#xff0c;出题人&#xff1a;只要我不承认&#xff0c;就没有人能阻止我。下面盘点一下出题人的x操作&#xff1a;2020年英语二完形&#xff1a;trying&#xff0c;乍一看是不是和“尝试”有关&…

每日一笑 | 今天是植树节,我想在你心里种点逼树

全世界只有3.14 % 的人关注了数据与算法之美&#xff08;图片来源于网络&#xff0c;侵权删&#xff09;

怎么用计算机计算出选手最后得分,WPS技巧:TRIMMEAN函数计算选手得分

如图1就是某大奖赛的选手评分情况表。在“最后得分”一项中&#xff0c;我们可以用LARGE函数或SMALL函数来计算&#xff0c;如在J3中输入下面的公式&#xff1a;AVERAGE(LARGE(B3:I3,{2,3,4,5,6,7}))即可以得到正确的结果。这里&#xff0c;我们介绍ET提供的内部平均值函数——…

Windows 程序包管理器 1.0 正式发布

在 Microsoft Build 2021 开发者大会上&#xff0c;微软正式发布 Windows Package Manager&#xff08;程序包管理器&#xff09;1.0 正式版&#xff0c;目前在 GitHub 上已有超过 1600 个程序包可供下载。Windows 程序包管理器是一个综合的程序包管理器解决方案&#xff0c;由…

mindray心电监护仪使用说明_怎么看监护仪上的参数

血压病人的饮食治疗&#xff0c;是以减少钠盐、减少膳食脂肪并补充适量优质蛋白&#xff0c;注意补充钙和钾&#xff0c;多吃蔬菜和水果、戒烟戒酒、科学饮水为原则。①饮食宜清淡&#xff1a;提倡素食为主&#xff0c;素食方式可使高血压患者血压降低。因此高血压患者饮食宜清…

围棋天才柯洁怒怼央视国际记者,用实力斩获清华大学免试资格

全世界只有3.14 % 的人关注了数据与算法之美3月10 日&#xff0c;国家体育总局发布了《2019年优秀运动员免试入学推荐名单》&#xff0c;一批在体育领域获得亮眼成就的运动员们&#xff0c;将获得中国各所高校的免试入学机会。在名单上&#xff0c;数据汪找到一个熟悉的名字——…

sql按拼音排序

sql按拼音排序 sql按拼音排序select * from user order by name collate Chinese_PRC_CS_AS_KS_WS二.排序规则简介&#xff1a; 什么叫排序规则呢&#xff1f;ms是这样描述的&#xff1a;"在 microsoft sql server 2000 中&#xff0c;字符串的物理存储由排序规则控制。…

计算机专业杀毒,计算机病毒查杀

面对计算机病毒日益剧增&#xff0c;普通人的电脑中病毒的几率越来越大&#xff0c;学习几招查杀病毒的方法&#xff0c;有助于保持系统安全运行也避免一些不必要的损失。下面是学习啦小编跟大家分享的是计算机病毒查杀&#xff0c;欢迎大家来阅读学习。计算机病毒查杀步骤/方法…

Azure 上的网站如何识别不同国家和地区的用户

点击上方蓝字关注“汪宇杰博客”导语跨国服务的网站通常需要针对不同国家和地区的用户显示不同的内容。通常我们会根据用户的IP地址识别Ta所在的国家和地区&#xff0c;而自己编写代码以及购买和维护IP数据库&#xff0c;或使用三方的IP数据服务&#xff0c;是潜在的996成本。虽…

中小学不得在校内设置食品经营场所,量子摩尔定律问世,美团运营摩拜亏45亿,英伟达史上最大手笔收购,这就是今天的大新闻。...

今天是3月12日农历二月初六今天星期二去吃饭老板问要饭的吗一兄弟说我要饭的我要饭怎么觉得这对话有点怪怪下面是今天的大新闻中小学不得在校内设置食品经营场所&#xff08;中国新闻网&#xff09;据教育部网站消息&#xff0c;由教育部、国家市场监督管理总局、国家卫生健康委…

轮廓处理函数详细

ApproxChains用多边形曲线逼近 Freeman 链 CvSeq* cvApproxChains( CvSeq* src_seq, CvMemStorage* storage, int methodCV_CHAIN_APPROX_SIMPLE, double parameter0, int minimal_perimeter0, int recursive0 ); src_seq涉及其它链的链指针storage存储多边形线段位置的缓存m…

html5与课程思政,“课程思政”怎样做

&#xff3b;本站讯 ]为了提升学校教师的课程思政意识和课程思政建设水平,提高课程思政优秀案例征集水平,5月21日,教学促进与教师发展中心举办了课程思政专题线上分享会.中心主任张树永出席会议,120位教师通过雨课堂参加了直播活动.“课程思政”怎样做&#xff1f;教学案例设计…

Windows 11 快速体验:开始菜单居中,全系圆角设计!

系统类型&#xff1a;Windows 11 专业工作站版 系统版本&#xff1a;Dev系统版本号&#xff1a;OS Build 21996.1任务栏 Windows 11 任务栏上的“开始”菜单和应用程序图标由此前 Windows 操作系统中的“左对齐”样式变为“居中”。如果你不喜欢“居中”可以通过个性化设置更改…

puppeteer 鼠标定位滑块_监听滑块滑动或滑块随鼠标移动 | JShare

监听滑块滑动或滑块随鼠标移动 | JSharefork from "Column with rotated labels"var data [29,12,32,28,22,34,9,12,13,21,24,32,27,31,32,16,21,18,20];drawAdvChart();function drawAdvChart() {var option {chart : {type : column,renderTo : "container&…