邏輯回歸和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、分析資料:畫出決策邊界
defplotbestfit(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 線性回歸就不在討論了 這裡學習一下 邏輯回歸 邏輯回歸 聽起來是回歸 但實際上他是解決分類問題的 是乙個...