朴素贝叶斯及python测试

from sklearn.datasets import load_breast_cancer
from sklearn.datasets import load_wine
from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import BernoulliNB,GaussianNB,MultinomialNB
import numpy as np

#朴素贝叶斯
#概念:基于贝叶斯定理与特征条件独立假设的分类方法
#先验概率:通过经验来判断事情发生的概率,比如说“癌症”的发病率是万分之一,就是先验概率。
#后验概率:后验概率就是发生结果之后,推测原因的概率。比如说某人查出来了患有“癌症”,
#那么患病的原因可能是 A、B 或 C。**患有“癌症”是因为原因 A 的概率就是后验概率。**它是属于条件概率的一种。
#条件概率:事件 A 在另外一个事件 B 已经发生条件下的发生概率,表示为 P(A|B)。比如原因 A 的条件下,患有“癌症”的概率,就是条件概率。
#贝叶斯定理:P(A|B)=P(B|A)*P(A)/P(B)

def naive_bayes():
    #导入威斯康星乳腺肿瘤数据集
    cancer=load_breast_cancer()

    #将数据集拆分为训练数据集和测试数据集
    x_train,x_test,y_train,y_test=train_test_split(cancer.get('data'),cancer.get('target'),random_state=38)

    #使用高斯朴素贝叶斯建模
    #高斯朴素贝叶斯适合特征符合正态分布的数据
    gnb=GaussianNB()
    gnb.fit(x_train,y_train)
    print("高斯训练集得分:{}".format(gnb.score(x_train,y_train)))
    print("高斯测试集得分:{}".format(gnb.score(x_test, y_test)))

    #贝努利朴素贝叶斯
    #适合二项分布或0-1分布
    bnb=BernoulliNB()
    bnb.fit(x_train,y_train)
    print("二项式训练集得分:{}".format(bnb.score(x_train,y_train)))
    print("二项式测试集得分:{}".format(bnb.score(x_test, y_test)))

    #多项式朴素贝叶斯
    #适合多个分类的数据集
    mnb=MultinomialNB()
    mnb.fit(x_train,y_train)
    print("多项式训练集得分:{}".format(mnb.score(x_train,y_train)))
    print("多项式测试集得分:{}".format(mnb.score(x_test, y_test)))

    print("######################")

    #酒的分类
    wine_dataset = load_wine()

    # random_state=0,每次生成的随机数不同
    # x代表数据集,y代表分类标签
    x_train, x_test, y_train, y_test = train_test_split(wine_dataset["data"], wine_dataset["target"], random_state=0)

    # 创建贝叶斯分类模型
    gnb = GaussianNB()
    gnb.fit(x_train, y_train)

    # 测试模型得分
    score = gnb.score(x_test, y_test)
    print(score)
    score=gnb.score(x_train,y_train)
    print(score)

    # 使用模型完成预测
    x_news = np.array([[13.2, 2.77, 2.51, 18.5, 96.6, 1.04, 2.55, 0.57, 1.47, 6.2, 1.05, 3.33, 820]])
    prediction = gnb.predict(x_news)
    print(wine_dataset["target_names"][prediction])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值