传统机器学习的文本分类通常提取TFIDF或者词袋特征,然后给模型进行训练,传统的机器学习的分类模型由很多,比如逻辑回归、支持向量机、多层感知机、贝叶斯等等。利用传统机器学习方法进行文本分类的基本思路:获取数据、数据预处理(上一篇博客已经讲过了https://blog.csdn.net/weixin_44766179/article/details/89855100)、特征提取、模型训练、预测。
下面利用传统机器学习方法实现垃圾邮件分类任务。

import numpy as np
import pandas as pd
import re
from sklearn.preprocessing import LabelEncoder
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
from sklearn.feature_extraction.text import TfidfVectorizer
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
from nltk.tokenize import word_tokenize
import warningswarnings.filterwarnings('ignore')data_file = './spam.csv'df = pd.read_csv(data_file, encoding='latin1')labels = df.v1
texts = df.v2def clear_data(text):# 英文缩写替换text_abbreviation = []for item in text:item = item.lower().replace("it's", "it is").replace("i'm", "i am").replace("he's", "he is").replace("she's", "she is")\.replace("we're", "we are").replace("they're", "they are").replace("you're", "you are").replace("that's", "that is")\.replace("this's", "this is").replace("can't", "can not").replace("don't", "do not").replace("doesn't", "does not")\.replace("we've", "we have").replace("i've", " i have").replace("isn't", "is not").replace("won't", "will not")\.replace("hasn't", "has not").replace("wasn't", "was not").replace("weren't", "were not").replace("let's", "let us")text_abbreviation.append(item)# 删除标点符号、数字等其他字符text_clear_str = []for item in text_abbreviation:item = re.sub("[^a-zA-Z]", " ", item)text_clear_str.append(' '.join(item.split()))texts = []stem_porter = PorterStemmer()  # 词形归一化stop_words = stopwords.words("english")  # 停用词# 分词、词形归一化、删除停用词for item in text_clear_str:words_token = word_tokenize(item)  # 分词words = [stem_porter.stem(w) for w in words_token if w not in stop_words]texts.append(' '.join(words))return textstexts = clear_data(texts)le = LabelEncoder()
labels = le.fit_transform(labels)
# TFIDF特征提取
def features_extraction(text):vector = TfidfVectorizer()return vector.fit_transform(text).todense()features = features_extraction(texts)x_train, x_test, y_train, y_test = train_test_split(features, labels, test_size=0.2, random_state=2)
# 逻辑回归
from sklearn.linear_model import LogisticRegressionlr = LogisticRegression().fit(x_train, y_train)y_pred = lr.predict(x_test)print('accuracy_lr : ', accuracy_score(y_test, y_pred))  # 输出:0.9524663677130045
# 支持向量机
from sklearn.svm import SVCsvc = SVC(kernel='linear').fit(x_train, y_train)y_pred = svc.predict(x_test)print('accuracy_svm: ', accuracy_score(y_test, y_pred))  # 输出:0.9739910313901345
# 多层感知机
from sklearn.neural_network import MLPClassifiermlp = MLPClassifier(hidden_layer_sizes=(100, 100,)).fit(x_train, y_train)y_pred = mlp.predict(x_test)print('accuracy_mlp: ', accuracy_score(y_test, y_pred))  #   输出:0.9748878923766816
# 贝叶斯
from sklearn.naive_bayes import MultinomialNBmb = MultinomialNB().fit(x_train, y_train)y_pred = mb.predict(x_test)print('accuracy_mb: ', accuracy_score(y_test, y_pred))  # 输出:0.9623318385650225

文本分类(2)-基于传统机器学习方法进行文本分类相关推荐

  1. CS224W 图机器学习(二)--图上的传统机器学习方法

    图上的传统机器学习方法 一. Tradtion Feature-based Methods Node 一. Tradtion Feature-based Methods Node 传统机器学习方法,我 ...

  2. 【LSSVM分类】基于matlab灰狼算法优化LSSVM分类(多输入多分类)【含Matlab源码 1558期】

    ⛄一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[LSSVM分类]基于matlab灰狼算法优化LSSVM分类(多输入多分类)[含Matlab源码 1558期] 获取代码方式2: 付费专栏 ...

  3. 朴素贝叶斯文本分类java_基于朴素贝叶斯的文本分类算法

    基于朴素贝叶斯的文本分类算法 摘要:常用的文本分类方法有支持向量机.K-近邻算法和朴素贝叶斯.其中朴素贝叶斯具有容易实现,运行速度快的特点,被广泛使用.本文详细介绍了朴素贝叶斯的基本原理,讨论多项式模 ...

  4. 各种机器学习方法实现多分类(KNN,Logistics,Decision tree,byeis,SVM)以鸢尾花数据集为例

    之前做的关于分类问题大都是基于CNN实现图像分类如手写体识别-CNN实现minst识别,已有的参考也是比较多,还整理过一个关于PIMA糖尿病人数据集的分类,该问题属于对于数据的二分类问题,根据数据判断 ...

  5. [Python人工智能] 二十.基于Keras+RNN的文本分类vs基于传统机器学习的文本分类

    从本专栏开始,作者正式研究Python深度学习.神经网络及人工智能相关知识.前一篇文章分享了循环神经网络RNN的原理知识,并采用Keras实现手写数字识别的RNN分类案例及可视化呈现.这篇文章作者将带 ...

  6. 基于Python机器学习方法的电影推荐系统

    资源下载地址:https://download.csdn.net/download/sheziqiong/85745459 资源下载地址:https://download.csdn.net/downl ...

  7. 利用机器学习方法进行岩相分类

    本文引用Brendon Hall在2016年<The Leading Edge>上发表的题为"Facies classfication using machine learnin ...

  8. 分类问题的评价指标:多标签分类【基于标签度量(同多分类一样):准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1】【基于样本度量:Hamming Loss...】

    多标签分类的分类评价指标分为两大类: 基于标签上的度量:同多分类一样,在每一个标签上计算 Accuray.P.R.F-- 基于样本上的度量:又分为基于分类的度量.基于排序的度量 基于分类的度量:Sub ...

  9. 基于sklearn的贝叶斯文本分类

    本文涉及到的代码均已放置在我的github中 -->链接 1. 文本分类问题 随着互联网的发展,非结构化的文本数据急剧增加,在为人们提供更多可用信息的同时,也导致人们更难从中发现自己最感兴趣的信 ...

  10. 基于pytorch的Bi-LSTM中文文本情感分类

    基于pytorch的Bi-LSTM中文文本情感分类 目录 基于pytorch的Bi-LSTM中文文本情感分类 一.前言 二.数据集的准备与处理 2.1 数据集介绍 2.2 文本向量化 2.3 数据集处 ...

最新文章

  1. iOS下JS与OC互相调用(四)--JavaScriptCore
  2. Spring AOP无法拦截内部方法调用-- expose-proxy=true用法
  3. SpringBoot之使用RabbitMQ实现延迟队列
  4. 一款非常好看的雷姆背景的时间单页(附雷姆图片)
  5. BZOJ.3140.[HNOI2013]消毒(二分图匹配 匈牙利)
  6. C开源hash代码uthash的用法总结(1)
  7. Golang AES 加解密
  8. python3.6.5安装pip_无法在Python3.6中pip安装pickle
  9. 俄罗斯方块python代码
  10. [GUET-CTF2019]re-[SUCTF2019]SignIn-相册-[ACTF新生赛2020]usualCrypt
  11. Unity 工具 之 XChart UGUI 表格工具,轻松简单的帮你实现需要的数据图表形式,建议 Mark 一下
  12. mysql数据库学习(基础篇)
  13. jupyter notebook 302 get打不开
  14. 翻转数组,将数组倒序输出
  15. 微信渐变国旗头像来了!一键生成
  16. 国内使用cousera
  17. discuz 获取会员头像
  18. [Clickhouse 入门到精通]-单机安装部署
  19. ensp华为路由器静态配置和动态配置
  20. cypress离线安装_新思、敦泰、汇顶/赛普拉斯触控ICD万能脱机烧录测试工具TP-TEST...

热门文章

  1. DirectX11--HR宏关于dxerr库的替代方案
  2. EasyDarwin云平台:EasyCamera开源摄像机接入海康威视摄像机PS流转ES流
  3. solidworks2016安装教程及破解方法
  4. energy plus matlab,EnergyPlus EMS和ExternalInterface入门学习 [第一篇——简介]
  5. 影响世界的100个经典管理定律
  6. 北航机械学院计算机制图,北航机械制图在线作业一含答案.pdf
  7. php 连接 mysql 8.0
  8. Oracle 数据库的常用备份方法
  9. 图的深度优先遍历和广度优先遍历算法流程图
  10. myeclipse 10破解方法