機器學習入坑指南(五) 邏輯回歸

2022-08-17 19:30:21 字數 1982 閱讀 6364

邏輯回歸用於解決「二分類」問題,比如判斷明天是晴是雨,判斷一封郵件是否是垃圾郵件,判斷腫瘤是否是惡性的等等。

讓我們舉個例子來說明為什麼這類問題適合用邏輯回歸而不是線性回歸來解決。

假如我們想用腫瘤的大小判斷它是否為惡性,根據樣本,得到如下的線性回歸模型:

看起來這條線擬合地並不是很令人滿意,但似乎還是能夠解決問題的,我們把輸出的中值作為閾值,就可以得到正確的分類結果。

但如果在右側再加入乙個樣本,直線會發生以下改變:

很明顯出現了矛盾。這個時候,假如我們用於**的模型長下面這樣:

好像問題就迎刃而解了呢!那麼什麼函式長這樣呢?經過一些科學的設想與推導(參考「阿拉丁吃公尺粉的文章 - 邏輯回歸的簡單解釋」),我們發現 sigmoid 函式,即

$$s(x) = \frac}$$

非常符合這個特性,而且與我們需要解決的問題的思路——通過概率來判斷分類的情況相統一。

接下來,問題變成了求 $\theta$ 的值,與線性回歸一樣,我們可以找出損失函式,再使用梯度下降法(參考「邏輯回歸詳解」、「如何理解梯度下降法」)來求得 $\theta$。

對有多元輸入的情況,則需要求出 $\theta^t$。

# 導入庫

import numpy as np

import matplotlib.pyplot as plt

import pandas as pd

# 匯入資料

dataset = pd.read_csv('social_network_ads.csv')

x = dataset.iloc[:, [2, 3]].values

y = dataset.iloc[:, 4].values

# 分割

from sklearn.cross_validation import train_test_split

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.25, random_state = 0)

# 特徵縮放

from sklearn.preprocessing import standardscaler

sc = standardscaler()

x_train = sc.fit_transform(x_train)

x_test = sc.transform(x_test)

# 擬合邏輯回歸模型

from sklearn.linear_model import logisticregression

classifier = logisticregression()

classifier.fit(x_train, y_train)

這裡我們使用「混淆矩陣」來評估**的結果。混淆矩陣就是將**的結果與測試集中實際的結果進行對比,比如矩陣

$$\begin12

& 1\ 2

& 14

\end$$

是指**為第 1 類,實際也為第 1 類的結果有 12 個,**為第 2 類,實際為第 1 類的結果有 1個;

**為第 1 類,實際為第 2 類的有 2 個,**為第 2 類,實際也為第 2 類的有14 個。

# 使用測試集**

y_pred = classifier.predict(x_test)

# 構建混淆矩陣

from sklearn.metrics import confusion_matrix

cm = confusion_matrix(y_test, y_pred)

可以看出,實際應用時使用的**非常簡單。但是我們只有理解了演算法本身,才能更好地利用它。

歡迎關注 evan 的部落格

機器學習 邏輯回歸

邏輯回歸 線性回歸的式子,作為邏輯回歸的輸入 適用場景 二分類 線性回歸的輸入 sigmoid函式 分類 0,1 概率值 計算公式 當目標值為1時 損失函式的變化 當目標值為0時 損失函式的變化 下面用乙個例項來說明邏輯回歸的用法 癌症概率 部分資料的截圖如下 資料描述 699條樣本,供11列資料,...

機器學習 邏輯回歸

coding utf 8 import pandas as pd import seaborn as sns from sklearn.model selection import train test split import matplotlib.pyplot as plt 用於畫圖 from ...

機器學習 邏輯回歸

lr指的是logistic regression,邏輯回歸。而不是linear regression,線性回歸,不要問為什麼,記住它就好了,haha。它是一種監督學習分類演算法,不是回歸演算法!這裡千萬要注意啦。lr常用於二分類問題,0或者1 假如我們有一堆二維資料,也就是這堆資料有2個特徵x1和x...