當前位置:首頁 » 編程語言 » pythonlogistic

pythonlogistic

發布時間: 2023-06-28 04:09:07

⑴ 交叉熵損失函數是什麼

平滑函數。

交叉熵損失函數,也稱為對數損失或者logistic損失。當模型產生了預測值之後,將對類別的預測概率與真實值(由0或1組成)進行不比較,計算所產生的損失,然後基於此損失設置對數形式的懲罰項。

在神經網路中,所使用的Softmax函數是連續可導函數,這使得可以計算出損失函數相對於神經網路中每個權重的導數(在《機器學習數學基礎》中有對此的完整推導過程和案例,這樣就可以相應地調整模型的權重以最小化損失函數。

(1)pythonlogistic擴展閱讀:

注意事項:

當預測類別為二分類時,交叉熵損失函數的計算公式如下圖,其中y是真實類別(值為0或1),p是預測類別的概率(值為0~1之間的小數)。

計算二分類的交叉熵損失函數的python代碼如下圖,其中esp是一個極小值,第五行代碼clip的目的是保證預測概率的值在0~1之間,輸出的損失值數組求和後,就是損失函數最後的返回值。

⑵ 怎麼用Python將圖像邊界用最小二乘法擬合成曲線

本文實例講述了Python基於最小二乘法實現曲線擬合。分享給大家供大家參考,具體如下:

這里不手動實現最小二乘,調用scipy庫中實現好的相關優化函數。

考慮如下的含有4個參數的函數式:

希望本文所述對大家Python程序設計有所幫助。

⑶ Logistic函數(sigmoid函數)

Logistic函數的表示形式如下:

它的函數圖像如下,由於函數圖像很像一個「S」型,所以該函數又叫 sigmoid 函數。

滿足的性質:

1.對稱性,關於(0,0.5)中心對稱

2.邏輯斯諦方程即微分方程

最早logistic函數是皮埃爾·弗朗索瓦·韋呂勒在1844或1845年在研究它與人口增長的關系時命名的。廣義Logistic曲線可以模仿一些情況人口增長( P )的 S 形曲線。起初階段大致是 指數增長 ;然後隨著開始變得飽和,增加變慢;最後,達到成熟時增加停止。

當一個物種遷入到一個新生態系統中後,其數量會發生變化。假設該物種的起始數量小於環境的最大容納量,則數量會增長。該物種在此生態系統中有天敵、食物、空間等資源也不足(非理想環境),則增長函數滿足邏輯斯諦方程,圖像呈S形,此方程是描述在資源有限的條件下種群增長規律的一個最佳數學模型。在以下內容中將具體介紹邏輯斯諦方程的原理、生態學意義及其應用。

Logistic regression (邏輯回歸)是當前業界比較常用的機器學習方法,用於估計某種事物的可能性。之前在經典之作《數學之美》中也看到了它用於廣告預測,也就是根據某廣告被用戶點擊的可能性,把最可能被用戶點擊的廣告擺在用戶能看到的地方,然後叫他「你點我啊!」用戶點了,你就有錢收了。這就是為什麼我們的電腦現在廣告泛濫的原因了。

還有類似的某用戶購買某商品的可能性,某病人患有某種疾病的可能性啊等等。這個世界是隨機的(當然了,人為的確定性系統除外,但也有可能有雜訊或產生錯誤的結果,只是這個錯誤發生的可能性太小了,小到千萬年不遇,小到忽略不計而已),所以萬物的發生都可以用可能性或者幾率(Odds)來表達。「幾率」指的是某事物發生的可能性與不發生的可能性的比值。

Logistic regression可以用來回歸,也可以用來分類,主要是二分類。它不像SVM直接給出一個分類的結果,Logistic Regression給出的是這個樣本屬於正類或者負類的可能性是多少,當然在多分類的系統中給出的是屬於不同類別的可能性,進而通過可能性來分類。

假設我們的樣本是{ x , y},y是0或者1,表示正類或者負類, x 是我們的m維的樣本特徵向量。那麼這個樣本 x 屬於正類,也就是y=1的「概率」可以通過下面的邏輯函數來表示:

這里的 θ 是模型參數,也就是回歸系數,σ是sigmoid函數。這樣y=0的「概率」就是:

考查邏輯斯蒂回歸模型的特點,一個事件的幾率(oods)是指這件事發生的概率與不發生概率的比值,如果事件發生的概率是p,那麼該事件的幾率是p/(1-p),該事件的對數幾率(log odds)或者logit函數是

對於邏輯斯蒂回歸而言,可以得到如下的對數幾率

這就是說,在邏輯斯蒂回歸模型中,輸出y=1的對數幾率是輸入x的線性函數,或者說,輸出y=1的對數幾率是由輸入x的線性函數表示的模型,即邏輯斯蒂回歸模型。換句話說,y就是我們的關系變數,例如她喜不喜歡你,與多個因素有關,比如你的人品,你的長相,你是否有錢等。我們把這些因素表示成變數x 1 , x 2 ,…, x m ,那麼這個女生是怎麼考慮這些因素的呢,每個人心理其實都有一桿秤,例如有人比較看重你的人品,人品的權重是0.8,;也有人比較看重你有錢,有錢的權重設置成0.7等等。我們把這些對應於x 1 , x 2 ,…, x m 的權值叫做回歸系數,表達為θ 1 , θ 2 ,…, θ m 。他們的加權和就是你在心目中的得分。

在參數學習時,可以用極大似然估計方法求解。假設我們有n個獨立的訓練樣本{( x 1 , y 1 ) ,( x 2 , y 2 ),…, ( x n , y n )},y={0, 1}。那每一個觀察到的樣本( x i , y i )出現的概率是

對於整個樣本集,每個樣本的出現都是獨立的,n個樣本出現的似然函數為(n個樣本的出現概率是他們各自的概率乘積)

那麼上述的似然函數就是模型的代價函數(cost function),我們要求的參數就是θ*。我們稍微對上式進行轉換

對L(θ)的極大值,得到θ的估計值。問題變成了以對數似然函數為木匾函數的最優化問題。用L(θ)對θ求導,得到

無法解析求解的,所以一般使用迭代的方法求解,通常採用梯度下降法和擬牛頓法。

上面介紹的是兒分類的模型,用於二類分類。可以將其推廣為多項邏輯斯蒂回歸模型(multi-nominal regression model),用於多分類,假設離散隨機變數Y的取值是{1,2,3,...,K}那麼多項邏輯斯蒂回歸的模型是

同理,二項邏輯斯蒂回歸的參數估計的方法也可以推廣到多項邏輯斯蒂回歸。

[1]. 機器學習演算法與Python實踐之(七)邏輯回歸(Logistic Regression)

[2].《統計學習方法》 李航 著

⑷ Python3.4機器學習的Logistic回歸演算法的stocGradAscent1(dataMatrix, classLabels, numIter=150)問題求解

把del那句改成del(list(dataIndex)[randIndex])

⑸ python做邏輯回歸 怎麼把導入的數據分成x,y

簡介
本例子是通過對一組邏輯回歸映射進行輸出,使得網路的權重和偏置達到最理想狀態,最後再進行預測。其中,使用GD演算法對參數進行更新,損耗函數採取交叉商來表示,一共訓練10000次。
2.python代碼
#!/usr/bin/python

import numpy
import theano
import theano.tensor as T
rng=numpy.random

N=400
feats=784
# D[0]:generate rand numbers of size N,element between (0,1)
# D[1]:generate rand int number of size N,0 or 1
D=(rng.randn(N,feats),rng.randint(size=N,low=0,high=2))
training_steps=10000

# declare symbolic variables
x=T.matrix('x')
y=T.vector('y')
w=theano.shared(rng.randn(feats),name='w') # w is shared for every input
b=theano.shared(0.,name='b') # b is shared too.

print('Initial model:')
print(w.get_value())
print(b.get_value())

# construct theano expressions,symbolic
p_1=1/(1+T.exp(-T.dot(x,w)-b)) # sigmoid function,probability of target being 1
prediction=p_1>0.5
xent=-y*T.log(p_1)-(1-y)*T.log(1-p_1) # cross entropy
cost=xent.mean()+0.01*(w**2).sum() # cost function to update parameters
gw,gb=T.grad(cost,[w,b]) # stochastic gradient descending algorithm

#compile
train=theano.function(inputs=[x,y],outputs=[prediction,xent],updates=((w,w-0.1*gw),(b,b-0.1*gb)))
predict=theano.function(inputs=[x],outputs=prediction)

# train
for i in range(training_steps):
pred,err=train(D[0],D[1])

print('Final model:')
print(w.get_value())
print(b.get_value())
print('target values for D:')
print(D[1])
print('prediction on D:')
print(predict(D[0]))

print('newly generated data for test:')
test_input=rng.randn(30,feats)
print('result:')
print(predict(test_input))

3.程序解讀
如上面所示,首先導入所需的庫,theano是一個用於科學計算的庫。然後這里我們隨機產生一個輸入矩陣,大小為400*784的隨機數,隨機產生一個輸出向量大小為400,輸出向量為二值的。因此,稱為邏輯回歸。
然後初始化權重和偏置,它們均為共享變數(shared),其中權重初始化為較小的數,偏置初始化為0,並且列印它們。
這里我們只構建一層網路結構,使用的激活函數為logistic sigmoid function,對輸入量乘以權重並考慮偏置以後就可以算出輸入的激活值,該值在(0,1)之間,以0.5為界限進行二值化,然後算出交叉商和損耗函數,其中交叉商是代表了我們的激活值與實際理論值的偏離程度。接著我們使用cost分別對w,b進行求解偏導,以上均為符號表達式運算。
接著我們使用theano.function進行編譯優化,提高計算效率。得到train函數和predict函數,分別進行訓練和預測。
接著,我們對數據進行10000次的訓練,每次訓練都會按照GD演算法進行更新參數,最後我們得到了想要的模型,產生一組新的輸入,即可進行預測。

熱點內容
騰訊雲伺服器購買網址 發布:2025-02-11 21:37:46 瀏覽:60
安卓電話視頻怎麼投電視上 發布:2025-02-11 21:32:27 瀏覽:18
易簽到源碼 發布:2025-02-11 21:31:03 瀏覽:498
編程班會 發布:2025-02-11 21:27:19 瀏覽:738
ubuntu編譯fortran 發布:2025-02-11 21:21:59 瀏覽:201
雲伺服器寬頻單位 發布:2025-02-11 20:48:11 瀏覽:538
安卓數據線公頭是哪個 發布:2025-02-11 20:45:42 瀏覽:812
網址原始密碼是什麼 發布:2025-02-11 20:33:52 瀏覽:72
怎麼創建伺服器我的世界網易 發布:2025-02-11 20:18:36 瀏覽:467
伺服器電腦與客戶端的連接 發布:2025-02-11 20:18:32 瀏覽:36