回覆列表
  • 1 # 你看我獨角獸嗎

    這個簡單,儘管Python的scikit-learn庫提供了易於使用和高效的LogisticRegression類,但我們自己使用NumPy建立自己的實現,可以更好地理解邏輯迴歸演算法。

    資料集

    我們將使用Iris資料集,它包含3個類別,每個類別有50個例項,其中每個類別都表示一種鳶尾花植物。為簡化目標,我們僅介紹前兩個特徵,而且我們簡單使用其中兩個分類,所以這是個二分類模型。

    演算法

    給定一組輸入X,我們希望將它們分配給兩個可能的類別(0或1)之一。Logistic迴歸模型對每個輸入屬於特定類別的機率進行建模。

    假設

    一個函式接受輸入並返回輸出。為了生成機率,邏輯迴歸使用的函式為X的所有值提供0到1之間的輸出。有許多滿足此描述的函式,但是在這種情況下使用的是邏輯函式。在這裡,我們將其稱為sigmoid函式

    梯度下降

    我們的目標是最小化損失函式,而我們必須達到的方法是透過增加/減少權重,即擬合權重。問題是,我們如何知道哪些引數應該更大,哪些引數應該更小?答案是相對於每個權重的損失函式的導數。它告訴我們如果修改引數,loss將如何變化。

    然後,我們透過將它們減去導數乘以學習率來更新權重。

    我們應該重複幾次此步驟,直到獲得最佳解決方案。

    預測

    透過呼叫sigmoid函式,我們可以得出某些輸入x屬於類別1的機率。讓我們假設所有機率≥0.5 =類別1,所有機率<0 =類別0,應根據我們正在處理的業務問題來定義此閾值。

    那現在我們把程式碼全部放在一起。

    評估

    以上程式碼如果我們以較小的學習率和更多的迭代來訓練實現,我們將發現跟sklearn其中邏輯迴歸的權重大致相等。所以我們把上面的程式碼整合一下,就可以得到我們想要的邏輯迴歸演算法,包括梯度下降法。

  • 中秋節和大豐收的關聯?
  • 僵字去掉單人旁還可以加什麼偏旁?