cost函式py表示式

2021-10-25 05:48:23 字數 2620 閱讀 8169

棒極了!現在,我們需要編寫代價函式來評估結果。

代價函式:

j (θ

)=1m

∑i=1

m[−y

(i)log⁡(

hθ(x

(i))

)−(1

−y(i

))log⁡(1

−hθ(

x(i)

))]j\left( \theta \right)=\frac\sum\limits_^^}\log \left( _}\left( ^} \right) \right)-\left( 1-^} \right)\log \left( 1-_}\left( ^} \right) \right)]}

j(θ)=m

1​i=

1∑m​

[−y(

i)log(hθ

​(x(

i)))

−(1−

y(i)

)log(1

−hθ​

(x(i

)))]

這裡−y(i

)-^}

−y(i)x(i

)^}x(i)

log ⁡(

hθ(x

(i))

)\log \left( _}\left( ^} \right)\right)

log(hθ

​(x(

i)))

中的(i)都指多個樣本,具體來說就是多行資料。所以−y(

i)-^}−y

(i)與log⁡(

hθ(x

(i))

)\log \left( _}\left( ^} \right)\right)

log(hθ

​(x(

i)))

的結果 在做對應行相乘,在**中對應的是對應元素相乘的np.multiply(-y, np.log(sigmoid(x * theta.t))),而不是矩陣乘法 y * np.log(sigmoid(x * theta.t))

def

cost

(theta, x, y)

: theta = np.matrix(theta)

x = np.matrix(x)

y = np.matrix(y)

first = np.multiply(

-y, np.log(sigmoid(x * theta.t)))

second = np.multiply((1

- y)

, np.log(

1- sigmoid(x * theta.t)))

return np.

sum(first - second)/(

len(x)

)

def

sigmoid

(z):

return1/

(1+ np.exp(

-z))

不熟悉的函式:np.matrix(x)、np.multiply(y,x)、np.log(x)、np.exp(-z)、x * theta.t

這裡只有x * theta.t是矩陣乘法,其餘都是對位元素相乘(element-wise)

不理解的話,需要自己敲**測試下。

如果對位元素缺失,函式會做自動擴充套件:

不想寫的太清楚,因為看別人或者自己之前寫的文章,不如自己敲**驗證自己的猜想,如果沒有自己的猜想,沒有弄明白問題的願望,別人寫的再明白也學不明白。

正規表示式 py爬蟲篇

re.match試著從字串的起始位置匹配乙個模式,若不能從起始位置匹配成功,match 就返回none.import re content hello 123 4567 world this demo res re.match hello s d d d s d s w sdemo content ...

leetcode 10 300 正規表示式 py

以s aab p c a b 來說明整個的過程 確定dp陣列的第一行,如果遇到了 只要判斷其對應的前面兩個元素的dp值 注意 我們無需判斷p裡面的第乙個值是否為 如果為 那肯定匹配不到為fasle,原陣列正好是fasle,所以直接從2開始判斷即可 for j in range 2,n if p j ...

函式表示式

函式定義有以下兩種方式 一種是函式宣告,一種是函式表示式。函式宣告 在執行 之前會先讀取函式宣告,即函式宣告提公升。函式表示式 常用語法形式是常規的變數賦值語句,即建立乙個匿名函式並賦值給乙個變數。函式表示式在使用之前必須賦值,否則會出錯,這點與函式宣告提公升不同。能夠將匿名函式作為其他函式的值進行...