手动编写朴素贝叶斯分类器

理论基础

贝叶斯定理和特征条件独立性假设

1:贝叶斯定理

假设 A , B 1 , B 2 , … , B n A,B_1,B_2,\dots,B_n A,B1,B2,,Bn是随机变量,则:
P ( B i ∣ A ) = P ( A ∣ B i ) P ( B i ) ∑ i = 1 n P ( A ∣ B i ) P ( B i ) \begin{aligned} P(B_i|A)=\frac{P(A|B_i)P(B_i)}{\sum_{i=1}^{n}P(A|B_i)P(B_i)} \end{aligned} P(BiA)=i=1nP(ABi)P(Bi)P(ABi)P(Bi)

2:特征条件独立性假设

P { X = x ∣ Y = c k } = P { X ( 1 ) = x 1 , X ( 2 ) = x 2 , … , X ( n ) = x n ∣ Y = c k } = ∏ j = 1 n P { X ( j ) = x j ∣ Y = c k } \begin{aligned} P&\{X=x|Y=c_k\}\\ &=P\{X^{(1)}=x_1,X^{(2)}=x_2,\dots,X^{(n)}=x_n|Y=c_k\}\\ &=\prod_{j=1}^{n}P\{X^{(j)}=x_j|Y=c_k\}\\ \end{aligned} P{X=xY=ck}=P{X(1)=x1,X(2)=x2,,X(n)=xnY=ck}=j=1nP{X(j)=xjY=ck}

贝叶斯分类器基本方法

设输入空间 X ⊆ R n \mathcal{X} \subseteq \mathcal{R}^n XRn为n维向量组成的集合,输出空间为标记类别集合 y ∈ Y = { c 1 , c 2 , … , c K } y\in \mathcal{Y}=\{c_1,c_2,\dots,c_K\} yY={c1,c2,,cK} P ( X , Y ) P(X,Y) P(X,Y) X X X Y Y Y的联合概率分布。 训练数据集:
T = { ( x 1 , y 1 ) , ( x 2 , x 2 ) , … , ( x N , y N ) } T=\{(x_1,y_1),(x_2,x_2),\dots,(x_N,y_N)\} T={(x1,y1),(x2,x2),,(xN,yN)}

P ( X , Y ) P(X,Y) P(X,Y)独立同分布生成。

步骤1

朴素贝叶斯方法先通过训练集学得先验概率分布及条件概率分布。

先验概率分布:
P ( Y = c k ) k = 1 , 2 , … , K P(Y=c_k)\qquad k=1,2,\dots,K P(Y=ck)k=1,2,,K

条件概率分布:
P ( X = x ∣ Y = c k ) = P { X ( 1 ) = x 1 , X ( 2 ) = x 2 , … , X ( n ) = x n ∣ Y = c k } P(X=x|Y=c_k)=P\{X^{(1)}=x_1,X^{(2)}=x_2,\dots,X^{(n)}=x_n|Y=c_k\} P(X=xY=ck)=P{X(1)=x1,X(2)=x2,,X(n)=xnY=ck}

步骤2

利用特征条件独立假设和联合概率分布计算 x x x的后验分布:
P ( Y = c k ∣ x ) = P ( X = x ∣ Y = c k ) P ( Y = c k ) ∑ k P ( X = x ∣ Y = c k ) P ( Y = c k ) = P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) \begin{aligned} P(Y=c_k|x)&=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_{k}P(X=x|Y=c_k)P(Y=c_k)}\\ &=\frac{P(Y=c_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k)}\\ \end{aligned} P(Y=ckx)=kP(X=xY=ck)P(Y=ck)P(X=xY=ck)P(Y=ck)=kP(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=ck)jP(X(j)=x(j)Y=ck)

步骤3

后验概率最大化:
y = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) ∑ k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=\mathop{argmax}_{c_k}\frac{P(Y=c_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_{k}P(Y=c_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k)} y=argmaxckkP(Y=ck)jP(X(j)=x(j)Y=ck)P(Y=ck)jP(X(j)=x(j)Y=ck)

求极值点由于分母都一样,则目标函数转化为:
y = a r g m a x c k P ( Y = c k ) ∏ j P ( X ( j ) = x ( j ) ∣ Y = c k ) y=\mathop{argmax}_{c_k}P(Y=c_k)\prod_{j}P(X^{(j)}=x^{(j)}|Y=c_k) y=argmaxckP(Y=ck)jP(X(j)=x(j)Y=ck)

朴素贝叶斯法的参数估计

1:先验概率的极大似然估计:

P ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) N P(Y=c_k)=\frac{\sum_{i=1}^{N}I(y_i=c_k)}{N} P(Y=ck)=Ni=1NI(yi=ck)

