邏輯回歸和sigmoid函式分類

2022-08-02 16:54:10 字數 1856 閱讀 1035

邏輯回歸和sigmoid函式分類:容易欠擬合,分類精度不高,計算代價小,易於理解和實現

sigmoid函式與階躍函式的區別在於:階躍函式從0到1的跳躍在sigmoid函式中是乙個逐漸的變化,而不是突變。

logistic 回歸分類器:在每個特徵上乘以乙個回歸係數,然後將所有的結果值相加,將這個總和代入到sigmoid函式中,得到乙個在0-1之間的數值,大於0.5分為1類,小於0.5分為0類。所以,邏輯回歸也可以被看作是一種概率估計。

關鍵在於求最佳回歸係數。

1、基於最優化方法的最佳回歸係數確定

1)梯度上公升演算法:沿著該函式的梯度方向搜尋,該演算法在到達每個點後都會重新估計移動的方向,迴圈迭代直到滿足停止條件。

梯度下降演算法:求解函式最小值。

#

邏輯回歸梯度上公升優化演算法

defloaddataset():

datamat = ;labelmat =

fr = open('

testset.txt')

for line in

fr.readlines():

linearr =line.strip().split()

return

datamat,labelmat

defsigmoid(inx):

return 1.0/(1+exp(-inx))

defgradascent(datamatin,classlabels):

datamatrix =mat(datamatin)

labelmat =mat(classlabels).transpose()

m,n =shape(datamatrix)

alpha = 0.001maxcycles = 500weights =ones((n,1))

for k in

range(maxcycles):

h = sigmoid(datamatrix *weights)

error = (labelmat -h)

weights = weights +alpha * datamatrix.transpose() *error

return weights

alpha是向目標移動的步長,maxcycles是迭代次數。

2、分析資料:畫出決策邊界

def

plotbestfit(weights):

import

matplotlib.pyplot as plt

datamat,labelmat =loaddataset()

dataarr =array(datamat)

n =shape(dataarr)[0]

xcord1 = ;ycord1 =

xcord2 = ;ycord2 =

for i in

range(n):

if int(labelmat[i])==1:

else

: fig =plt.figure()

ax = fig.add_subplot(111)

ax.scatter(xcord1,ycord1,s=30,c='

red',marker='s'

) ax.scatter(xcord2,ycord2,s=30,c='

green

')

x = arange(-3.0,3.0,0.1)

y = arange(-weights[0] -weights[1]*x)/weights[2]

ax.plot(x,y)

plt.xlabel('x1

'); plt.ylabel('x2'

); plt.show

為什麼邏輯回歸要用sigmoid函式

為什麼邏輯回歸要用sigmoid函式 sigmoid是推導出來的,不是假設出來的,lr的假設是兩個類服從均值不等,方差相等的高斯分布,然後通過貝葉斯決策推導 為什麼假設服從高斯分布 1 因為高斯分布是比較容易處理的分布 2 從資訊理論的角度上看,當均值和方差已知時 儘管你並不知道確切的均值和方差,但...

線性回歸和邏輯回歸

最近開始學習機器學習,有點心得體會,記錄一下,希望大家批評指正 監督學習 supervised learning 根據已有的資料集,知道輸入和輸出結果之間的關係。根據這種已知的關係,訓練得到乙個最優的模型。也就是說,在監督學習中訓練資料既有特徵 feature 又有標籤 label 通過訓練,讓機器...

線性回歸 和 邏輯回歸

跟著b站乙個小姐姐學的 很不錯 1 什麼是回歸 什麼是分類?簡單來說一般回歸問題在數值上是乙個連續的 而分類問題在數值上一般是離散型的 回歸 回歸模型的更傾向於很小的區域 或者是乙個x對應乙個y 線性回歸就不在討論了 這裡學習一下 邏輯回歸 邏輯回歸 聽起來是回歸 但實際上他是解決分類問題的 是乙個...