資源簡介
基于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?????????????????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
評論
共有 條評論