我是靠谱客的博主 粗暴大侠,最近开发中收集的这篇文章主要介绍python支持向量运算吗_了解朴素贝叶斯和支持向量机及其在Python中的实现,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

了解朴素贝叶斯和支持向量机及其在Python中的实现

在这个数字世界中,垃圾邮件是每个人都面临的最麻烦的挑战。向用户发送垃圾邮件会导致各种问题,进而可能导致经济损失。

通过垃圾邮件,我们损失了内存空间,计算能力和速度。要删除这些垃圾邮件,我们需要花费时间。已经开发出许多方法来过滤垃圾邮件,并获得不同程度的成功。

决策面

在本文中,我们将讨论朴素贝叶斯分类器和支持向量分类器,并实现这些机器学习模型来过滤垃圾短信并比较结果。

本文概要

朴素贝叶斯分类器

支持向量机(SVM)

数据集下载

数据预处理和模型构建

结果

1,朴素贝叶斯分类器

朴素贝叶斯是一种用于分类问题的受监督机器学习算法。它基于贝叶斯定理。之所以称为天真,是因为其天真的假设了预测变量之间的条件独立性。

它假定一个类中的所有要素彼此无关。

为了解释朴素贝叶斯算法,首先,我们将看到贝叶斯定理。

贝叶斯定理:

让我们考虑两个事件A和B。我们使用以下公式使用P(B),P(A),P(A / B)计算后验概率P(B / A)。

朴素贝叶斯SVM-后验概率

其中P(B / A)是后验概率,

P(B)是先验概率,

当我们具有单个特征时,很容易计算后验概率。但是,当我们具有两个或多个特征时,由于有时会得出零概率问题,因此很难计算后验概率。

因此,我们采用条件

独立性的朴素假设来计算后验概率。

当我们有

预测变量:[X1,X2]和

目标:Y

计算后验概率的公式是-

朴素贝叶斯SVM-后验概率公式

为P(X1,X2 / Y = 1)取条件独立

朴素贝叶斯SVM-条件概率

这是使用朴素贝叶斯分类器计算后验概率的公式。

2.支持向量机(SVM)

这是一种监督的机器学习算法,通过它我们可以执行回归和分类。

在SVM中,数据点绘制在n维空间中,其中n是要素数量。然后,通过选择区分两个类别的合适超平面来完成分类。

在n维空间中,超平面具有(n-1)个维。

朴素贝叶斯SVM-超平面空间

我们假设类是线性可分离的。

方程的符号有助于对类别进行分类,方程的大小有助于了解观测距离超平面有多远。当幅度很高时,我们就可以更确定类的分配。

从超平面到任一类的数据点的最小距离称为边距。我们需要有一个最大的余量,以便它具有很高的幅度。因此,此超平面称为最大边距分类器。

支持向量是位于边缘或违反影响超平面的边缘的观测值。支持向量支持

超平面。

超级飞机

在支持向量分类器中,我们有一个具有软余量的最大余量分类器(某些观察结果可能会违反此余量)。

3.下载数据集

SMS垃圾邮件收集数据集来自UCI机器学习存储库。该数据集是公开的SMS标签消息集,这些消息在2012年用于移动电话垃圾邮件研究。该数据集包含5572条消息,其中4825条是火腿邮件,而747条是垃圾邮件。在此数据集中,每一行均以消息的标签开头,然后是文本。

数据集链接: https : //archive.ics.uci.edu/ml/datasets/SMS+Spam+Collection

4.数据预处理和使用的模型

数据集有两列:

标签数据类别(火腿或垃圾邮件)和

文字讯息

其他不需要的列将被删除。

#导入软件包:

import pandas as pd

import numpy as np

#读取数据集:

sms_data =

