数据挖掘实战-基于机器学习的电商文本分类模型

 

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录​​​​​​​

1.项目背景

2.数据集介绍

3.技术工具

4.实验步骤

4.1数据探索

4.2数据预处理 

4.3文本归一化

4.4特征工程

4.5训练模型


1.项目背景

        随着电子商务的蓬勃发展,电商平台上产生了海量的文本数据,包括商品描述、用户评价、客服对话等。这些文本数据包含了丰富的信息,对于电商企业而言,能够充分挖掘这些信息将有助于提升用户体验、优化产品推荐、改进客户服务等方面。然而,由于文本数据的复杂性和庞大数量,传统的人工处理方式已经难以满足需求,因此利用机器学习技术对电商文本进行自动分类成为一项具有重要意义的研究任务。

        电商文本分类模型的研究对于实现自动化、智能化的电商运营管理具有重要意义。通过将文本数据划分到不同的类别,可以实现对商品的自动分类、用户评价的情感分析、客户问题的自动解答等应用,为电商企业提供更高效、精准的运营决策支持。

        在实际应用中,电商文本数据的特点包括语言风格多样、信息噪声较大、时效性强等,传统的基于规则的文本处理方法难以应对这些挑战。因此,利用机器学习技术,特别是深度学习方法,对电商文本进行自动分类成为一种更为有效的解决方案。通过构建和训练电商文本分类模型,可以更好地处理大规模、高维度的文本数据,从而提高分类的准确性和效率。

2.数据集介绍

        数据集来源于Kaggle,原始数据集共有50425条,2个变量,变量解释如下:

label:文本的标签类型。

text:文本内容。

3.技术工具

Python版本:3.9

代码编辑器:jupyter notebook

4.实验步骤

4.1数据探索

## 导包
import numpy as np 
import pandas as pd 
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
import spacy
nlp = spacy.load("en_core_web_lg")
# 加载数据
data  = pd.read_csv('ecommerceDataset.csv',header=None)
data.columns =['label','text']
data.head()

统计缺失值

data.isnull().sum()

统计重复值

data.duplicated().sum()

数据描述性统计

data.describe()

4.2数据预处理 

# 删除缺失值
data.dropna(inplace=True)
# 删除重复值
data.drop_duplicates(inplace=True)
## 标签在数据集中的分布
sns.countplot(x='label',data=data,palette='Blues')
plt.xlabel(' ')
plt.ylabel('Count')
plt.title('Target Distribution')
plt.show()

4.3文本归一化

文本归一化:它是为了在各种NLP任务中使用而对文本进行清理和预处理的过程。

过程包括几种技术,它们是:

  • 情况下归一化
  • 标点符号删除
  • 停止词删除
  • 阻止/词元化
  • 标记
  • 将缩写和同义词转换为其完整形式

每种技术都有其优点(降低维数,加快过程)和缺点(即信息丢失)。

## 删除标点符号
import stringdef remove_punct(text):punctuations =string.punctuationmytokens = ''.join(word for word in text if word not in punctuations)return mytokens
## 删除停用词
from spacy.lang.en.stop_words import STOP_WORDSdef remove_stopwords(text):stop_words = spacy.lang.en.stop_words.STOP_WORDSmytokens = [word for word in text if word not in stop_words]return mytokens
## 标记化+词形化
nlp.max_length = 19461259def tokenization(text):token = nlp(text)## lemma token = [word.lemma_ for word in token]## convert tokens into lower casetoken = [ word.lower() for word in token]return token
def text_norm(text):     punct_text = remove_punct(text)    tokens = tokenization(punct_text)   final_tokens = remove_stopwords(tokens)return final_tokens

4.4特征工程


在NLP中,特征工程涉及将文本数据转换为数字特征,以便将它们提供给ML模型。

