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

一般来说,所有的ML.NET学习器都希望这些特征是一个浮点向量。因此,如果您的一些数据不是一个float,您需要将其转换为float。

如果我们的数据包含“分类”特征(比如“enum”),我们需要以某种方式对它们进行“特征化”。ML.NET提供了几种将分类数据转换为功能的方法:

  • 独热编码

  • 基于哈希的独热编码

  • 二进制编码(将类别索引转换为位序列并使用位作为特征)

如果某些类别的基数非常高(有很多不同的值,但通常只有几个),那么独热编码可能是浪费的。我们可以使用基于计数的特征选择来减少我们编码的槽的数量。

与规范化一样,将分类特征化直接包含在ML.NET学习管道中是一种很好的做法:这样您就可以确保分类转换

  • 只是在训练数据上“训练”,而不是在你的测试数据上,

  • 正确应用于所有新传入的数据,而无需在预测时进行额外的预处理。

下面是成人普查数据集[1]的分类处理示例:

Label Workclass education marital-status occupation relationship ethnicity sex native-country-region age fnlwgt education-num capital-gain capital-loss hours-per-week
0 Private 11th Never-married Machine-op-inspct Own-child Black Male United-States 25 226802 7 0 0 40
0 Private HS-grad Married-civ-spouse Farming-fishing Husband White Male United-States 38 89814 9 0 0 50
1 Local-gov Assoc-acdm Married-civ-spouse Protective-serv Husband White Male United-States 28 336951 12 0 0 40
1 Private Some-college Married-civ-spouse Machine-op-inspct Husband Black Male United-States 44 160323 10 7688 0 40
// 创建加载器:定义数据列以及它们在文本文件中的位置。
var loader = mlContext.Data.CreateTextLoader(new[] {new TextLoader.Column("Label", DataKind.Boolean, 0),// 我们将把所有分类特征加载到一个大小为8的向量列中。new TextLoader.Column("CategoricalFeatures", DataKind.String, 1, 8),// 类似地,将所有数字特征加载到一个大小为6的向量中。new TextLoader.Column("NumericalFeatures", DataKind.Single, 9, 14),// 让我们单独加载“Workclass”列。new TextLoader.Column("Workclass", DataKind.String, 1)},hasHeader: true
);// 加载数据。
var data = loader.Load(dataPath);// 检查分类列的前10条记录以检查它们是否被正确读取。
var catColumns = data.GetColumn<string[]>(data.Schema["CategoricalFeatures"]).Take(10).ToArray();// 建造多条可选的特征化管道。
var pipeline =// 将每个分类特征转换为独热编码。mlContext.Transforms.Categorical.OneHotEncoding("CategoricalOneHot", "CategoricalFeatures")// 将所有分类特征转换为索引,并构建一个“词袋”。.Append(mlContext.Transforms.Categorical.OneHotEncoding("CategoricalBag", "CategoricalFeatures", OneHotEncodingEstimator.OutputKind.Bag))// 对workclass列进行独热编码,然后删除列集中少于10个实例的所有类别。.Append(mlContext.Transforms.Categorical.OneHotEncoding("WorkclassOneHot", "Workclass")).Append(mlContext.Transforms.FeatureSelection.SelectFeaturesBasedOnCount("WorkclassOneHotTrimmed", "WorkclassOneHot", count: 10));// 让我们训练管道,然后将其应用于同一个数据上。
var transformedData = pipeline.Fit(data).Transform(data);// 检查结果数据集的某些列。
var categoricalBags = transformedData.GetColumn<float[]>(transformedData.Schema["CategoricalBag"]).Take(10).ToArray();
var workclasses = transformedData.GetColumn<float[]>(transformedData.Schema["WorkclassOneHotTrimmed"]).Take(10).ToArray();// 当然,如果我们想训练模型,我们需要合成一个包含所有特征的浮点向量。
// 我们可以这样做:var fullLearningPipeline = pipeline// 连接3个分类管道中的2个,以及数字特征。.Append(mlContext.Transforms.Concatenate("Features", "NumericalFeatures", "CategoricalBag", "WorkclassOneHotTrimmed"))// 将数据缓存在内存中,以便下面的训练器能够访问训练样本,而无需从磁盘多次加载它们。.AppendCacheCheckpoint(mlContext)// 现在我们要训练了。我们选择了我们的FastTree训练器来完成这个分类任务。.Append(mlContext.BinaryClassification.Trainers.FastTree(numTrees: 50));// 训练模型。
var model = fullLearningPipeline.Fit(data);


参考资料

[1]

成人普查数据集: https://github.com/dotnet/machinelearning/blob/main/test/data/adult.tiny.with-schema.txt

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

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

相关文章

有钱真的能为所欲为,微软用75亿美元解决了比尔盖茨的“心头大患”

全世界只有3.14 % 的人关注了数据与算法之美2018年6月4日&#xff0c;微软在官方博客上宣布&#xff1a;以75 亿美元的价格收购了全球最大的开源代码托管平台GitHub。谁也没想到&#xff0c;微软和开源这场长达几十年的战争&#xff0c;到最后双方竟然喜结连理了。不过&#xf…

linux 逻辑卷 pe size 4.00 mib大小怎么改,linux逻辑卷的建立

开始的时候系统各目录的挂载情况如下&#xff1a;增加了一个8G大小的scsi磁盘启动系统之后。[rootpoint1 ~]#fdisk &#xfffd;Cl增加了一个sdb设别。一、分区并格式化磁盘[rootpoint1 ~]#fdisk /dev/sdb输入m是显示帮助菜单输入n创建一个分区&#xff0c;选择p创建主分区&…

svn 自动同步到web站点目录post-commit.bat

为什么80%的码农都做不了架构师&#xff1f;>>> 需求分析: 在服务器上搭建了visualSVN server &#xff0c;然后为了统一测试环境&#xff0c;又在服务器上搭建了web server。现在的需求是&#xff0c;当开发人员通过svn提交更新的时候&#xff0c;让svn自动将文件…

.NET之模型绑定和验证

介绍模型绑定就是接收将来自HTTP请求的数据映射到模型的过程。如果找不到模型属性的值&#xff0c;并不会报错&#xff0c;而是给该属性设置默认值。示例&#xff1a;比如我们有一个接口为[HttpGet("{id}")] public ActionResult<Pet> GetById(int id, bool do…

每日一笑 | 大学教室的真实写照...

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

linux调用v4l2获取视频,嵌入式Linux:V4L2视频采集操作流程和接口说明

一般操作流程(视频设备)&#xff1a;1. 打开设备文件。 int fdopen("/dev/video0",O_RDWR);2. 取得设备的capability&#xff0c;看看设备具有什么功能&#xff0c;比如是否具有视频输入,或者音频输入输出等。VIDIOC_QUERYCAP,struct v4l2_capability3. 选择视频输入…

面向对象技术——UML

UML&#xff0c;统一建模语言是一种可视化建模语言。 UML包括九种类型的图&#xff1a;用例图&#xff0c;类图&#xff0c;对象图&#xff0c;顺序图&#xff0c;协作图&#xff0c;状态图&#xff0c;活动图&#xff0c;构件图&#xff0c;及部署图&#xff0c;各种图示系统在…

面向.NET开发人员的Dapr——前言

Foreword前言With the wave of cloud adoption well underway, there is a major shift happening towards “cloud native” development, often built with microservice-architectures. These microservices are both stateless and stateful, and run on the cloud and…

美国返还中国文物,阿里谣言粉碎机获奖,教育部规范研究生培养,腾讯严打微信跑分活动,推动降低港澳漫游费,这就是今天的大新闻。...

今天是3月1日农历正月廿五今天星期五相信大家都很舍不得放下工作下面是今天的大新闻美国返还361件中国文物&#xff08;中国日报&#xff09;当地时间2月28日&#xff0c;美国政府向中国返还361件&#xff08;套&#xff09;流失文物。这些中国流失文物&#xff0c;由美国联邦调…

Linux怎么更新镜像,利用 Zsync 更新已有的 Ubuntu ISO 镜像

对! 是升级iso镜像, 不是升级系统. 从旧的镜像升级到新的镜像.可能有点迟了~大家都down好了镜像~ 我现在才有心情和时间写blog哦~由alpha的iso升到正式版都可以. 呃~ 当然,估计由alpha开始的话,下载量也与直接下载正式版区别不大~这么多人下载, 速度当然会慢喇~ 用zsync来升级镜…

你有做 Code Review 吗?

在代码的编写中有一个很重要的环节&#xff0c;经常会被忽视&#xff0c;那就是 Code Review ,据说在 Facebook、Google 这种互联网大公司&#xff0c;要求每一个提交都必须通过审查&#xff0c;对于每个工程师来说 Code Review 是一项十分重要的工作&#xff0c;甚至比写代码本…

PhotoShop CS5制作残旧的印章效果

编者按&#xff1a;不少网友喜欢个性印章效果&#xff0c;因此常常搜索个性印章在线制作。其实&#xff0c;Photoshop就可以完成个性印章制作。事实上&#xff0c;使用 Photoshop制作残旧的印章效果文字有多种方法&#xff0c;例如可以使用云彩滤镜。本文作者介绍了另一种实现方…

限时秒杀┃秒杀90%的玩具,让孩子爱上科学的彩虹实验2来了!

▲数据汪特别推荐点击上图进入玩酷屋之前小木有推荐过“彩虹实验”&#xff0c;这款是可以让孩子在探索中能够独立思考&#xff0c;主动地构建知识库&#xff0c;培养创造力。&#xff08;传送门&#xff09;让孩子们在家开展科学游戏&#xff0c;既能提升动手能力&#xff0c;…

linux accept过程,Linux协议栈accept和syn队列问题

161310 cient端收到synack后&#xff0c;根据ack值&#xff0c;使用SACK算法&#xff0c;只重传最后一个ack内容。Server端收到数据包&#xff0c;由于accept队列仍然是满的&#xff0c;所以server端处理也只是标记acked&#xff0c;然后返回。162884 client端等待几秒后&#…

感想四

2019独角兽企业重金招聘Python工程师标准>>> 随着年龄的增长&#xff0c;对人对事物的认知就越真&#xff0c;包括知识也是如此。&#xfeff; 很多年前&#xff0c;在软件开发领域中发生了一个有趣的转变&#xff0c;软件变成了系统中最为昂贵、最为重要的部分。从…

.NET Worker Service 作为 Windows 服务运行及优雅退出改进

上一篇文章我们了解了如何为 Worker Service 添加 Serilog 日志记录&#xff0c;今天我接着介绍一下如何将 Worker Service 作为 Windows 服务运行。我曾经在前面一篇文章的总结中提到过可以使用 sc.exe 实用工具将 Worker Service 安装为 Windows 服务运行&#xff0c;本文中我…

MFC的Button和Static控件

最近要写一个MFC的对话框程序&#xff0c;发现要把MFC的对话框写的有色彩点并不容易&#xff0c;不像在C#里设置属性指就好&#xff0c;而是要自己去写一些代码完成对话框的绘画操作。比如一个简单的鼠标移入、移出操作&#xff0c;都要自己去写代码。由于我只用到了Button和St…

私有云存储 linux,搭建nextcloud私有云存储网盘

本文将要为您介绍的是搭建nextcloud私有云存储网盘,具体完成步骤:简介&#xff1a;搭建个人云存储一般会想到ownCloud&#xff0c;堪称是自建云存储服务的经典。而Nextcloud是ownCloud原开发团队打造的号称是“下一代”存储.真正试用过后就由衷地赞同这个Nextcloud&#xff1a;…

我报了个税,隐私就被扒光了?

全世界只有3.14 % 的人关注了数据与算法之美1月14日&#xff0c;据外媒报道&#xff0c;美国参议院金融委员会正在向美国财政部和国税局施压&#xff0c;要求他们采取网络安全措施。相关数据显示&#xff0c;2015年美国约有700,000名纳税人身份信息遭到泄露&#xff0c;为了解决…

C# 外接(网口)双摄像头视频获取

【注意事项】------------------------------------1. 更新设备网络SDK时&#xff0c;SDK开发包【库文件】里的HCNetSDK.dll、HCCore.dll、PlayCtrl.dll、SuperRender.dll、AudioRender.dll、HCNetSDKCom文件夹、ssleay32.dll、libeay32.dll、hlog.dll、hpr.dll、zlib1.dll、lo…