pd.read_csv("spam.csv"

我们删除最后四列,因为最后三列没有任何值,并且我们不需要长度列。

sms_data.drop(labels = ['Unnamed: 2'

sms_data.head()

现在,我们将创建一个语料库并追加消息,在将消息追加到语料库之前,我们需要遵循某些预处理步骤。

我们导入“ re”包,并删除标点符号,特殊字符并将所有字符转换为小写。

现在,我们需要将消息拆分为多个单词,以删除停用词并执行词干分析。

我们从NLTK包中导入英语停用词,如果在句子中找到它们,则将其删除。

在删除停用词时,我们执行词干处理,即如果该单词不是停用词,它将被转换为其根形式。这称为“阻止”。

然后,我们再次将列表中的单词连接在一起,以形成没有任何停用词的消息,所有单词都将以其

根形式出现。然后,我们将消息附加到语料库。

#导入软件包:

import re

import nltk

from nltk.corpus import stopwords

from nltk.stem.porter import PorterStemmer

#创建完善的消息语料库:

stemming = PorterStemmer()

corpus = []

for i in range (0

s1 = re.sub('[^a-zA-Z]'

s1.lower()

s1 = s1.split()

s1 = [stemming.stem(word) for word in s1 if word not in set(stopwords.words('english'))]

s1 = ' '.join(s1)

corpus.append(s1)

corpus[50]

语料库

我们将从Scikit-learn库中导入Count-Vectorizer来对文本进行标记化和向量化。

#导入包:

from sklearn.feature_extraction.text import CountVectorizer

countvectorizer =CountVectorizer()

通过使用Count-Vectorizer,我们将标记文本文档的集合并构建词汇表,该词汇表还用于编码新文档。

要使用此Count-Vectorizer,首先,我们将创建Count-Vectorizer类的实例。

然后,fit()函数用于从文档中学习词汇,而transform()函数用于编码为矢量。

x = countvectorizer.fit_transform(corpus).toarray()

该向量表示整个词汇的长度,以及每个单词出现在文档中的次数的计数。

现在我们有了一个数字矢量,它是从文本字符串转换而来的。

print(x)

朴素贝叶斯SVM-打印

y = sms_data['v1'].values

print(y)

朴素贝叶斯SVM-打印y

火车–测试拆分

我们将数据划分为训练,并使用训练测试比例为70:30的随机测试进行测试。

#分割火车和测试数据:

from sklearn.model_selection import train_test_split

x_train

楷模:

1.多项式朴素贝叶斯。

#导入包装和拟合模型:

from sklearn.naive_bayes import MultinomialNB

multinomialnb = MultinomialNB()

multinomialnb.fit(x_train

多项式-朴素贝叶斯SVM

#根据测试数据进行预测:

y_pred = multinomialnb.predict(x_test)

y-pred-天真贝叶斯SVM

2.支持向量机

#导入包装和配件型号:

from sklearn.svm import LinearSVC

linearsvc = LinearSVC()

linearsvc.fit(x_train

朴素贝叶斯SVM-线性SVC

#根据测试数据进行预测:

y_pred = linearsvc.predict(x_test)

朴素贝叶斯SVM-y_pred

5.我们模型的结果

#导入软件包:

from sklearn.metrics import classification_report

from sklearn.metrics import accuracy_score

print(classification_report(y_test

accuracy_score(y_test

1.多项式朴素贝叶斯。

朴素贝叶斯SVM-多项朴素贝叶斯

准确度百分比:98.026

2. SVM。

支持向量机

准确度百分比:98.325

从以上结果可以看出,朴素贝叶斯模型和SVM在对垃圾邮件进行分类方面表现良好,准确率达98%,但是将这两个模型进行比较,则SVM的表现更好。这些模型可以有效地预测邮件是否为垃圾邮件。

题库

最后

以上就是粗暴大侠为你收集整理的python支持向量运算吗_了解朴素贝叶斯和支持向量机及其在Python中的实现的全部内容,希望文章能够帮你解决python支持向量运算吗_了解朴素贝叶斯和支持向量机及其在Python中的实现所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部