7.3 试编程实现拉普拉斯修正的朴素贝叶斯分类器,并以西瓜数据集3.0为训练集,对p.151 “测1”样本进行判别。
解答:
朴素贝叶斯的训练过程就是估计类别先验概率以及类条件概率的过程;测试阶段根据训练得到的概率值计算出类别的后验概率并取概率最大的类别作为样本分类。根据数据集3.0得到的拉普拉斯朴素贝叶斯分类器把测试样例预测为正类,即好瓜。
代码:
# -*- coding:gbk -*-
"""
@Author: Victoria
@Date: 2017.10.17 10:30
"""
import xlrd
import math
class LaplacianNB():
"""
Laplacian naive bayes for binary classification problem.
"""
def __init__(self):
"""
"""
def train(self, X, y):
"""
Training laplacian naive bayes classifier with traning set (X, y).
Input:
X: list of instances. Each instance is represented by (鑹叉辰锛屾牴钂傦紝鏁插0锛屾枃鐞嗭紝鑴愰儴锛岃Е鎰燂紝瀵嗗害锛屽惈绯栫巼)
y: list of labels. 0 represents bad, 1 represents good.
"""
N = len(y)
self.classes = self.count_list(y)
self.class_num = len(self.classes)
self.classes_p = {}
#print self.classes