资源简介
基于Mnist数据集的贝叶斯分类器,用python编写,读取原始数据集数据,进行分类,完整,简洁

代码片段和文件信息
# -*- coding: utf-8 -*-
“““
Created on Tue May 01 16:08:32 2018
@author: Fsl
“““
import numpy as np
import cv2
import time
import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score
from readset import loadImageSet
from readset import loadLabelSet
# 二值化
def binaryzation(img):
cv_img = img.astype(np.uint8)
cv2.threshold(cv_img501cv2.cv.CV_THRESH_BINARY_INVcv_img)
return cv_img
def Train(trainsettrain_labels):
prior_probability = np.zeros(class_num) # 先验概率
conditional_probability = np.zeros((class_numfeature_len2)) # 条件概率
# 计算先验概率及条件概率
for i in range(len(train_labels)):
img = binaryzation(trainset[i]) # 图片二值化
imgsize=np.reshape(img[2828])
label = train_labels[i]
prior_probability[label] += 1
for j in range(feature_len):
t=img[j]
conditional_probability[label[0]][j][t] += 1
# 将概率归到[1.10001]
for i in range(class_num):
for j in range(feature_len):
# 经过二值化后图像只有0,1两种取值
pix_0 = conditional_probability[i][j][0]
pix_1 = conditional_probability[i][j][1]
# 计算0,1像素点对应的条件概率
probalility_0 = (float(pix_0)/float(pix_0+pix_1))*1000000 + 1
probalility_1 = (float(pix_1)/float(pix_0+pix_1))*1000000 + 1
conditional_probability[i][j][0] = probalility_0
conditional_probability[i][j][1] = probalility_1
return prior_probabilityconditional_probability
# 计算概率
def calculate_probability(imglabel):
probability = int(prior_probability[label])
for i in range(len(img)):
probability *= int(conditional_probability[label][i][img[i]])
return probability
def Predict(testsetprior_probabilityconditional_probability):
predict = []
for img in testset:
# 图像二值化
img = binaryzation(img)
max_label = 0
max_probability = calculate_probability(img0)
for j in range(110):
probability = calculate_probability(imgj)
if max_probability < probability:
max_label = j
max_probability = probability
predict.append(max_label)
return np.array(predict)
class_num = 10
feature_len = 784
if __name__ == ‘__main__‘:
print ‘Start read data‘
time_1 = time.time()
# 读取训练数据与测试数据
train_features=loadImageSet(0)
test_features=loadImageSet(1)
train_labels=loadLabelSet(0)
test_labels = loadLabelSet(1)
# print train_features.shape
# print train_features.shape
time_2 = time.time()
print ‘read data cost ‘time_2 - time_1‘ second‘‘\n‘
print ‘Start training‘
prior_probabilityconditional_probability = Train(train_featurestrain_labels)
time_3 = time.time()
print ‘training cost ‘time_3 - time_2‘ second‘‘\n‘
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3548 2018-05-02 13:24 基于Mnist数据集的贝叶斯分类器\bayes.py
文件 1844 2018-05-01 16:51 基于Mnist数据集的贝叶斯分类器\readset.py
目录 0 2018-05-04 17:57 基于Mnist数据集的贝叶斯分类器
----------- --------- ---------- ----- ----
5392 3
相关资源
- 二级考试python试题12套(包括选择题和
- pywin32_python3.6_64位
- python+ selenium教程
- PycURL(Windows7/Win32)Python2.7安装包 P
- 英文原版-Scientific Computing with Python
- 7.图像风格迁移 基于深度学习 pyt
- 基于Python的学生管理系统
- A Byte of Python(简明Python教程)(第
- Python实例174946
- Python 人脸识别
- Python 人事管理系统
- 基于python-flask的个人博客系统
- 计算机视觉应用开发流程
- python 调用sftp断点续传文件
- python socket游戏
- 基于Python爬虫爬取天气预报信息
- python函数编程和讲解
- Python开发的个人博客
- 基于python的三层神经网络模型搭建
- python实现自动操作windows应用
- python人脸识别(opencv)
- python 绘图(方形、线条、圆形)
- python疫情卡UN管控
- python 连连看小游戏源码
- 基于PyQt5的视频播放器设计
- 一个简单的python爬虫
- csv文件行列转换python实现代码
- Python操作Mysql教程手册
- Python Machine Learning Case Studies
- python获取硬件信息
评论
共有 条评论