Python邏輯迴歸

安全劍客發表於2020-02-29
這篇文章主要介紹了Python利用邏輯迴歸分類實現模板的思路,本文透過例項程式碼給大家介紹的非常詳細,具有一定的參考借鑑價值,需要的朋友可以參考下

Logistic Regression Classifier邏輯迴歸主要思想就是用最大似然機率方法構建出方程,為最大化方程,利用牛頓梯度上升求解方程引數。

優點:計算代價不高,易於理解和實現。
缺點:容易欠擬合,分類精度可能不高。
使用資料型別:數值型和標稱型資料。
好了,下面開始正文。

演算法的思路我就不說了,我就提供一個萬能模板,適用於任何緯度資料集。
雖然程式碼類似於梯度下降,但他是個分類演算法

定義sigmoid函式
def sigmoid(x):
return 1/(1+np.exp(-x))
進行邏輯迴歸的引數設定以及迭代
def weights(x,y,alpha,thershold):
#初始化引數
m,n = x_train.shape
theta = np.random.rand(n) #引數
cnt = 0 # 迭代次數
max_iter = 50000
#開始迭代
while cnt < max_iter:
cnt += 1
diff = np.full(n,0)
for i in range(m):
diff = (y[i]-sigmoid(theta.T @ x[i]))*x[i]
theta = theta + alpha * diff
if(abs(diff)<thershold).all():
break
return theta
預測函式
def predict(x_test,theta):
if sigmoid(theta.T @ x_test)>0.5:
return 1
else:return 0
呼叫函式
x_train = np.array([[1,2.697,6.254],
[1,1.872,2.014],
[1,2.312,0.812],
[1,1.983,4.990],
[1,0.932,3.920],
[1,1.321,5.583],
[1,2.215,1.560],
[1,1.659,2.932],
[1,0.865,7.362],
[1,1.685,4.763],
[1,1.786,2.523]])
y_train = np.array([1,0,0,1,0,1,0,0,1,0,1])
alpha = 0.001 # 學習率
thershold = 0.01 # 指定一個閾值,用於檢查兩次誤差
print(weights(x_train,y_train,alpha,thershold))
總結

以上所述是小編給大家介紹的Python利用邏輯迴歸分類實現模板,希望對大家有所幫助!

原文地址:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559985/viewspace-2677764/,如需轉載,請註明出處,否則將追究法律責任。

相關文章