C#开源跨平台机器学习框架ML.NET----二元分类情绪分析

点击蓝字关注我们

前一篇文章《C#开源跨平台机器学习框架ML.NET----介绍与环境搭建》我们简单介绍了ML.NET,这篇我们就来做一个ML.NET的Demo(二元分类任务)。

实现目标

通过我们自己预设的一些训练数据,根据输入的文本来判断情绪是积极的还是消极的

视频演示

情绪分析实现

01

创建项目

创建新项目名称为MLqingxu的项目

NuGet安装ML

右键项目引用选择管理NuGet管理嚣后在浏览里搜索ML,然后找到Microsoft.MLMicrosoft.ML.FastTree进行安装

02

创建训练模型

我们自己创建一个txt文件的训练模型

新建qingxudata.txt

右键新建项创建一个qingxudata.txt的文本文件

输入模版内容

我们在创建的txt文件中输入了一些场景的话,后面的1代表着积极的情绪,0代表着消极的情绪,一共写了16条,并不多

txt的属性设置

选择这个txt文件后,要记得把文件属性中复制到输出目录设置为如果较新则复制,这样的话会把TXT输出到程序所在目录,保存程序能加载到训练数据。

03

创建数据类

这里我们创建两个类,一个qingxubase类和一个qingxufenxi类

qingxubase.cs

qingxubase类中有两个属性,一个string类型qingxutext代表输入的场景文本,一个bool类型的isgoodorbad代表着是积极还是消极的情绪。其中上面的属性LoadColumn(数字)对应着我们的qingxudata.txt里面的列

qingxufenxi.cs

qingxufenxi类继承自qingxubase类,然后又加入了三个字段,分别是是否预测,概率及分析的分数

其中红框上需要标注字段名,因为默认的生成名称就是这对应的,如果这里不标注的话,多条预测时会找不到对应的字段

04

窗体布局

Form布局

上面为主界面的面局,我们的主窗体界面加入两个textBox,一个输入,一个显示用的,然后加入三个按钮

05

代码实现

流程

进行情绪分析的实现顺序

  1. 加载数据

  2. 生成和定型模型

  3. 评估模型

  4. 使用模型进行预测

  5. 查看结果

定义基础参数

_filepath:为我们的txt训练文件。

_mlContext:MLContext 类,所有 ML.NET 操作的起点。 初始化 mlContext 会创建一个新的 ML.NET 环境,可在模型创建工作流对象之间共享该环境。 从概念上讲,它与实体框架中的 DBContext 类似。

_qingxuDataView:ML.NET 中的数据表示为 IDataView 类。IDataView 是用于描述表格数据(数字和文本)的一种灵活且有效的方法。 可从文本文件或实时(例如,SQL 数据库或日志文件)将数据加载到 IDataView 对象。

_transformer:

加载数据

通过LoadFromTextFile加载文件数据到IDataView

利用TrainTestSplit拆分数据集以进行模型训练和测试生成TrainTestData

生成和定型模型

FeaturizeText 进行提取和转换数据

Append 添加学习算法

FIt 定型模型

评估模型

Transform  加载测试数据集

BinaryClassification.Evaluate 创建计算器

初始化训练数据

初始化训练数据就是把上面三步整合到一起,当前面三步完成后,我们就可以进行数据的预测了

输入内容单条预测

CreatePredictionEngine 创建单个测试数据

Predict 进行数据预测

多条集合预测

首先生成了一个要预测的集合

读取集合并进行预测

最后显示数据

测试结果图片

源码下载地址

GitHub:https://github.com/Vaccae/MLNetQingXu.git

-END-

Vaccae的往期经典

OpenCV

《C++ OpenCV案例实战---卡号获取

《C++ OpenCV案例实战---卡片截取(附代码)

《C++ OpenCV透视变换---切换手机正面图片》

《C++ OpenCV实战---获取数量

《C++ OpenCV实战---利用颜色分割获取数量》

《OpenCV4Android NDK方式进行Canny边缘检测》

《OpenCV4Android NDK方式TesserartOCR实时进行识别》

《OpenCV4Android NDK级联方式实时进行人脸检测》

OpenCV4Android NDK稠密光流调用

Android

《Android利用SurfaceView结合科大讯飞修改语音实别UI

《Android关于语音识别的功能实现分析(一)---结构化思维》

《Android关于语音识别的功能实现分析(二)---语义解析》

《Android根据类生成签名字符串

《Android碎片化布局fragment的实战应用

《Android中RecyclerView嵌套RecyclerView

《Android里用AsyncTask后的接口回调

.Net C#

《C#自定义特性(Attribute)讲解与实际应用

《C#根据类生成签名字符串(附DEMO下载地址)

《C++创建动态库C#调用》

《C#与三菱PLC(型号FX2N)串口通讯类

数据库及其它

《Oracel存储过程写报表实战》

《Delphi轮播视频和图片程序(用于双屏显示程序)

《SQL随机增加销售数据的脚本编写(附脚本下载地址)

SQL Server中With As的介绍与应用(三)--递归的实战应用

《Oracle通过ODBC连接SQL Server数据库

Oracle利用row_number()over()方式解决插入数据时重复键的问题

 

请扫码

给个关注

微卡智享

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Vaccae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值