设第j个特征 x ( j ) x^{(j)} x(j)可能取值的集合为 { a j 1 , a j 2 , … , a j S j } \{a_{j1},a_{j2},\dots,a_{jS_{j}}\} {aj1,aj2,,ajSj}

2:条件概率的极大似然估计:

P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\sum_{i=1}^{N} I(x_i^{(j)}=a_{jl},y_i=c_k) }{\sum_{i=1}^{N} I(y_i=c_k) } P(X(j)=ajlY=ck)=i=1NI(yi=ck)i=1NI(xi(j)=ajl,yi=ck)
j = 1 , 2 , … , n l = 1 , 2 , … S j k = 1 , 2 , … , K j=1,2,\dots,n \quad l=1,2,\dots S_j \quad k=1,2,\dots,K j=1,2,,nl=1,2,Sjk=1,2,,K

对于给定的实例 x = ( x ( 1 ) , x ( 2 ) , … , x ( n ) ) T x=(x^{(1)},x^{(2)},\dots,x^{(n)})^T x=(x(1),x(2),,x(n))T,计算
P ( Y = c k ) ∏ j = 1 n P ( x ( j ) = x ( j ) ∣ Y = c k ) k = 1 , 2 , … , K P(Y=c_k)\prod_{j=1}^{n}P(x^{(j)}=x^{(j)}|Y=c_k) \quad k=1,2,\dots,K P(Y=ck)j=1nP(x(j)=x(j)Y=ck)k=1,2,,K

3:确定实例 x x x的类:

y = a r g m a x c k P ( Y = c k ) ∏ j = 1 n P ( x ( j ) = x ( j ) ∣ Y = c k ) y=\mathop{argmax}_{c_k} P(Y=c_k)\prod_{j=1}^{n}P(x^{(j)}=x^{(j)}|Y=c_k) y=argmaxckP(Y=ck)j=1nP(x(j)=x(j)Y=ck)

代码展示

使用来自UCI machine learning repository的wine分类数据。

或点击网盘链接:https://pan.baidu.com/s/1Ol8k6J3eBbs7AhfLM-BU7A直接下载。

网盘提取码:qfgq

[注] : 请将csv文件与可执行py文件放入同一文件夹。

# -*- coding: utf-8 -*-
#==========================================导言区================================================#
import pandas as pd
import numpy as np
from time import sleep
from tqdm import tqdm
import warnings

#==========================================数据集分类器================================================#
'''
本函数传出的是一个元组数据

请使用A[0]索引训练集,A[1]索引测试集


使用方法:
TrainTestSplit(数据框,测试集占数据集比例)
'''
def TrainTestSplit(data,scale): #TTS(df,测试集占数据集比例)
    #随机生成测试集和训练集
    s=int(scale*len(data))
    index=np.random.randint(len(data),size=(s,1)) #根据数据集长度生成随机数作为index
    indexnum=int(len(index))
    train_set=[]
    drop_index=[]  
    for i in range(0,indexnum): #遍历选取
        a=index[i][0]
        train=list(data.iloc[a])
        train_set.append(train)
        drop_index.append(a)   #记录需要删除的列
    test_set=data.drop(drop_index)
    train_set=pd.DataFrame(train_set)
    test_set=test_set.reset_index(drop=True)
    train_set=train_set.reset_index(drop=True)
    return train_set,test_set 

