学习ML.NET(3): 导入数据集
机器学习算法需要作用于数据,用来训练算法模型。数据集通常是以纯文本文件存储的表格数据,文件的每一行是一条数据记录,每条记录由多列组成,列之间用分隔符(一般是逗号,)分开,例如前面用到过的鸢尾花数据集。
在ML.NET中,使用TextLoader将文本文件导入到数据集。使用方式如下:
new TextLoader(filePath).CreateFrom<TInput>()
filePath是数据集文件路径。TInput是数据类,数据类中的每个属性对应数据集文件中的一列,属性使用ColumnAttribute匹配指定源列的索引,例如:
[Column(")]
public float SepalLength;
CreateFrom方法包含多个参数,用于指定如何处理文本:
- useHeader:文件第一行是否为列名,默认为false
- separator:列分隔符,默认是制表符\t
- allowQuotedStrings:列值是否是有引号字符串,默认是true,例如“ABC”实际值是ABC,不包含引号
- trimWhitespace:是否去除列值结尾空白,默认是false,例如“ABC ”实际值的长度是4,包含一个空格
示例程序
假设有一个数据集test-data.txt,包含1列Id和一列文本数据,列名分别是Col1和Col2,文件内容如下:
"Col1","Col2" 1,"包含逗号和结尾空格, " 2,包含逗号, 3,包含结尾空格
创建对应的数据类,数据类属性名可以不和列名一致,只要索引对应就可以了:
public class TestData
{
[Column(")]
public float ID;
[Column(")]
public string Text;
}
创建TextLoader:
var loader = new Microsoft.ML.Data.TextLoader("test-data.txt").CreateFrom<TestData>(
useHeader: true,
separator: ',',
allowQuotedStrings: true,
trimWhitespace: true);
接着我们载入数据集:
using (var environment = new TlcEnvironment())
{
var experiment = environment.CreateExperiment();
var output = loader.ApplyStep(null, experiment) as ILearningPipelineDataStep;
experiment.Compile();
loader.SetInput(environment, experiment);
experiment.Run();
var data = experiment.GetOutput(output.Data);
using (var cursor = data.GetRowCursor((a => true)))
{
);
);
while(cursor.MoveNext())
{
;
IDGetter(ref ID);
DvText Text = new DvText();
TextGetter(ref Text);
Console.WriteLine($"ID:{ID},Text:\"{Text}\",Text长度为{Text.Length}");
}
}
}
最后的输出结果:
ID:1,Text:"包含逗号和结尾空格, ",Text长度为11 ID:2,Text:"包含逗号",Text长度为4 ID:3,Text:"包含结尾空格",Text长度为6
第一行列名被过滤。
第二行的文本列用引号引着,结果是原样输出。
第三行的文本列虽然有逗号,但是作为了分隔符。
第四行的文本列的结尾空白被去除。
学习ML.NET(3): 导入数据集的更多相关文章
- ArcGIS案例学习笔记_3_2_CAD数据导入建库
ArcGIS案例学习笔记_3_2_CAD数据导入建库 计划时间:第3天下午 内容:CAD数据导入,建库和管理 目的:生成地块多边形,连接属性,管理 问题:CAD存在拓扑错误,标注位置偏移 教程:pdf ...
- 使用catboost解决ML中高维度不平衡数据集挑战的解决方案
python风控评分卡建模和风控常识(博客主亲自录制视频教程) https://study.163.com/course/introduction.htm?courseId=1005214003&am ...
- Oracle学习——dmp文件(表)导入与导出
Oracle学习——dmp文件(表)导入与导出 2014-12-28 0个评论 来源:张文康 廊坊师范学院信息技术提高班 第九期 收藏 我要投稿 前言 关于dmp文件我们用的 ...
- nativeexcel将excel导入数据集
nativeexcel将excel导入数据集 uses nexcel; procedure Tfgoods.daoruExecute(Sender: TObject);var od: TOpenDia ...
- 机器学习算法-K-NN的学习 /ML 算法 (K-NEAREST NEIGHBORS ALGORITHM TUTORIAL)
1为什么我们需要KNN 现在为止,我们都知道机器学习模型可以做出预测通过学习以往可以获得的数据. 因为KNN基于特征相似性,所以我们可以使用KNN分类器做分类. 2KNN是什么? KNN K-近邻,是 ...
- 学习ML.NET(1): 构建流水线
ML.NET使用LearningPipeline类定义执行期望的机器学习任务所需的步骤,让机器学习的流程变得直观. 下面用鸢尾花瓣预测快速入门的示例代码讲解流水线是如何工作的. using Micro ...
- sqoop学习2(数据导入与导出)
最近学习了下这个导数据的工具,但是在export命令这里卡住了,暂时排不了错误.先记录学习的这一点吧 sqoop是什么 sqoop(sql-on-hadoop):是用来实现结构型数据(如关系型数据库) ...
- 动手学深度学习6-认识Fashion_MNIST图像数据集
获取数据集 读取小批量样本 小结 本节将使用torchvision包,它是服务于pytorch深度学习框架的,主要用来构建计算机视觉模型. torchvision主要由以下几个部分构成: torchv ...
- 学习TensorFlow,邂逅MNIST数据集
如果说"Hello Word!"是程序员的第一个程序,那么MNIST数据集,毫无疑问是机器学习者第一个训练的数据集,本文将使用Google公布的TensorFLow来学习训练MNI ...
随机推荐
- Fiddler抓包使用教程-乱码处理 Decode
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/73350344 本文出自[赵彦军的博客] 在 Fiddler 的工具栏中有一个 De ...
- sass @function,@for,@mixin 的应用
项目前提: 不同的汽车显示不同的图片,一共9种汽车:每种汽车显示不同状态的图片,一共6种状态,所以一共会有54张图片 后台接口返回汽车种类分别为:1-9,汽车状态分别为:0-5 项目需求: 根据后台返 ...
- 12-openldap使用AD密码
阅读视图 本文严重参考 Openldap 整合windows AD认证 本文其他参考 OpenLDAP使用AD密码 Configuring OpenLDAP pass-through authenti ...
- 添加RPMfusion仓库
先添加epel Fedora的意识形态很是严谨,它不会自带任何非自由组件.官方仓库不会提供一些包含有非自由组件的基本软件,比如像多媒体编码.因此,安装一些第三方仓库很有必要,这些仓库会为我们提供一些基 ...
- 02LaTeX学习系列之---TeX环境的搭建
目录 02Latex的下载与安装及其编译IDE 目录 前言 (一)Tex Live的下载 1. Tex Live官方下载网站: (二)TeXStudio 1.TeXStudio官网下载 2.TeXSt ...
- java通过传入的日期,获取所在周的周一至周日
public static void main(String[] args) { try { SimpleDateFormat sdf=new SimpleDateFormat("yyyy- ...
- Servlet的生命周期以及在Spring MVC中调用流程
接触Web时间比较久,虽然知道Servlet的生命周期但是理解却还是不够,今天刚好debug代码涉及这块就利用余下时间研究了一下. Servlet的生命周期以及处理浏览器请求的过程.Servlet接口 ...
- keystore密钥文件使用的算法-PBKDF2WithHmacSHA1 和Scrypt
PBKDF2 简单而言就是将salted hash进行多次重复计算,这个次数是可选择的.如果计算一次所需要的时间是1微秒,那么计算1百万次就需要1秒钟.假如攻击一个密码所需的rainbow table ...
- mybatis多数据源切换
文章转自https://yq.aliyun.com/articles/188540?t=t1 https://www.liaoxuefeng.com/article/00151054582348974 ...
- select * 和select 所有字段的区别
文章取自http://blog.csdn.net/u014305991/article/details/44964171 MySQL 5.1.37 表记录数41,547,002,即4000w行 使用远 ...