python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

技术python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析这篇文章将为大家详细讲解有关python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文

本文将详细介绍朴素贝叶斯算法以及python机器学习中模型选择和调整的实例分析。边肖觉得挺实用的,分享给大家参考。希望你看完这篇文章能有所收获。

00-1010

一、概率知识基础

概率就是某件事情发生的可能性。

00-1010包含多个条件,所有条件同时成立的概率记录为:P(A,B)=P(A) * P(B)

00-1010在另一个事件B已经发生的情况下事件A的发生概率,记录为:P(A|B)

概率的特征:P(A1,A2|B)=P(A1|B)P(A2|B)

注:这个条件概率是由于A1和A2的独立性。

朴素贝叶斯的原理是,对于每个样本,计算属于每个类别的概率,并将其归入概率最高的类别。

1.概率

2.联合概率

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

直接代入实例,各部分解释如下:

P(C)=P(科技):科技文献类别概率(科技文献数量/文献总数)

p(w | c)=p(‘情报’,‘发展’|科技):科技文献这类文章中‘情报’和‘发展’两个特征词出现的概率。注:“智力”和“发展”属于预测文献中出现的词语。科技文献中可能有更多的特征词,但并不是所有的特征词都包含在给定的文献中。因此,使用给定文档中包含的内容。

计算方法:

P(F1|C)=N(i)/N(在训练集中计算)

N(i)是F1单词在所有c类文档中出现的次数。

n是c类文件中所有单词出现次数的总和

p(' intelligence ' | technology)=' intelligence '在所有技术文档中出现的次数/所有单词在技术文档中出现的次数之和。

然后P(F1,F2.|C)=P(F1|C) * P(F2|C)

