逻辑回归分类器-创建词向量-情感分析

news2025/1/16 13:47:46

题目

  1. 请使用您今天学习的逻辑回归分类器对下面的聊天机器人数据进行自动分类。(3分)

https://github.com/songys/Chatbot_data(ChatbotData.csv文件)

https://raw.githubusercontent.com/songys/Chatbot_data/master/ChatbotData.csv

此聊天机器人数据位于 CSV 文件中,

它由三列组成:Q、A 和标签。

每个数据都有以下标签之一:日常生活为 0,分手为 1(负面),爱情为 2(正面)。

把这个数据的Q和A连成一句话后,

将数据打乱后,除以训练/测试数据 (8:2),

构建一个自动分类为三类 (0, 1, 2) 的逻辑回归分类器,

找出测试数据的分类准确率。

使用 scikit-learn 的 CountVectorizer 和 LogisticRegression 分类器来解决问题。

sklearn.feature_extraction.text.CountVectorizer — scikit-learn 1.2.2 documentation

sklearn.linear_model.LogisticRegression — scikit-learn 1.2.2 documentation

!wget Chatbot_data/ChatbotData.csv at master · songys/Chatbot_data · GitHub

案例

1.自己实现一个逻辑回归分类器

之前,我们了解了逻辑回归作为使用机器学习的自动文本分类方法之一。

现在,根据我们所学的知识,让我们实现我们自己的逻辑回归分类器。

我们这里要解决的问题是将英文短信(SMS)分类为普通短信或垃圾短信的问题。

换句话说,我们实现的逻辑回归分类器是一个垃圾邮件过滤器(垃圾邮件文本分类器)。

分类器实现代码取自下面的代码。

IBM Developer

1-0分类器实现过程

在创建垃圾邮件字符分类器之前,在一个名为UCI 机器学习存储库的公共数据存储库中,

让我们获取目标数据(基准数据集)。

UCI Machine Learning Repository: SMS Spam Collection Data Set

如果您查看数据的描述,正常字符被标记为“火腿”,垃圾字符被标记为“垃圾邮件”。

在这里,我们将通过将标签“火腿”更改为 0 并将“垃圾邮件”更改为 1 来准备训练数据集。

我们将按以下顺序实现垃圾邮件文本分类器。

首先获取目标文档。

将文档分成训练数据和测试(评估)数据。(训练/测试)

每个数据都经过预处理。(英文大写转小写并去掉标点符号)

统计每个单词出现的频率。

创建文档 X 字矩阵。

我们使用训练数据学习逻辑回归的权重 w 和偏差 b。

逻辑回归分类器自动将新字符(评估数据)分类为垃圾邮件或正常字符。

计算分类精度。

!wget https://archive.ics.uci.edu/ml/machine-learning-databases/00228/smsspamcollection.zip

!unzip /content/smsspamcollection.zip

import pandas as pd


sms_spam = pd.read_csv('/content/SMSSpamCollection', sep='\t', header='infer', names=['Label', 'SMS'])
print(sms_spam.shape)
sms_spam.head()

#查看数据集中ham和spam的比例

sms_spam ['Label']value_counts normalize=True

火腿0.865937

垃圾邮件0.134063

名称:标签,dtype:f1oat64

数据预处理

创建词向量

这段代码使用了scikit-learn库中的CountVectorizer类来进行文本特征提取。

具体解释如下:

1. 导入CountVectorizer类:首先,从sklearn.feature_extraction.text模块中导入CountVectorizer类。这个类用于将文本数据转换为特征向量。

2. 实例化CountVectorizer对象:通过调用CountVectorizer(),创建了一个CountVectorizer的实例对象,将其赋值给vectorizer变量。这个实例对象将用于对文本数据进行特征提取。

3. 特征提取:接下来,使用vectorizer对象的fit_transform()方法对训练集中的'SMS'列进行特征提取。fit_transform()方法会将文本数据转换为稀疏矩阵表示的特征向量。train_set['SMS']表示从训练集(train_set)中获取'SMS'列的数据。

4. X_train_final.shape:这行代码用于获取X_train_final的形状(shape),即特征提取后的稀疏矩阵的维度信息。shape是一个元组,包含两个值,分别表示矩阵的行数和列数。所以,X_train_final.shape返回的结果是一个元组,可以通过该结果了解特征提取后的稀疏矩阵的维度情况。