#==========================================以下为朴素贝叶斯自定义函数================================================#
'''
本函数主要实现朴素贝叶斯分类

对数据集的要求为:
(1)第一列数据为分类数据
(2)数据结构为数据框结构
(3)需要准备的数据为 
    /test_set-->测试集
    /train_set-->训练集
    /classify-->分类集



使用方法:
PiorP(训练集,分类集)
CP(输入数据,训练集,分类集)
argmax(输入数据,训练集,分类集)
NaiveBayesClassify(测试集,训练集,分类集)

'''
#先验概率
def PirorP(train_set,classify, laplace = True):
    K=len(classify)
    N=len(train_set)
    P=[] 
    y=train_set.iloc[:,0] #数据集的第一列是分类数据
    index=0
    for k in range(K): #遍历K
        index=len(train_set[train_set[0]==float(classify[k])])
        if laplace == False:
            p=index/N
        else :
            p=(index+1)/(N+K)
        P.append(p)
        index=0 #标记清零
    P=np.array(P)
    return(P)


#条件概率(每次传入一行)
def ConditionalP(input_x,train_set,classify,s_j,laplace = True): 
    J=input_x.shape[1] #J是特征值x的维数 
    cp=[]
    for k in range(len(classify)): 
        e=[]
        for j in range(J-1): 
                a=len(train_set[train_set[j+1]==float(input_x[j+1])][train_set[0]==float(classify[k])])
                b=len(train_set[train_set[0]==float(classify[2])])
                if laplace == False:
                    c_p=(a/b)    
                else:
                    c_p=(a+1)/(b+s_j)
                e.append(c_p)
        e=np.array(e)
        p_k=np.prod(e)
        cp.append(p_k)
    cp=np.array(cp)
    return(cp)


#argmax函数
def Argmax(input_x,train_set,classify,s_j,laplace = True):
    a=PirorP(train_set,classify, laplace = laplace)
    b=ConditionalP(input_x,train_set,classify,s_j,laplace = laplace)
    likelihood=a*b
    c_k=np.argmax(likelihood)+1
    return(c_k)


#贝叶斯
def NaiveBayesClassify(test_set,train_set,classify, laplace = True):
    '''
    默认引入Laplace平滑项,当Laplace设置为False时,取消引入Laplace

    '''
    B=[]
    s_j=len(test_set)

    for i in tqdm(range(len(test_set)),ncols=70):
        input_x=pd.DataFrame(list(test_set.iloc[i])).T  
        a=Argmax(input_x,train_set,classify,s_j,laplace = laplace)
        B.append(a)
        

    B=pd.DataFrame(B)
    Bayes_classify=pd.concat([B,test_set],axis=1)
    Bayes_classify.rename(columns={0:"贝叶斯分类结果"},inplace=True)
    #计算正确率
    a=Bayes_classify
    index=pd.DataFrame(a.iloc[:,0]-a.iloc[:,1])
    print('分类正确率为:',len(index[index.iloc[:,0]==0])/len(a))
    #输出结果
    print(Bayes_classify)

    

  
#==========================================以下为数据输入及运行================================================#
#数据导入
data=open('wine2.csv',encoding="utf-8") 
data=pd.read_csv(data)

#数据分类
a=TrainTestSplit(data,0.3)
train_set=a[0]
test_set=a[1]

#数据分类指标
classify=([1,2,3]) 

#调用朴素贝叶斯分类函数
warnings.filterwarnings('ignore') #忽略恼人的warning输出
print('==================训练集==================')
print(train_set)
print('==================测试集==================')
print(test_set)

print('==================引入laplace平滑前==================')
NaiveBayesClassify(test_set,train_set,classify,False)
print('==================引入laplace平滑后==================')
NaiveBayesClassify(test_set,train_set,classify)

input('press any key to close')

运行结果

==================训练集==================
      0      1     2     3     4      5     6     7     8     9     10    11    12      13
