利用朴素贝叶斯贝叶斯算法实现分类
本文主要通过python构建朴素贝叶斯分类算法:
原理:
贝叶斯公式,
朴素的理解:假设个特征之间相互独立,则上面公式中:
通过此公式,可将未知的条件概率转换为已知条件概率的计算
实现步骤:
1,创建Beyes类
2,类中包括四个方法,初始化方法用来创建保存中间计算结果的容器
3,fit 方法用来计算数据长度、计算条件概率所需数据集、
P(X)=∑kP(X|Y=Yk)P(Yk)
计算P(Yk):p_train_target
4,p_test_data用来计算一个样本的分类结果
5,classifier用来计算测试集所有分类结果
6,score用来计算准确率
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from collections import Counter
import time
class Beyes(object):
def __init__(self):
self.length = -1 # 保存测试集数据量
self.train_target_list = [] # 目标值类别集合
self.p_train_target = {
} # 保存个目标值概率
self.split_data_lis = [] # 保存各条件概率对应的数据集
self.feature_p_lis = [] # 保存特征概率
self.predict = [] # 保存分类结果
def fit(self, train_data, train_target):
"""
P(X)=∑kP(X|Y=Yk)P(Yk)
计算P(Yk):p_train_target
准备计算条件概率所需数据集:self.split_data_lis
:param train_data:<arr_like>
:param train_target:<arr_like>
:return:
"""
train_length = train_data.shape[0]
self