技术:

  1. N-grams[有助于捕获上下文并有助于提高对模型的文本理解]
  2. 词类
  3. 命名实体识别
  4. 词袋[计数矢量器]
  5. TF-IDF
  6. 高级模型的词嵌入

每个技术都是基于任务需求使用的

  • 词性标注、NER、解析——用于了解语言的结构
  • CV,TF-IDF——有一个很大的语料库,想把它们简化成更少的单词
  • 单词嵌入——了解语言的语义
## CountVectorizer
from sklearn.feature_extraction.text import CountVectorizer
bow_vectorizer = CountVectorizer(tokenizer=text_norm,max_df=0.9,min_df=2,ngram_range=(1,1))## TF-IDF Vectorizer
from sklearn.feature_extraction.text import TfidfVectorizertf_idf = TfidfVectorizer(min_df=2,max_df=0.90,tokenizer=text_norm,ngram_range=(1,1))

4.5训练模型

拆分数据集

from sklearn.pipeline import Pipeline
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.model_selection import train_test_split
from sklearn.metrics import classification_report,ConfusionMatrixDisplay,confusion_matrix# train:test = 70:30
X = data['text'] 
y = data['label']X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.3,random_state=7)
print("Count Vectorizer + Logistic Regression  \n\n ")
## 使用Count Vectorizer创建管道
pipe_bow = Pipeline([('vectorizer', bow_vectorizer),('classifier', LogisticRegression())])## 拟合数据
pipe_bow.fit(X_train,y_train)
y_pred_bow = pipe_bow.predict(X_test)print(classification_report(y_test,y_pred_bow))
ConfusionMatrixDisplay(confusion_matrix(y_test,y_pred_bow),display_labels=['Books','Clothing','Electronics','Household']).plot()

print("TF_IDF + Logistic Regression  \n\n ")
## 使用TF-IDF创建一个管道
pipe_tf = Pipeline([('vectorizer', tf_idf),('classifier', LogisticRegression())])## 拟合数据
pipe_tf.fit(X_train,y_train)
y_pred_tf = pipe_tf.predict(X_test)print(classification_report(y_test,y_pred_tf))
ConfusionMatrixDisplay(confusion_matrix(y_test,y_pred_tf),display_labels=['Books','Clothing','Electronics','Household']).plot()

print("TF-IDF + SVM \n\n")
pipe_tf_svm = Pipeline([('vectorizer', tf_idf),('classifier', SVC())])# fit 
pipe_tf_svm.fit(X_train,y_train)
y_pred_svm = pipe_tf_svm.predict(X_test)print(classification_report(y_test,y_pred_svm))
ConfusionMatrixDisplay(confusion_matrix(y_test,y_pred_svm),display_labels=['Books','Clothing','Electronics','Household']).plot()

心得与体会:

通过这次Python项目实战,我学到了许多新的知识,这是一个让我把书本上的理论知识运用于实践中的好机会。原先,学的时候感叹学的资料太难懂,此刻想来,有些其实并不难,关键在于理解。

在这次实战中还锻炼了我其他方面的潜力,提高了我的综合素质。首先,它锻炼了我做项目的潜力,提高了独立思考问题、自我动手操作的潜力,在工作的过程中,复习了以前学习过的知识,并掌握了一些应用知识的技巧等

在此次实战中,我还学会了下面几点工作学习心态:

1)继续学习,不断提升理论涵养。在信息时代,学习是不断地汲取新信息,获得事业进步的动力。作为一名青年学子更就应把学习作为持续工作用心性的重要途径。走上工作岗位后,我会用心响应单位号召,结合工作实际,不断学习理论、业务知识和社会知识,用先进的理论武装头脑,用精良的业务知识提升潜力,以广博的社会知识拓展视野。

2)努力实践,自觉进行主角转化。只有将理论付诸于实践才能实现理论自身的价值,也只有将理论付诸于实践才能使理论得以检验。同样,一个人的价值也是透过实践活动来实现的,也只有透过实践才能锻炼人的品质,彰显人的意志。

