基于朴素贝叶斯手写数字的识别

贝叶斯分类器也广泛应用于分类的实现。特别是文本的识别。本次主要介绍用朴素贝叶斯,在独立检验的条件下实现手写数字的识别。

基本原理:

计算当前图片类别占总类别的概率,从中找到占比最大的,就认定该图片从属于这个类。

代码:

构造分类器,并存储文件为bayes.py。

# -*- coding: utf-8 -*-
"""
Created on Mon Oct  8 15:27:37 2018

@author: Administrator
"""

from numpy import *

class Bayes():
    
    def __init__(self):
        
        self.length = -1
        self.label = dict()
        self.vector = dict()
    
    def fit(self, train_data:list, labels:list):
        
        if (len(train_data) != len(labels)):
            raise ValueError('测试数组与类别数组长度不一致')
            
        self.length = len(train_data[0]) #测试数据特征值长度
        labels_num = len(labels)         #所有数据量
        classes = set(labels)            #不重复的标签
        
        for item in classes:            #当前类别占总类别比例
            
            this_labels = item
            self.label[this_labels] = labels.count(this_labels)/labels_num #当前类别的比例
        
        for vector, label in zip(train_data, labels):
            
            if (label not in self.vector):
                
                self.vector[label] = []
                
            self.vector[label].append(vector)
        
        #print('scuess')
        return self
    
    def test(self, test_data, labelSet):
        
        if (self.length == -1):
            raise ValueError('无训练数据')
       
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值