python贝叶斯模型_【挖掘模型】: Python-朴素贝叶斯分类

Paste_Image.png

利用贝叶斯定理中概率统计知识,对离散型的数据进行分类的算法

# 优点 算法易于实现和部署,执行效率和准确度高

# 缺点 适合处理离散型的数据,不适合处理连续型的数据

# 贝叶斯定理 P(A|B)= P(A∩B)/P(B) = (P(B|A)*P(A))/P(B)

# 例子:

# 症状 职业 疾病

# 打喷嚏 护士 感冒

# 打喷嚏 农夫 过敏

# 头痛 建筑工人 脑震荡

# 头痛 建筑工人 感冒

# 打喷嚏 教师 感冒

# 头痛 教师 脑震荡

# 现在来了第七个病人,是一个打喷嚏的建筑工人,他患那种疾病的概率最高?

# P(感冒|打喷嚏 * 建筑工人) = P(打喷嚏 * 建筑工人)*P(感冒)/P(打喷嚏 * 建筑工人)

# 假设打喷嚏 和 建筑工人是独立的

# P(感冒|打喷嚏 * 建筑工人) = P (打喷嚏|感冒)* P(建筑工人|感冒) *P(感冒)/ P(打喷嚏)*P(建筑工人)

# = 0.66 * 0.33 * 0.5/0.33*0.5

# P(过敏|打喷嚏 * 建筑工人) = 0

# P(脑震荡|打喷嚏 * 建筑工人) = 0

import numpy;

import pandas;

data = pandas.read_csv("F:\\python 数据挖掘分析实战\\Data\\data (3).csv");

fData = data[

["ParentIncome", 'IQ', "Gender", "ParentEncouragement"]

].to_dict('records')

tData = data["CollegePlans"]

from sklearn.feature_extraction import DictVectorizer

dictVectorizer = DictVectorizer()

pData = dictVectorizer.fit_transform(

fData

).toarray()

pData = pData[:, [1, 2, 3, 5]]

#随机重排序

permutation = numpy.random.permutation(data.shape[0])

pData = pData[permutation]

tData = tData[permutation]

#高斯贝叶斯

from sklearn.naive_bayes import GaussianNB

GNBModel = GaussianNB()

GNBModel.fit(pData[:6000], tData[:6000])

GNBModel.score(pData[6000:], tData[6000:])

#多项朴素贝叶斯

from sklearn.naive_bayes import MultinomialNB

MNBModel = MultinomialNB()

MNBModel.fit(pData[:6000], tData[:6000])

MNBModel.score(pData[6000:], tData[6000:])

#伯努利贝叶斯

from sklearn.naive_bayes import BernoulliNB

BNBModel = BernoulliNB()

BNBModel.fit(pData[:6000], tData[:6000])

BNBModel.score(pData[6000:], tData[6000:])

参考文献

作者A:ken

你可能感兴趣的:(python贝叶斯模型)