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

2017-05-22  本文已影响221人  dataheart
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

上一篇下一篇

猜你喜欢

热点阅读