機器學習實戰 Logistic回歸

2021-08-18 09:20:42 字數 2686 閱讀 9354

11

+e−z

1 1+

e−zz=w

0x0+

w1x1

+w2x

2+..

.+wn

xxz =w

0x0+

w1x1

+w2x

2+..

.+wn

xx(z=wt

x z=w

tx) 在每個特徵上都乘以乙個回歸係數,然後把所有結果值相加,將這個總和代入sigmoid函式中,進而得到乙個範圍在0~1直接的數值。(1類:大於0.5; 0類:小於0.5)

梯度上公升法基於的思想是:要找到函式的最大值,最好是沿著該函式的梯度方向探尋 ∇f

(x,y

)=⎛⎝

∂f(x

,y)∂

x∂f(

x,y)

∂y⎞⎠

∇ f(

x,y)

=(∂f

(x,y

)∂x∂

f(x,

y)∂y

)

from numpy import *

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.001

maxcycles = 500

#迭代次數上限

weights = ones((n,1))

for k in range(maxcycles):

h = sigmoid(datamatrix * weights)

error = (labelmat - h)

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

return weights

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 = (-weights[0] - weights[1] * x) / weights[2]

ax.plot(x,y)

plt.xlabel('x1')

plt.ylabel('x2')

plt.show()

if __name__ == '__main__':

dataarr,labelmat = loaddataset()

w = gradascent(dataarr,labelmat)

plotbestfit(w.geta())

輸出結果:

隨機梯度上公升演算法:

def

stocgradascent0

(datamatrix, classlabels):

m,n = shape(datamatrix)

alpha = 0.01

weights = ones(n)

for i in range(m):

h = sigmoid(sum(datamatrix[i]*weights))

error = classlabels[i] - h

weights = weights + alpha * error * datamatrix[i]

return weights

輸出結果:

機器學習 機器學習實戰 Logistic回歸

我們在每個特徵上都乘以乙個回歸係數,然後把所有的結果值相加,將這個總和代入sigmoid函式中,進而得到乙個範圍在0 1之間的數值。任何大於0.5的資料被分入1類,小於0.5的被歸入0類。所以此種回歸也可以被看成是一種概率估計。收集資料 任意 準備資料 由於需要進行距離計算,因此要求資料型別為數值型...

機器學習實戰札記 Logistic回歸

這段時間裡,我一直在嘗試將open nsfw加入到手機,給手機瀏覽器增加色情檢測功能,這個分階段進行,在前面的幾篇文章中,都談到了這方面的嘗試 我的第乙個caffe c 程式 我的第乙個caffe android程式 利用人工智慧檢測色情 然而,當我將open nsfw移植到手機上執行時 原始碼已上...

機器學習實戰筆記 Logistic回歸

這裡我們會提到sigmoid函式,而且這個函式 梯度上公升法和梯度下降法 就像是神經網路的乙個神經元 個人這麼看而已 也像二極體的0.7v電壓,這裡面會提到梯度下降法,也會了解資料中缺失的處理。logistics回歸會讓我們接觸最優化演算法。其實我們生活中這樣的問題很多,例如如何在最短時間內從a地到...