3)提高工作用心性和主动性。实习,是开端也是结束。展此刻自我面前的是一片任自我驰骋的沃土,也分明感受到了沉甸甸的职责。在今后的工作和生活中,我将继续学习,深入实践,不断提升自我,努力创造业绩,继续创造更多的价值。

这次Python实战不仅仅使我学到了知识,丰富了经验。也帮忙我缩小了实践和理论的差距。在未来的工作中我会把学到的理论知识和实践经验不断的应用到实际工作中,为实现理想而努力。

资料获取,更多粉丝福利,关注下方公众号获取

在这里插入图片描述

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

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

相关文章

数据结构学习之顺序栈应用的案例(有效的括号)

实例要求: 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效; 有效字符串需满足的条件: 1、左括号必须用相同类型的右括号闭合; 2、左括号必须…

【面试合集】1.说说你对微信小程序的理解?优缺点?

面试官:说说你对微信小程序的理解?优缺点? 一、是什么 2017年,微信正式推出了小程序,允许外部开发者在微信内部运行自己的代码,开展业务 截至目前,小程序已经成为国内前端的一个重要业务&…

从传统到智能:机器视觉检测赋能PCB行业数字化转型!

PCB板在现代电子设备中是一个重要的组成部分,它是用来集成各种电子元器件的信息载体。在电子领域中,PCB板有着广泛的应用,而它的质量直接影响到产品的性能。随着电子科技技术和电子制造业的发展,贴片元器件的体积 变小&#xff0c…

亚马逊怎么防止店铺关联?

亚马逊(Amazon)为了确保公平竞争和防止不当行为,采取了一些措施来防止店铺关联,即通过不同的方式将多个店铺相关联,以获取不正当的竞争优势。以下是一些亚马逊防止店铺关联的主要措施: 同一经营者规定&…

VMware workstation搭建与安装AlmaLinux-9.2虚拟机

VMware workstation搭建与安装AlmaLinux-9.2虚拟机 适用于需要在VMware workstation平台安装AlmaLinux-9.2(最小化安装、无图形化界面)虚拟机。 1. 安装准备 1.1 安装平台 Windows 11 1.2. 软件信息 软件名称软件版本安装路径VMware-workstation 1…

类和对象---C++

类和对象目录 类和对象1.封装1.1 封装的意义1.2 struct和class区别1.3 成员属性设置为私有1.3.1 联系---判断圆和点的位置关系 2.对象的初始化和清理2.1 构造函数和析构函数2.2 构造函数的分类及调用2.2.1无参构造函数调用2.2.2有参构造函数调用2.2.2.1括号法2.2.2.2显式法2.2.…

微信小程序快速入门02(含案例)

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、页面导航1.…

互联网资讯精选:科技爱好者周刊 | 开源日报 No.145

ruanyf/weekly Stars: 37.4k License: NOASSERTION 记录每周值得分享的科技内容,提供大量就业信息。欢迎投稿、推荐或自荐文章/软件/资源,并可通过多种方式进行搜索。 提供丰富的科技内容每周更新可以提交工作/实习岗位支持投稿和推荐功能 GyulyVGC/…

bootloader学习笔记及SD卡启动盘制作

Bootloader介绍 在操作系统运行之前运行的一小段代码,用于将软硬件环境初始化到一个合适的状态,为操作系统的加载和运行做准备(其本身不是操作系统) Bootloader基本功能 1、初始化软硬件环境 2、引导加载linux内核 3、给linux…

旅游数据可视化大屏:一屏掌控,畅游数据之海

随着旅游业的蓬勃发展,如何有效地管理和分析旅游数据成为行业关注的焦点。旅游数据可视化大屏作为一种新兴的技术手段,为旅游业带来了前所未有的机遇和挑战。 旅游数据可视化大屏集成了丰富的数据资源,通过直观的图表、图像和交互界面&#x…

