您好,登錄后才能下訂單哦!
這篇“python機器學習Logistic回歸原理是什么”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python機器學習Logistic回歸原理是什么”文章吧。
Logistic回歸中雖然有回歸的字樣,但該算法是一個分類算法,如圖所示,有兩類數據(紅點和綠點)分布如下,如果需要對兩類數據進行分類,我們可以通過一條直線進行劃分(w0 * x0 + w1 * x1+w2 * x2)。當新的樣本(x1,x2)需要預測時,帶入直線函數中,函數值大于0,則為綠色樣本(正樣本),否則為紅樣本(負樣本)。
推廣到高維空間中,我們需要得到一個超平面(在二維是直線,在三維是平面,在n維是n-1的超平面)切分我們的樣本數據,實際上也就是求該超平面的W參數,這很類似于回歸,所以取名為Logistic回歸。
當然,我們不直接使用z函數,我們需要把z值轉換到區間[0-1]之間,轉換的z值就是判斷新樣本屬于正樣本的概率大小。 我們使用sigmoid函數完成這個轉換過程,公式如下。通過觀察sigmoid函數圖,如圖所示,當z值大于0時,σ值大于0.5,當z值小于0時,σ值小于于0.5。利用sigmoid函數,使得Logistic回歸本質上是一個基于條件概率的判別模型。
其實,我們現在就是求W,如何求W呢,我們先看下圖,我們都能看出第二個圖的直線切分的最好,換句話說,能讓這些樣本點離直線越遠越好,這樣對于新樣本的到來,也具有很好的劃分,那如何用公式表示并計算這個目標函數呢?
這時就需要這個目標函數的值最大,以此求出θ。
在介紹梯度上升法之前,我們看一個中學知識:求下面函數在x等于多少時,取最大值。
解:求f(x)的導數:2x,令其為0,求得x=0時,取最大值為0。但在函數復雜時,求出導數也很難計算函數的極值,這時就需要使用梯度上升法,通過迭代,一步步逼近極值,公式如下,我們順著導數的方向(梯度)一步步逼近。
利用梯度算法計算該函數的x值:
def f(x_old): return -2*x_old def cal(): x_old = 0 x_new = -6 eps = 0.01 presision = 0.00001 while abs(x_new-x_old)>presision: x_old=x_new x_new=x_old+eps*f(x_old) return x_new -0.0004892181072978443
讀入數據,并繪圖顯示:
def loadDataSet(): dataMat = [];labelMat = [] fr = open('數據/Logistic/TestSet.txt') for line in fr.readlines(): lineArr = line.strip().split() dataMat.append([1.0, float(lineArr[0]), float(lineArr[1])]) labelMat.append(int(lineArr[2])) return dataMat, labelMat
利用梯度迭代公式,計算W:
def sigmoid(inX): return 1.0/(1 + np.exp(-inX)) def gradAscent(dataMatIn, labelMatIn): dataMatrix = np.mat(dataMatIn) labelMat = np.mat(labelMatIn).transpose() m,n = np.shape(dataMatrix) alpha = 0.001 maxCycles = 500 weights = np.ones((n,1)) for k in range(maxCycles): h = sigmoid(dataMatrix * weights) error = labelMat - h weights = weights + alpha * dataMatrix.transpose() * error return weights
通過計算的weights繪圖,查看分類結果
優點:易于理解和計算
缺點:精度不高
以上就是關于“python機器學習Logistic回歸原理是什么”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。