0   2.0  12.08  1.83  2.32  18.5   81.0  1.60  1.50  0.52  1.64   2.40  1.08  2.27   480.0
1   1.0  13.76  1.53  2.70  19.5  132.0  2.95  2.74  0.50  1.35   5.40  1.25  3.00  1235.0
2   1.0  13.20  1.78  2.14  11.2  100.0  2.65  2.76  0.26  1.28   4.38  1.05  3.40  1050.0
3   2.0  12.21  1.19  1.75  16.8  151.0  1.85  1.28  0.14  2.50   2.85  1.28  3.07   718.0
4   2.0  12.64  1.36  2.02  16.8  100.0  2.02  1.41  0.53  0.62   5.75  0.98  1.59   450.0
5   3.0  12.87  4.61  2.48  21.5   86.0  1.70  0.65  0.47  0.86   7.65  0.54  1.86   625.0
6   1.0  13.28  1.64  2.84  15.5  110.0  2.60  2.68  0.34  1.36   4.60  1.09  2.78   880.0
7   1.0  14.37  1.95  2.50  16.8  113.0  3.85  3.49  0.24  2.18   7.80  0.86  3.45  1480.0
8   3.0  13.17  5.19  2.32  22.0   93.0  1.74  0.63  0.61  1.55   7.90  0.60  1.48   725.0
9   1.0  14.19  1.59  2.48  16.5  108.0  3.30  3.93  0.32  1.86   8.70  1.23  2.82  1680.0
10  1.0  13.77  1.90  2.68  17.1  115.0  3.00  2.79  0.39  1.68   6.30  1.13  2.93  1375.0
11  2.0  12.17  1.45  2.53  19.0  104.0  1.89  1.75  0.45  1.03   2.95  1.45  2.23   355.0
12  3.0  12.20  3.03  2.32  19.0   96.0  1.25  0.49  0.40  0.73   5.50  0.66  1.83   510.0
13  1.0  12.93  3.80  2.65  18.6  102.0  2.41  2.41  0.25  1.98   4.50  1.03  3.52   770.0
14  1.0  13.51  1.80  2.65  19.0  110.0  2.35  2.53  0.29  1.54   4.20  1.10  2.87  1095.0
15  1.0  13.30  1.72  2.14  17.0   94.0  2.40  2.19  0.27  1.35   3.95  1.02  2.77  1285.0
16  2.0  12.37  1.63  2.30  24.5   88.0  2.22  2.45  0.40  1.90   2.12  0.89  2.78   342.0
17  3.0  13.17  2.59  2.37  20.0  120.0  1.65  0.68  0.53  1.46   9.30  0.60  1.62   840.0
18  1.0  12.93  3.80  2.65  18.6  102.0  2.41  2.41  0.25  1.98   4.50  1.03  3.52   770.0
19  2.0  13.34  0.94  2.36  17.0  110.0  2.53  1.30  0.55  0.42   3.17  1.02  1.93   750.0
20  3.0  13.40  3.91  2.48  23.0  102.0  1.80  0.75  0.43  1.41   7.30  0.70  1.56   750.0
21  1.0  13.86  1.35  2.27  16.0   98.0  2.98  3.15  0.22  1.85   7.22  1.01  3.55  1045.0
22  3.0  12.51  1.24  2.25  17.5   85.0  2.00  0.58  0.60  1.25   5.45  0.75  1.51   650.0
23  3.0  12.88  2.99  2.40  20.0  104.0  1.30  1.22  0.24  0.83   5.40  0.74  1.42   530.0
24  2.0  12.70  3.87  2.40  23.0  101.0  2.83  2.55  0.43  1.95   2.57  1.19  3.13   463.0
25  3.0  13.49  3.59  2.19  19.5   88.0  1.62  0.48  0.58  0.88   5.70  0.81  1.82   580.0
26  1.0  13.58  1.66  2.36  19.1  106.0  2.86  3.19  0.22  1.95   6.90  1.09  2.88  1515.0
27  2.0  12.07  2.16  2.17  21.0   85.0  2.60  2.65  0.37  1.35   2.76  0.86  3.28   378.0
28  1.0  13.28  1.64  2.84  15.5  110.0  2.60  2.68  0.34  1.36   4.60  1.09  2.78   880.0
29  1.0  13.90  1.68  2.12  16.0  101.0  3.10  3.39  0.21  2.14   6.10  0.91  3.33   985.0
30  3.0  13.17  5.19  2.32  22.0   93.0  1.74  0.63  0.61  1.55   7.90  0.60  1.48   725.0
31  1.0  13.05  1.65  2.55  18.0   98.0  2.45  2.43  0.29  1.44   4.25  1.12  2.51  1105.0
32  2.0  11.79  2.13  2.78  28.5   92.0  2.13  2.24  0.58  1.76   3.00  0.97  2.44   466.0
33  2.0  12.21  1.19  1.75  16.8  151.0  1.85  1.28  0.14  2.50   2.85  1.28  3.07   718.0
34  1.0  14.06  1.63  2.28  16.0  126.0  3.00  3.17  0.24  2.10   5.65  1.09  3.71   780.0
35  3.0  13.45  3.70  2.60  23.0  111.0  1.70  0.92  0.43  1.46  10.68  0.85  1.56   695.0
36  2.0  12.07  2.16  2.17  21.0   85.0  2.60  2.65  0.37  1.35   2.76  0.86  3.28   378.0
37  2.0  12.16  1.61  2.31  22.8   90.0  1.78  1.69  0.43  1.56   2.45  1.33  2.26   495.0
38  1.0  14.23  1.71  2.43  15.6  127.0  2.80  3.06  0.28  2.29   5.64  1.04  3.92  1065.0
39  2.0  11.84  2.89  2.23  18.0  112.0  1.72  1.32  0.43  0.95   2.65  0.96  2.52   500.0
40  2.0  12.42  2.55  2.27  22.0   90.0  1.68  1.84  0.66  1.42   2.70  0.86  3.30   315.0
41  1.0  13.87  1.90  2.80  19.4  107.0  2.95  2.97  0.37  1.76   4.50  1.25  3.40   915.0
42  2.0  13.11  1.01  1.70  15.0   78.0  2.98  3.18  0.26  2.28   5.30  1.12  3.18   502.0
43  3.0  12.45  3.03  2.64  27.0   97.0  1.90  0.58  0.63  1.14   7.50  0.67  1.73   880.0
44  1.0  13.88  1.89  2.59  15.0  101.0  3.25  3.56  0.17  1.70   5.43  0.88  3.56  1095.0
45  1.0  13.07  1.50  2.10  15.5   98.0  2.40  2.64  0.28  1.37   3.70  1.18  2.69  1020.0
46  2.0  12.60  1.34  1.90  18.5   88.0  1.45  1.36  0.29  1.35   2.45  1.04  2.77   562.0
47  2.0  12.99  1.67  2.60  30.0  139.0  3.30  2.89  0.21  1.96   3.35  1.31  3.50   985.0
48  1.0  13.51  1.80  2.65  19.0  110.0  2.35  2.53  0.29  1.54   4.20  1.10  2.87  1095.0
49  2.0  12.21  1.19  1.75  16.8  151.0  1.85  1.28  0.14  2.50   2.85  1.28  3.07   718.0
50  2.0  11.45  2.40  2.42  20.0   96.0  2.90  2.79  0.32  1.83   3.25  0.80  3.39   625.0
51  2.0  12.00  1.51  2.42  22.0   86.0  1.45  1.25  0.50  1.63   3.60  1.05  2.65   450.0
52  3.0  13.27  4.28  2.26  20.0  120.0  1.59  0.69  0.43  1.35  10.20  0.59  1.56   835.0
==================测试集==================
     class    x_1   x_2   x_3   x_4  x_5   x_6   x_7   x_8   x_9      x_10  x_11  x_12  x_13