综上所述,这段代码的作用是使用CountVectorizer对训练集中的'SMS'列进行特征提取,并获取特征提取后稀疏矩阵的维度信息。

from sklearn.feature_extraction.text import CountVectorizer


vectorizer = CountVectorizer()   # 객체를 선언
X_train_final = vectorizer.fit_transform(train_set['SMS'])
X_train_final.shape

要将"Q"和"A"两列数据都转换成向量,你可以使用CountVectorizer对它们进行分别的特征提取。下面是示例代码:

from sklearn.feature_extraction.text import CountVectorizer

# 创建CountVectorizer对象
vectorizer_q = CountVectorizer()
vectorizer_a = CountVectorizer()

# 对"Q"列进行特征提取
X_q = vectorizer_q.fit_transform(train_set['Q'])

# 对"A"列进行特征提取
X_a = vectorizer_a.fit_transform(train_set['A'])

这样,X_qX_a分别表示经过特征提取后的稀疏矩阵,其中X_q对应于"Q"列的特征向量,X_a对应于"A"列的特征向量。

请注意,针对不同的列进行特征提取时,需要使用不同的CountVectorizer对象来独立进行处理。这样可以确保每列的特征提取都是基于该列的文本数据。

如果你希望将"Q"和"A"列的特征向量进行合并,可以使用适当的方法(例如hstackconcatenate)将它们连接起来。这将取决于你在后续处理中的需求和算法选择。

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

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

相关文章

【职业人生】如何有效的在职场当中避免工作失误和提高个人发展

《左传宣公二年》:“人谁无过,过而能改,善莫大焉。”古往今来,多少人犯过错误。强大如“智绝”的诸葛孔明,也有街亭之失。职场人更是难免会在工作中出现失误。 在职场生涯当中避免不了在工作当中带来的失误&#xff0c…

【Hadoop综合实践】手机卖场大数据综合项目分析

🚀 本文章实现了基于MapReduce的手机浏览日志分析 🚀 文章简介:主要包含了数据生成部分,数据处理部分,数据存储部分与数据可视化部分 🚀 【本文仅供参考】其中需求实现的方式有多种,提供的代码并…

从0到1搞定在线OJ

