文本分类,垃圾邮件分类数据处理

文本分类,垃圾邮件分类数据处理



import pandas as pd
df = pd.read_csv("spam.csv",encoding="ISO-8859-1")
df.head()

在这里插入图片描述

df.drop(["Unnamed: 2","Unnamed: 3","Unnamed: 4"],axis=1,inplace=True)  #删除无用的三列

在这里插入图片描述

df.isna().sum() #查看每一列各有多少空值
df.duplicated().sum()  #有多少重复列
df.drop_duplicates(keep="first",inplace=True) #删除重复值,只保留第一个
df.duplicated().sum()  #有多少重复列

在这里插入图片描述

df.rename(columns={'v1':'label','v2':'text'},inplace=True) #修改列名

在这里插入图片描述

from sklearn.preprocessing import LabelEncoder    #导入标签编码化
Encoder = LabelEncoder()
df["label"] = Encoder.fit_transform(df["label"])  
df.head()

在这里插入图片描述

from sklearn.feature_extraction.text import TfidfVectorizer  #导入文本向量化
tfidf_vectorizer = TfidfVectorizer(stop_words='english')
X_tfidf = tfidf_vectorizer.fit_transform(df["text"])
print(X_tfidf)

这段代码是使用Python的scikit-learn库中的TfidfVectorizer来对文本数据进行处理。具体地,它将文本数据转换为TF-IDF特征向量。下面是代码的逐行解释:

tfidf_vectorizer = TfidfVectorizer(stop_words=‘english’)
这行代码创建了一个TfidfVectorizer对象,并设置了其参数stop_words为’english’。这意味着在文本处理过程中,英语中的常用停用词(如"the", “and”, "is"等)会被自动忽略。

X_tfidf = tfidf_vectorizer.fit_transform(df[“text”])

  • fit: 它学习文本数据中的词汇。具体地说,它会查看df["text"]中的所有文本,并构建一个词汇表,其中的每个单词都会被分配一个独特的整数ID。停用词(在此为英语停用词)会被忽略。
  • transform: 它将文本数据转换为TF-IDF特征向量。TF-IDF是Term Frequency-Inverse Document Frequency的缩写,它是一种用于信息检索和文本挖掘的常用加权技术。TF-IDF值旨在反映一个词在特定文档中的重要性。结果X_tfidf是一个稀疏矩阵,其中每一行代表df["text"]中的一个文本,每一列代表词汇表中的一个单词。矩阵中的每个值都是对应单词在对应文本中的TF-IDF值。
X,y = X_tfidf,df['label']
from sklearn.model_selection import train_test_split                 #数据分割
X = X_tfidf
y = df["label"]
# 将数据集分割为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
print("训练集特征形状:", X_train.shape)
print("测试集特征形状:", X_test.shape)
print("训练集标签形状:", y_train.shape)
print("测试集标签形状:", y_test.shape)

然后就可以应用模型进行分类回归预测

  • 9
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于贝叶斯分类的中文垃圾信息分类识别核心核心代码,可直接运行的源程序。public void loadTrainingDataChinies(File trainingDataFile,String infoType) { //加载中文分词其 NLPIR.init("lib"); // System.out.println(trainingDataFile.isFile()+"=============="); // 尝试加载学习数据文件 try { // 针对学习数据文件构建缓存的字符流,利用其可以采用行的方式读取学习数据 BufferedReader fileReader = new BufferedReader(new FileReader( trainingDataFile)); // 定义按照行的方式读取学习数据的临时变量 String data = ""; // 循环读取学习文件中的数据 while ((data = fileReader.readLine()) != null) { // System.out.println("*****************************"); //System.out.println(data+"000000000000000000000"); // 按照格式分割字符串,将会分割成两部分,第一部分为ham或spam,用于说明本行数据是有效消息还是垃圾消息,第二部分为消息体本身 //String[] datas = data.split(":"); // 对消息体本身进行简单分词(本学习数据均为英文数据,因此可以利用空格进行自然分词,但是直接用空格分割还是有些简单粗暴,因为没有处理标点符号,大家可以对其进行扩展,先用正则表达式处理标点符号后再进行分词,也可以扩展加入中文的分词功能) //首先进行中文分词 // System.out.println(datas[1]+"------------------------"); //if(datas.length>1) { //System.out.println(datas.length); String temp=NLPIR.paragraphProcess(data, 0); //System.out.println(temp); String[] words = temp.split(" ");

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值