0        1  13.16  2.36  2.67  18.6  101  2.80  3.24  0.30  2.81  5.680000  1.03  3.17  1185
1        1  13.24  2.59  2.87  21.0  118  2.80  2.69  0.39  1.82  4.320000  1.04  2.93   735
2        1  14.20  1.76  2.45  15.2  112  3.27  3.39  0.34  1.97  6.750000  1.05  2.85  1450
3        1  14.39  1.87  2.45  14.6   96  2.50  2.52  0.30  1.98  5.250000  1.02  3.58  1290
4        1  14.06  2.15  2.61  17.6  121  2.60  2.51  0.31  1.25  5.050000  1.06  3.58  1295
..     ...    ...   ...   ...   ...  ...   ...   ...   ...   ...       ...   ...   ...   ...
127      3  13.40  4.60  2.86  25.0  112  1.98  0.96  0.27  1.11  8.500000  0.67  1.92   630
128      3  12.77  2.39  2.28  19.5   86  1.39  0.51  0.48  0.64  9.899999  0.57  1.63   470
129      3  14.16  2.51  2.48  20.0   91  1.68  0.70  0.44  1.24  9.700000  0.62  1.71   660
130      3  13.71  5.65  2.45  20.5   95  1.68  0.61  0.52  1.06  7.700000  0.64  1.74   740
131      3  14.13  4.10  2.74  24.5   96  2.05  0.76  0.56  1.35  9.200000  0.61  1.60   560

