《模式識別與智慧型計算》基於二值資料的貝葉斯分類實現

2021-10-02 04:04:48 字數 2601 閱讀 9801

演算法流程

將資料二值化

計算每類數字的先驗概率

計算條件概率

計算後驗概率

(具體計算過程請見書上77頁)

演算法實現

貝葉斯演算法

def

bayeserzhi

(x_train,y_train,sample)

:"""

:function 基於二值資料的貝葉斯分類器

:param x_train: 訓練集 m*n m為樣本個數 n為特徵個數

:param y_train: 訓練集標籤 1*m

:param sample: 待識別樣品

:return: 返回判斷類別

"""#後驗概率

pwx =

target = np.unique(y_train)

spit =

0.5*

(np.

max(x_train)

- np.

min(x_train)

) train = np.where(x_train > spit,1,

0)sample = np.where(sample > spit,1,

0)for i in target:

trainindex =((

[j for j, y in

enumerate

(y_train)

if y == i]))

trainnum =

len(trainindex)

# 計算先驗概率

pw = trainnum/x_train.shape[0]

# 計算類條件概率

p =(np.

sum(train[trainindex]

,axis=0)

+1)/

(trainnum+2)

pxw =

1for j in

range

(train.shape[1]

):if sample[j]

: pxw *= p[j]

else

: pxw *=(1

-p[j]

)#計算pxw*pw

pwx = pwx/np.

sum(pwx)

maxid = np.argmax(pwx)

label = target[maxid]

return label

劃分資料集

def

train_test_split

(x,y,ratio =3)

:"""

:function: 對資料集劃分為訓練集、測試集

:param x: m*n維 m表示資料個數 n表示特徵個數

:param y: 標籤

:param ratio: 產生比例 train:test = 3:1(預設比例)

:return: x_train y_train x_test y_test

"""n_samples , n_train = x.shape[0]

,int

(x.shape[0]

*(ratio)/(

1+ratio)

) train_id = random.sample(

range(0

,n_samples)

,n_train)

x_train = x[train_id,:]

y_train = y[train_id]

x_test = np.delete(x,train_id,axis =0)

y_test = np.delete(y,train_id,axis =0)

return x_train,y_train,x_test,y_test

測試**
from sklearn import datasets

from include.chapter4 import function

import numpy as np

#讀取資料

digits = datasets.load_digits(

)x , y = digits.data,digits.target

#劃分資料集

x_train, y_train, x_test, y_test = function.train_test_split(x,y)

testid = np.random.randint(

0, x_test.shape[0]

)sample = x_test[testid,:]

#模板匹配

ans = function.bayeserzhi(x_train,y_train,sample)

y_test[testid]

print

("**的數字型別"

,ans)

print

("真實的數字型別"

,y_test[testid]

)

演算法結果
**的數字型別 0

真實的數字型別 0

《模式識別與智慧型計算》的資料集

這本書我老師說很好,讓我買來看看,結果一學期過去了,emmmm,不是我的問題,是這本書沒有資料,沒有源 強行甩鍋 咳咳,跑遠了,這本書的資料集我我到網上看到了,它的資料集格式是這樣的 allsamples有兩個字段,乙個為num,乙個feature,然後feature是乙個25 5維的資料,25表示...

《模式識別》自學筆記 (二)基於統計的模式識別

解決模式識別問題的方法主要歸納為基於知識的方法和基於資料的方法兩大類。基於知識的方法,主要是以專家系統為代表的方法。其基本思想是根據人們已知的關於研究物件的知識,整理出若干描述特徵與類別間關係的準則,建立一定的計算機推理系統,對未知樣本通過這些知識推理決策類別。以專家系統為例,專家系統的組成部分包括...

模式識別與智慧型計算第一節(模式識別概述)

1 模式識別系統 資料獲取 用計算機語言 可計算數字符號 來表示研究物件 預處理 對研究物件去雜訊,復原等 特徵提取與選擇 對資料進行變換,降緯,簡化處理等 分類決策 歸類 分類器設計 對分類結果進行判斷檢測,誤差分析 2 模式識別主要問題 特徵選擇與優化 特徵選擇 使同類物體緊緻性 組合優化 對映...