利用贝叶斯模型对sklearn中的手工数据集进行分析

def b1():
    '''朴素贝叶斯算法是有监督学习算法,朴素贝叶斯算法分类为:贝努利朴素贝叶斯,高斯朴素贝叶斯,多项式朴素贝叶斯'''
    #利用贝努利朴素贝叶斯(二项分布)对手工数据进行分析
    #导入数据集生成工具,make_blobs用来生成手工数据集的
    from sklearn.datasets import make_blobs
    from sklearn.model_selection import train_test_split
    #生成样本量为500,分类为5的数据集
    x,y=make_blobs(n_samples=500,centers=5,random_state=8)
    x_train,x_test,y_train,y_test=train_test_split(x,y,random_state=8)
    #导入贝努利朴素贝叶斯
    from sklearn.naive_bayes import BernoulliNB
    ber=BernoulliNB()
    ber.fit(x_train,y_train)
    print('贝努利朴素贝叶斯得分:','%.3f'%ber.score(x_test,y_test))
    #导入画图工具,将其可视化
    import matplotlib.pyplot as plt
    x_min,x_max=x[:,0].min()-0.5,x[:,0].max()+0.5
    y_min,y_max=x[:,1].min()-0.5,x[:,1].max()+0.5
    import numpy as np
    xx,yy=np.meshgrid(np.arange(x_min,x_max,.02),np.arange(y_min,y_max,.02))
    z=ber.predict(np.c_[(xx.ravel(),yy.ravel())]).reshape(xx.shape)
    plt.pcolormesh(xx,yy,z,cmap=plt.cm.Pastel1)
    #将训练集和测试集用散点图表示
    plt.scatter(x_train[:,0],x_train[:,1],c=y_train,cmap=plt.cm.cool,marker='o',edgecolors='k')
    plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=plt.cm.cool,marker='*',edgecolors='y')
    plt.xlim()
    plt.ylim()
    plt.title('BernoulliNB')
    plt.show()
    '''利用高斯朴素贝叶斯进行测试'''
    from sklearn.datasets import make_blobs
    from sklearn.model_selection import train_test_split

    # 生成样本量为500,分类为5的数据集
    x, y = make_blobs(n_samples=500, centers=5, random_state=8)
    x_train, x_test, y_train, y_test = train_test_split(x, y, random_state=8)
    # 导入贝努利朴素贝叶斯
    from sklearn.naive_bayes import GaussianNB

    gauss = GaussianNB()
    gauss.fit(x_train, y_train)
    print('贝努利朴素贝叶斯得分:', '%.3f' % gauss.score(x_test, y_test))
    # 导入画图工具,将其可视化
    import matplotlib.pyplot as plt

    x_min, x_max = x[:, 0].min() - 0.5, x[:, 0].max() + 0.5
    y_min, y_max = x[:, 1].min() - 0.5, x[:, 1].max() + 0.5
    import numpy as np

    xx, yy = np.meshgrid(np.arange(x_min, x_max, .02), np.arange(y_min, y_max, .02))
    z = gauss.predict(np.c_[(xx.ravel(), yy.ravel())]).reshape(xx.shape)
    plt.pcolormesh(xx, yy, z, cmap=plt.cm.Pastel1)
    # 将训练集和测试集用散点图表示
    plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=plt.cm.cool, marker='o', edgecolors='k')
    plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=plt.cm.cool, marker='*', edgecolors='k')
    plt.xlim()
    plt.ylim()
    plt.title('GaussianNB')
    plt.show()
    '''当我们利用多项式朴素贝叶斯测试'''
    #必须记住x即特征值智能时非负的
    #需要进行数据的预处理
    from sklearn.naive_bayes import MultinomialNB
    #导入数据预处理工具
    from sklearn.preprocessing import MinMaxScaler#MinMaxScaler的作用是将数据集中的特征值全部转换为0~1之间
    scaler=MinMaxScaler()
    scaler.fit(x_train)#只需要对x进行拟合,因为必须记住x即特征值智能时非负的
    x_train_scaler=scaler.transform(x_train)
    x_test_scaler=scaler.transform(x_test)
    mul=MultinomialNB()
    mul.fit(x_train_scaler,y_train)
    print('模型得分:','%.2f'%mul.score(x_test_scaler,y_test))
    z = mul.predict(np.c_[(xx.ravel(), yy.ravel())]).reshape(xx.shape)
    plt.pcolormesh(xx, yy, z, cmap=plt.cm.Pastel1)
    # 将训练集和测试集用散点图表示
    plt.scatter(x_train[:, 0], x_train[:, 1], c=y_train, cmap=plt.cm.cool, marker='o', edgecolors='k')
    plt.scatter(x_test[:, 0], x_test[:, 1], c=y_test, cmap=plt.cm.cool, marker='*', edgecolors='k')
    plt.xlim()
    plt.ylim()
    plt.title('MultinomialNB')
    plt.show()
    '''以上可知,多项式朴素贝叶斯只适合对非负离散数值进行分类'''
b1()

代码运行结果如下:

贝努利朴素贝叶斯得分: 0.544
高斯朴素贝叶斯得分: 0.968
多项式朴素贝叶斯模型得分: 0.32

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值