[132 rows x 14 columns]
==================引入laplace平滑前==================
100%|███████████████████████████████| 132/132 [00:09<00:00, 14.26it/s]
分类正确率为: 0.3106060606060606
     贝叶斯分类结果  class    x_1   x_2   x_3   x_4  x_5   x_6   x_7   x_8   x_9      x_10  x_11  x_12  x_13
0          1      1  13.16  2.36  2.67  18.6  101  2.80  3.24  0.30  2.81  5.680000  1.03  3.17  1185
1          1      1  13.24  2.59  2.87  21.0  118  2.80  2.69  0.39  1.82  4.320000  1.04  2.93   735
2          1      1  14.20  1.76  2.45  15.2  112  3.27  3.39  0.34  1.97  6.750000  1.05  2.85  1450
3          1      1  14.39  1.87  2.45  14.6   96  2.50  2.52  0.30  1.98  5.250000  1.02  3.58  1290
4          1      1  14.06  2.15  2.61  17.6  121  2.60  2.51  0.31  1.25  5.050000  1.06  3.58  1295
..       ...    ...    ...   ...   ...   ...  ...   ...   ...   ...   ...       ...   ...   ...   ...
127        1      3  13.40  4.60  2.86  25.0  112  1.98  0.96  0.27  1.11  8.500000  0.67  1.92   630
128        1      3  12.77  2.39  2.28  19.5   86  1.39  0.51  0.48  0.64  9.899999  0.57  1.63   470
129        1      3  14.16  2.51  2.48  20.0   91  1.68  0.70  0.44  1.24  9.700000  0.62  1.71   660
130        1      3  13.71  5.65  2.45  20.5   95  1.68  0.61  0.52  1.06  7.700000  0.64  1.74   740
131        1      3  14.13  4.10  2.74  24.5   96  2.05  0.76  0.56  1.35  9.200000  0.61  1.60   560

[132 rows x 15 columns]
==================引入laplace平滑后==================
100%|███████████████████████████████| 132/132 [00:08<00:00, 14.97it/s]
分类正确率为: 0.5227272727272727
     贝叶斯分类结果  class    x_1   x_2   x_3   x_4  x_5   x_6   x_7   x_8   x_9      x_10  x_11  x_12  x_13
0          1      1  13.16  2.36  2.67  18.6  101  2.80  3.24  0.30  2.81  5.680000  1.03  3.17  1185
1          1      1  13.24  2.59  2.87  21.0  118  2.80  2.69  0.39  1.82  4.320000  1.04  2.93   735
2          1      1  14.20  1.76  2.45  15.2  112  3.27  3.39  0.34  1.97  6.750000  1.05  2.85  1450
3          1      1  14.39  1.87  2.45  14.6   96  2.50  2.52  0.30  1.98  5.250000  1.02  3.58  1290
4          1      1  14.06  2.15  2.61  17.6  121  2.60  2.51  0.31  1.25  5.050000  1.06  3.58  1295
..       ...    ...    ...   ...   ...   ...  ...   ...   ...   ...   ...       ...   ...   ...   ...
127        3      3  13.40  4.60  2.86  25.0  112  1.98  0.96  0.27  1.11  8.500000  0.67  1.92   630
128        1      3  12.77  2.39  2.28  19.5   86  1.39  0.51  0.48  0.64  9.899999  0.57  1.63   470
129        3      3  14.16  2.51  2.48  20.0   91  1.68  0.70  0.44  1.24  9.700000  0.62  1.71   660
130        2      3  13.71  5.65  2.45  20.5   95  1.68  0.61  0.52  1.06  7.700000  0.64  1.74   740
131        2      3  14.13  4.10  2.74  24.5   96  2.05  0.76  0.56  1.35  9.200000  0.61  1.60   560

[132 rows x 15 columns]
press any key to close

可见:通过使用30%的数据进行训练,在引入Laplace平滑前分类正确率在30%–40%左右,而在引入Laplace平滑后,分类正确率大约在50%–60%左右。这是由于特征数据未在训练数据中出现而导致的分类失败。故模型还有继续改进空间。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值