目录 一、在线OJ的的原理 二、在线OJ的使用规则 三、注意事项 1.关于作弊 2.如何防止作弊 3.输入输出格式 4.换行问题 四、经典在线OJ坑人题目以及博主被坑经历 五、提交不成功及解决方法 六、如何得心应手的拿下OJ系统 七、在线OJ的骗分技巧 在线OJ(Onl…

管理项目-查询数据

人事管理项目-查询数据模块 后端实现配置文件实体类Dao层测试前端实现1.创建Dept页面2.修改路由3 测试 后端实现 配置文件 在application.yml文件中配置数据库连接、JPA及端口等信息,代码如下: 实体类 配置完成后建立和表结构…

“出海热”仍在持续,进军东南亚市场谁能率先突围?

在油改电的趋势下,伴随钠电池车型的推出,电动两轮车市场被进一步激活。据艾瑞咨询不完全统计与估算,2022年国内两轮电动车销量约5010万辆,较去年增长15.2%,预计2023年销量达到5400万辆。持续增长的销量足以说明当下的国…

JeecgBoot低代码平台 3.5.2,仪表盘版本发布!重磅新功能—支持在线拖拽设计大屏和门户

项目介绍 JeecgBoot是一款企业级的低代码平台!前后端分离架构 SpringBoot2.x,SpringCloud,Ant Design&Vue3,Mybatis-plus,Shiro,JWT 支持微服务。强大的代码生成器让前后端代码一键生成! JeecgBoot引领…

北京君正案例:数传网关的集大成者—积木式边缘网关

数传网关的集大成者 USR-M300产品集成了数据的边缘采集、计算、主动上报和数据读写,联动控制,IO采集和控制等功能,采集协议包含标准Modbus协议和多种常见的PLC协议,以及行业专用协议;主动上报采用分组上报方式&#xf…

如何靠自学成为一名网络安全工程师?

1. 前言 说实话,一直到现在,我都认为绝大多数看我这篇文章的读者最后终究会放弃,原因很简单,自学终究是一种适合于极少数人的学习方法,而且非常非常慢,在这个过程中的变数过大,稍有不慎&#…

电脑提示d3dcompiler_47.dll缺失怎么修复?

d3dcompiler_47.dll是 Microsoft 的 DirectX 11 核心组件之一,它主要用于编译和运行 Direct3D 11 应用程序和游戏。如果您的系统中缺少这个 DLL 文件,可能会导致一些程序无法正常运行,很多游戏跟图形处理软件都会运用到。如果电脑提示“找不到…

软考A计划-系统架构师-官方考试指定教程-(1/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

Elasticsearch数据库索引及数据操作

目录结构 前言数据库初始化索引操作创建索引获取索引获取所有索引删除索引 数据操作新增POST方式PUT方式 查询主键查询全量查询search 修改全量覆盖部分修改 删除 前言 Elasticsearch安装成功情况下;使用Postman请求操作数据库;浏览器插件实现Elasticsea…

Ubuntu做深度学习+ros怎么分区

正好要重装系统了,学习以下怎么分区 买了铠侠rc20 , 1T用来做Ubuntu系统盘 整理一下要安装的东西: 1.要装cuda ,6G( 安装在 /usr/local/cuda-11.1 ) 挂载点 /usr: 存放用户程序,一般在/usr/…

轨道列车自动驾驶和汽车自动驾驶的区别

轨道列车自动驾驶和汽车自动驾驶在一些方面存在明显的区别,主要是由于它们在运行环境和技术要求上的不同。以下是一些主要区别: 运行环境:轨道列车通常在封闭的轨道系统上运行,与其他车辆和行人的交互相对较少。相比之下&#xf…

华为企业组网实例:VRRP+MSTP典型组网配置

华为企业组网实例:VRRPMSTP典型组网配置 VRRPMSTP典型组网配置实验拓扑一、VLAN配置SW3配置SW4配置 二、Trunk配置SW3配置SW4配置SW1配置SW2配置 三、链路聚合四、MSTP配置公共配置SW1配置SW2配置分别在SW3、SW4上面验证 五、VRRP配置sw1配置sw2配置 六、VRRPMSTP的…

Kafka分区消息积压排查指南

针对某个TOPIC只有几个分区积压的场景,可以采用以下方法进行排查: 消息生产是否指定key? 如果指定了消息key,那么消息会指定生产到hash(key)的分区中。如果指定了key,那么有下列几种可能: 生产该key的消息体…

决策树理论

这个文本讨论了决策树模型中的基尼系数。当数据集的所有数据属于同一类时,基尼系数为0,因为此时无需进行分类,已经属于同一类别。因此,选项B是正确的。 决策树是一种用于分类和预测的机器学习模型。基尼系数是衡量数据集纯度的指标…

Laya核心库 + 逻辑 + 资源 移植到 Vite + Vue 3 进行项目开发

Laya项目移植到Vite Vue 3 为什么写这篇文章初遇 Laya结识 Vite Vue 3Vite 构建 Vue 3 项目快速初始化项目VSCode打开项目/目录文件介绍public 目录 安装Volar扩展 导入Laya核心JS库拷贝Laya项目bin/libslibs文件夹放入Vue项目下public文件夹中 导入Laya项目逻辑拷贝Laya项目…

安装db2数据库

1.下载 安装依赖 链接:https://pan.baidu.com/s/1rpZn3H1oN8O0kn8YQMa-gQ?pwd8u9d 提取码:8u9d 需要关闭SELinux 修改配置文件vi /etc/selinux/config,将SELinux置为disabled,并重启机器。 安装缺失的32位包 从RHEL 6开始&…

正式向Win12过渡,微软为Win11开启一大波功能更新

距离 Win 11 正式发布已过去接近两年时间,为了让大家放弃老系统升级 Win 11,微软没少下功夫。 除了各种强制弹窗通知提醒升级外,微软还大刀阔斧砍掉 Win 10 功能更新,并已宣布其最后死期——2025 年 10 月。 然而这一套组合拳下…

『赠书活动 | 第十期』清华社赞助 | 《前端系列丛书》

💗wei_shuo的个人主页 💫wei_shuo的学习社区 🌐Hello World ! 『赠书活动 | 第十期』 本期书籍:《前端系列丛书》 公众号赠书:第二期 参与方式:关注公众号:低调而奢华 …