《機器學習基礎》組隊學習第四次打卡

2021-10-05 15:02:24 字數 3474 閱讀 1338

條件隨機場

馬爾可夫過程

隱馬爾科夫演算法

條件隨機場 (以線性鏈條件隨機場為例)

**實踐:

import numpy as np

class crf(object):

『』『實現條件隨機場**問題的維特比演算法

『』』definit(self, v, vw, e, ew):

『』』:param v:是定義在節點上的特徵函式,稱為狀態特徵

:param vw:是v對應的權值

:param e:是定義在邊上的特徵函式,稱為轉移特徵

:param ew:是e對應的權值

『』』self.v = v #點分布表

self.vw = vw #點權值表

self.e = e #邊分布表

self.ew = ew #邊權值表

self.d = #delta表,最大非規範化概率的區域性狀態路徑概率

self.p = #psi表,當前狀態和最優前導狀態的索引表s

self.bp = #bestpath,最優路徑

return

def viterbi(self):

'''條件隨機場**問題的維特比演算法,此演算法一定要結合crf引數化形式對應的狀態路徑圖來理解,更容易理解.

'''self.d = np.full(shape=(np.shape(self.v)), fill_value=.0)

self.p = np.full(shape=(np.shape(self.v)), fill_value=.0)

for i in range(np.shape(self.v)[0]):

#初始化

if 0 == i:

self.d[i] = np.multiply(self.v[i], self.vw[i])

self.p[i] = np.array([0, 0])

print('self.v[%d]='%i, self.v[i], 'self.vw[%d]='%i, self.vw[i], 'self.d[%d]='%i, self.d[i])

print('self.p:', self.p)

pass

#遞推求解布局最優狀態路徑

else:

for y in range(np.shape(self.v)[1]): #delta[i][y=1,2...]

for l in range(np.shape(self.v)[1]): #v[i-1][l=1,2...]

delta = 0.0

delta += self.d[i-1, l] #前導狀態的最優狀態路徑的概率

delta += self.e[i-1][l,y]*self.ew[i-1][l,y] #前導狀態到當前狀體的轉移概率

delta += self.v[i,y]*self.vw[i,y] #當前狀態的概率

print('(x%d,y=%d)-->(x%d,y=%d):%.2f + %.2f + %.2f='%(i-1, l, i, y, \

self.d[i-1, l], \

self.e[i-1][l,y]*self.ew[i-1][l,y], \

self.v[i,y]*self.vw[i,y]), delta)

if 0 == l or delta > self.d[i, y]:

self.d[i, y] = delta

self.p[i, y] = l

print('self.d[x%d,y=%d]=%.2f\n'%(i, y, self.d[i,y]))

print('self.delta:\n', self.d)

print('self.psi:\n', self.p)

#返回,得到所有的最優前導狀態

n = np.shape(self.v)[0]

self.bp = np.full(shape=(n,), fill_value=0.0)

t_range = -1 * np.array(sorted(-1*np.arange(n)))

for t in t_range:

if n-1 == t:#得到最優狀態

self.bp[t] = np.argmax(self.d[-1])

else: #得到最優前導狀態

self.bp[t] = self.p[t+1, int(self.bp[t+1])]

#最優狀態路徑表現在儲存的是狀態的下標,我們執行儲存值+1轉換成示例中的狀態值

#也可以不用轉換,只要你能理解,self.bp中儲存的0是狀態1就可以~~~~

self.bp += 1

print('最優狀態路徑為:', self.bp)

return self.bp

def crf_manual():

s = np.array([[1,1], #x1:s(y1=1), s(y1=2)

[1,1], #x2:s(y2=1), s(y2=2)

[1,1]]) #x3:s(y3=1), s(y3=1)

sw = np.array([[1.0, 0.5], #x1:sw(y1=1), sw(y1=2)

[0.8, 0.5], #x2:sw(y2=1), sw(y2=2)

[0.8, 0.5]])#x3:sw(y3=1), sw(y3=1)

e = np.array([[[1, 1], #edge:y1=1—>(y2=1, y2=2)

[1, 0]], #edge:y1=2—>(y2=1, y2=2)

[[0, 1], #edge:y2=1—>(y3=1, y3=2)

[1, 1]]])#edge:y2=2—>(y3=1, y3=2)

ew= np.array([[[0.6, 1], #edgew:y1=1—>(y2=1, y2=2)

[1, 0.0]], #edgew:y1=2—>(y2=1, y2=2)

[[0.0, 1], #edgew:y2=1—>(y3=1, y3=2)

[1, 0.2]]])#edgew:y2=2—>(y3=1, y3=2)

crf = crf(s, sw, e, ew)

ret = crf.viterbi()

print('最優狀態路徑為:', ret)

return

ifname==『main』:

crf_manual()

《資料探勘》組隊學習第四次打卡

一 學習內容 task4 建模調參 線性回歸模型 模型效能驗證 嵌入式特徵選擇 模型對比 模型調參 model linearregression normalize true model model.fit train x,train y print intercept model.intercep...

第四次打卡

文章目錄 一 批量歸一化和殘差網路 二 凸優化 三 梯度下降 四 目標檢測基礎 五 影象風格遷移 六 影象分類案例1 七 影象分類案例2 八 gan 九 dcgan 十 總結 一 批量歸一化和殘差網路 批量歸一化 1 對全連線層做批量歸一化 2 對卷積層做批量歸 化 3 時的批量歸 化 殘差網路 1...

機器學習第四次作業

1.本節重點知識點用自己的話總結出來,可以配上,以及說明該知識點的重要性 1 機器學習演算法中回歸演算法的分類 2 回歸與分類的區別 分類和回歸的區別在於輸出變數的型別 的目標函式是否連續 定量輸出稱為回歸,或者說是連續變數 定性輸出稱為分類,或者說是離散變數 3 線性回歸的定義 定義 線性回歸通過...