1. 程式人生 > 程式設計 >Python利用邏輯迴歸分類實現模板

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],2.312,0.812],1.983,4.990],0.932,3.920],1.321,5.583],2.215,1.560],1.659,2.932],0.865,7.362],1.685,4.763],1.786,2.523]])
y_train = np.array([1,1,1])
alpha = 0.001 # 學習率
thershold = 0.01 # 指定一個閾值,用於檢查兩次誤差
print(weights(x_train,y_train,thershold))

總結

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