慢 SQL 的优化思路

分析慢 SQL 如何定位慢 SQL 呢? 可以通过 slow log 来查看慢SQL,默认的情况下,MySQL 数据库是不开启慢查询日志(slow query log)。所以我们需要手动把它打开。 查看下慢查询日志配置,我们可以使用 show …

C++力扣题目654--最大二叉树

给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点,其值为 nums 中的最大值。递归地在最大值 左边 的 子数组前缀上 构建左子树。递归地在最大值 右边 的 子数组后缀上 构建右子树。 返回 nums 构建的 最大二叉树…

7、防写一个shell 命令解释器

1、代码部分 #include <stdio.h> #include <stdlib.h> #include <string.h>#define MAX_INPUT_LENGTH 100void parse_command(char *command) {// 用于存储解析后的命令和参数char cmd[MAX_INPUT_LENGTH];char args[MAX_INPUT_LENGTH];// 将输入的命令拷贝到…

微信商家转账到零钱,既能单笔又能批量,支持多商户管理

大家好&#xff0c;我是小悟 微信商家转账到零钱的功能大家应该都熟悉吧&#xff0c;为了满足商家向用户微信零钱转账的需求&#xff0c;微信支付推出【商家转账到零钱】服务&#xff0c;方便商户可以一次向单个或多个用户的微信零钱转账。 商家转账到零钱为商户提供了简便、…

计算机毕业设计----SSH高校科研管理系统平台

项目介绍 本项目包含超级管理员、管理员、教师三种角色&#xff1b; 超级管理员角色包含以下功能&#xff1a; 登录,教师管理,管理员管理等功能。 管理员角色包含以下功能&#xff1a; 登录,专业参赛奖项管理,科技论文发表管理,出版专业著作管理,科研项目立项管理,科研项目结…

常常放生,与佛心更相契

弘一法师曾说&#xff1a;“世上最好的放生&#xff0c;就是放过自己。”天地与我并生&#xff0c;万物与我为一&#xff0c;每一个众生最宝贵的是自己的生命。而人自称万物之灵&#xff0c;就应当有爱护万物、保护万物的责任心&#xff0c;心中要有慈悲和恻隐之心&#xff0c;…

金蝶云星空和吉客云单据接口对接

金蝶云星空和吉客云单据接口对接 对接系统&#xff1a;吉客云 吉客云是基于“网店管家”十五年电商ERP行业和技术积累基础上顺应产业发展需求&#xff0c;重新定位、全新设计推出的换代产品&#xff0c;从业务数字化和组织数字化两个方向出发&#xff0c;以构建流程的闭环为依归…

高级JavaScript。如何用JavaScript手撸一个富文本编辑器?

要素过多建议收藏 - 富文本编辑 基本的技术就是在空白 HTML 文件中嵌入一个 iframe 。通过 designMode 属性&#xff0c;可以将这个空白文档变成可以编辑的&#xff0c;实际编辑的则是 <body> 元素 的 HTML 。 designMode 属性有两个可能的值&#xff1a; "…

高级RAG(六): 句子-窗口检索

之前我们介绍了LlamaIndex的从小到大的检索 的检索方法&#xff0c;今天我们再来介绍llamaindex的另外一种高级检索方法: 句子-窗口检索(Sentence Window Retrieval)&#xff0c;在开始介绍之前让我们先回顾一下基本的RAG检索的流程&#xff0c;如下图所示&#xff1a; 在执行基…

Fedora 36 正式发布稳定的Linux桌面版本

Fedora 36今天发布&#xff0c;这是最近一段时间以来又一个强大、前沿而又稳定可靠的Linux发行版本&#xff0c;除了这些特点外&#xff0c;Fedora 36还在原先的基础上增加了新的功能和细节打磨。 Fedora 36使用GNOME 42作为其默认的Fedora工作站桌面环境。 OpenSSL 3.0&#x…