P('智能','开发' |技术)=P('智能' |技术)* P('开发|技术)

这样,可以基于预测文档中的特征词来计算预测文档属于科学技术的概率。同样的方法被用来计算其他类型的概率。无论哪个高,都算数。

3.条件概率

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

二、朴素贝叶斯

sklearn.naive_bayes。多项式b

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

00-101010

1.朴素贝叶斯计算方式

此案例的数据来自sklearn中的20个20newsgroups数据。通过提取文章中的特征词,利用朴素贝叶斯方法计算预测文章,并根据获得的概率确定文章的类别。

步骤如下:首先,将文章分为两类,一类作为训练集,另一类作为测试集。接下来,使用tfidf分别提取训练集和测试集文章的特征,从而生成训练集测试集的X。接下来,可以直接调用朴素贝叶斯算法导入训练集数据x_train、y_train并训练模型。最后,使用训练好的模型进行测试。

00-1010导入数据库:将sklearn.datasets作为dt导入

导入数据:news=dt。fetch _ 20news组(子集=“全部”)

00-1010分段使用与knn相同的方法。另外,从sklearn导入的所有数据都可以直接调用。数据以获得数据集和。目标获取目标值。

分区数据:x _ train,x _ test,y _ train,y _ test=train _ test _ split(新闻。数据,新闻。目标,test _ size=0.25)

特征值提取方法实例化:tf=TfIdfVectorizer()

训练数据特征提取:x _ train=TF。fit _ transform (x _ train)

措施

试集数据特征值提取:x_test = tf.transform(x_test)

测试集的特征提取,只需要调用transform,因为要使用训练集的标准,并且在上一步已经fit过得出训练集的标准了,测试集直接使用就行。

4.算法流程

算法实例化:mlt = MultinomialNB(alpha=1.0)

算法训练:mlt.fit(x_train, y_train)

预测结果:y_predict = mlt.predict(x_test)

5.注意事项

朴素贝叶斯算法的准确率,是由训练集来决定的,不需要调参。训练集误差大,结果肯定不好。因为算的方式固定,并且没有一个超参数可供调整。

朴素贝叶斯的缺点:假设了文档中一些词和另外一些词是独立的,相互没联系。并且是在训练集中进行的词统计,会对结果造成干扰,训练集越好,结果越好,训练集越差,结果越差。

四、分类模型的评估

1.混淆矩阵

评估标准有数种,其一是准确率,也就是对预测的目标值和提供的目标值一一对比,计算准确率。

我们也有其他更通用也更好用的评估标准,即精确率和召回率。精确率和召回率是基于混淆矩阵计算的。

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

一般情况下我们只关注召回率。

F1分类标准:

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

根据以上式子,使用精确率召回率,可计算出F1-score,该结果可反应模型的稳健性。

2.评估模型API

sklearn.metricx.classification_report

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

3.模型选择与调优

①交叉验证

交叉验证是为了让被评估的模型更加准确可信,方法如下:

>>将所有数据分成n等份

>>第一份作为验证集,其他作为训练集,得出一个准确率,模型1

>>第二份作为验证集,其他作为训练集,得出一个准确率,模型2

>>......

>>直到每一份都过一遍,得出n个模型的准确率

>>对所有的准确率求平均值,我们就得到了最终更为可信的结果。

若分为四等分,则叫做“4折交叉验证”。

②网格搜索

网格搜索主要是和交叉验证同时使用,用来调参数。比如K-近邻算法中有超参数k,需要手动指定,比较复杂,所以需要对模型预设几种超参数组合,每组超参数都采用交叉验证来进行评估,最后选出最优的参数组合建立模型。(K-近邻算法就一个超参数k,谈不上组合,但是如果算法有2个或以上超参数,就进行组合,相当于穷举法)

网格搜索API:sklearn.model_selection.GridSearchCV

python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析

五、以knn为例的模型调优使用方法

假设已经将数据以及特征处理好,并且得到了x_train, x_test, y_train, y_test,并且已经将算法实例化:knn = KNeighborsClassifier()

1.对超参数进行构造

因为算法中需要用到的超参数的名字就叫做'n_neighbors',所以直接按名字指定超参数选择范围。若有第二个超参数,在后面添加字典元素即可。

params = {'n_neighbors':[5,10,15,20,25]}

2.进行网格搜索

输入的参数:算法(估计器),网格参数,指定几折交叉验证

gc = GridSearchCV(knn, param_grid=params, cv=5)

基本信息指定好后,就可以把训练集数据fit进去

gc.fit(x_train, y_train)

3.结果查看

网格搜索算法中,有数种方法可以查看准确率、模型、交叉验证结果、每一次交叉验证后的结果。

gc.score(x_test, y_test) 返回准确率

gc.best_score_ 返回最高的准确率

gc.best_estimator_ 返回最好的估计器(返回的时候会自动带上所选择的超参数)

关于“python机器学习中朴素贝叶斯算法及模型选择和调优的示例分析”这篇文章就分享到这里了,希望

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/90605.html

(0)

相关推荐

  • 摔跤技巧,求摔跤的技巧和基本功!!!

    技术摔跤技巧,求摔跤的技巧和基本功!!!即便只是技巧摔跤技巧,也需要花时间磨练,巧劲不是那么容易掌握的。说两个基本功吧:拉皮带,转缸。 选一条自行车内胎,一劈为二,选一条,两手各握其中一端。进行一手向前一手向后的对拉训练

    生活 2021年10月28日
  • 分数解方程,5年级分数解方程该怎样做

    技术分数解方程,5年级分数解方程该怎样做一分数解方程、可以根据等式的性质来解方程。1.等式性质一:等式两边都加上(或减去)同一个数,等式仍然成立。比如: x+5=15
    解:x+5 —5=15—5
    x=10
    2.等式性质

    生活 2021年10月29日
  • 【死磕Java并发】—–深入分析volatile的实现原理

    技术【死磕Java并发】—–深入分析volatile的实现原理 【死磕Java并发】—–深入分析volatile的实现原理通过前面一章我们了解了synchronized是一个重量级的锁,虽然JVM对它做

    礼包 2021年12月15日
  • 奥运会会歌,历届奥运会的会歌是什么

    技术奥运会会歌,历届奥运会的会歌是什么·2008北京奥运应征歌曲《梦想在望》1984洛杉矶奥运会主题曲
    歌名奥运会会歌:ReachOut欢乐通宵
    词曲:[美]约翰·威廉姆斯(JohnWilliams)
    演唱:[美]莱昂纳

    生活 2021年10月31日
  • vue中怎么使用vue-cropper裁剪图片

    技术vue中怎么使用vue-cropper裁剪图片这篇文章主要讲解了“vue中怎么使用vue-cropper裁剪图片”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中

    攻略 2021年11月24日
  • Mysql索引失效的解决方法

    技术Mysql索引失效的解决方法小编给大家分享一下Mysql索引失效的解决方法,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!背景6千万数据量的

    攻略 2021年11月2日