1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 朴素贝叶斯分类算法python代码

朴素贝叶斯分类算法python代码

时间:2023-11-14 23:06:00

相关推荐

朴素贝叶斯分类算法python代码

原理

条件概率 (conditional probability) 是指在事件 B 发生的情况下,事件 A 发生的概率。通常记为 P(A | B)。

贝叶斯公式中,P(A)称为"先验概率"(Prior probability),即在B事件发生之前,对A事件概率的一个判断。

P(A|B)称为"后验概率"(Posterior probability),即在B事件发生之后,对A事件概率的重新评估。

举个简单例子

例如:

假设一个学校里有60%男生和4 0%女生.女生穿裤子的人数和穿裙子的人数相等,所有男生穿裤子.一个人在远处随机看到了一个穿裤子的学生.那么这个学生是女生的概率是多少?

P(女) = 0.4

P(裤子|女) = 0.5

P(裤子) = 0.6 + 0.2 = 0.8

P(女|裤子) = P(裤子|女) * P(女) / P(裤子) = 0.5 * 0.4 / 0.8 = 0.25

朴素贝叶斯为何朴素?

在这个现实世界中,特征之间存在一定的依赖关系。(例如一个人的年龄和年薪,在大多数情况下存在明显的依赖关系。)然而,朴素贝叶斯假设样本的特征之中彼此独立,没有相关关系。正如我们所知,这个假设在现实生活中是很不真实的。

所以,我们认为朴素贝叶斯真的很“朴素”,确切的说,应该是真的很“天真”。

优缺点

优点

朴素贝叶斯算法假设了数据集属性之间是相互独立的,因此算法的逻辑性十分简单,并且算法较为稳定,当数据呈现不同的特点时,朴素贝叶斯的分类性能不会有太大的差异。换句话说就是朴素贝叶斯算法的健壮性比较好,对于不同类型的数据集不会呈现出太大的差异性。当数据集属性之间的关系相对比较独立时,朴素贝叶斯分类算法会有较好的效果。

缺点

属性独立性的条件同时也是朴素贝叶斯分类器的不足之处。数据集属性的独立性在很多情况下是很难满足的,因为数据集的属性之间往往都存在着相互关联,如果在分类过程中出现这种问题,会导致分类的效果大大降低

sklearn 中朴素贝叶斯算法用例

蘑菇分类的例子, 根据蘑菇各种特征, 用朴素贝叶斯对蘑菇分类,

读取数据

import numpy as npimport pandas as pddata = pd.read_csv('mushrooms.csv')data.head()

数据转换

# 数据转换from sklearn.preprocessing import LabelEncoderle = LabelEncoder()for col in data.columns:data[col]=le.fit_transform(data[col])samples = le.inverse_transform(data[col]) data.head()

划分训练集和测试集

from sklearn.model_selection import train_test_splity=data.iloc[:,0]x=data.iloc[:,1:]x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)

#调用朴素贝叶斯

import sklearn.naive_bayes as nbmodel = nb.GaussianNB()model.fit(x_train,y_train)model.score(x_test,y_test)

#对测试集进行预测

y_pred = model.predict(x_test)

把预测和真实值对比一下, 看看预测对和错的数量.

d = pd.DataFrame(y_pred == y_test)

预测对1506个, 预测错119个

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。