
- 機器學習基礎
- ML - 首頁
- ML - 簡介
- ML - 入門
- ML - 基本概念
- ML - 生態系統
- ML - Python 庫
- ML - 應用
- ML - 生命週期
- ML - 必備技能
- ML - 實現
- ML - 挑戰與常見問題
- ML - 限制
- ML - 現實生活中的例子
- ML - 資料結構
- ML - 數學
- ML - 人工智慧
- ML - 神經網路
- ML - 深度學習
- ML - 獲取資料集
- ML - 分類資料
- ML - 資料載入
- ML - 資料理解
- ML - 資料準備
- ML - 模型
- ML - 監督學習
- ML - 無監督學習
- ML - 半監督學習
- ML - 強化學習
- ML - 監督學習與無監督學習
- 機器學習資料視覺化
- ML - 資料視覺化
- ML - 直方圖
- ML - 密度圖
- ML - 箱線圖
- ML - 相關矩陣圖
- ML - 散點矩陣圖
- 機器學習統計學
- ML - 統計學
- ML - 平均值、中位數、眾數
- ML - 標準差
- ML - 百分位數
- ML - 資料分佈
- ML - 偏度和峰度
- ML - 偏差和方差
- ML - 假設
- ML 中的迴歸分析
- ML - 迴歸分析
- ML - 線性迴歸
- ML - 簡單線性迴歸
- ML - 多元線性迴歸
- ML - 多項式迴歸
- ML 中的分類演算法
- ML - 分類演算法
- ML - 邏輯迴歸
- ML - K 近鄰演算法 (KNN)
- ML - 樸素貝葉斯演算法
- ML - 決策樹演算法
- ML - 支援向量機
- ML - 隨機森林
- ML - 混淆矩陣
- ML - 隨機梯度下降
- ML 中的聚類演算法
- ML - 聚類演算法
- ML - 基於中心點的聚類
- ML - K 均值聚類
- ML - K 中值聚類
- ML - 均值漂移聚類
- ML - 層次聚類
- ML - 基於密度的聚類
- ML - DBSCAN 聚類
- ML - OPTICS 聚類
- ML - HDBSCAN 聚類
- ML - BIRCH 聚類
- ML - 親和傳播
- ML - 基於分佈的聚類
- ML - 凝聚層次聚類
- ML 中的降維
- ML - 降維
- ML - 特徵選擇
- ML - 特徵提取
- ML - 向後剔除法
- ML - 向前特徵構造
- ML - 高相關性過濾器
- ML - 低方差過濾器
- ML - 缺失值比率
- ML - 主成分分析
- 強化學習
- ML - 強化學習演算法
- ML - 利用與探索
- ML - Q 學習
- ML - REINFORCE 演算法
- ML - SARSA 強化學習
- ML - 演員-評論家方法
- 深度強化學習
- ML - 深度強化學習
- 量子機器學習
- ML - 量子機器學習
- ML - 使用 Python 的量子機器學習
- 機器學習雜項
- ML - 效能指標
- ML - 自動工作流程
- ML - 提升模型效能
- ML - 梯度提升
- ML - 自舉匯聚 (Bagging)
- ML - 交叉驗證
- ML - AUC-ROC 曲線
- ML - 網格搜尋
- ML - 資料縮放
- ML - 訓練和測試
- ML - 關聯規則
- ML - Apriori 演算法
- ML - 高斯判別分析
- ML - 成本函式
- ML - 貝葉斯定理
- ML - 精度和召回率
- ML - 對抗性
- ML - 堆疊
- ML - 輪次
- ML - 感知器
- ML - 正則化
- ML - 過擬合
- ML - P 值
- ML - 熵
- ML - MLOps
- ML - 資料洩露
- ML - 機器學習的貨幣化
- ML - 資料型別
- 機器學習 - 資源
- ML - 快速指南
- ML - 速查表
- ML - 面試問題
- ML - 有用資源
- ML - 討論
機器學習 - 邏輯迴歸
邏輯迴歸是一種常用的用於二元分類問題的演算法,其中目標變數是具有兩個類別的分類變數。它對給定輸入特徵的目標變數的機率進行建模,並預測機率最高的類別。
邏輯迴歸是一種廣義線性模型,其中目標變數遵循伯努利分佈。該模型由輸入特徵的線性函式組成,該函式使用邏輯函式進行轉換以生成 0 到 1 之間的機率值。
線性函式基本上用作另一個函式(例如以下關係中的 g)的輸入:
$$h_{\theta }\left ( x \right )=g\left ( \theta ^{T}x \right )\, 其中\: 0\leq h_{\theta }\leq 1$$
這裡,g 是邏輯或 sigmoid 函式,可以表示如下:
$$g\left ( z \right )=\frac{1}{1+e^{-z}}\: 其中\: z=\theta ^{T}x$$
可以使用以下圖形表示 sigmoid 曲線。我們可以看到 y 軸的值介於 0 和 1 之間,並在 0.5 處穿過軸。

這些類別可以分為正類或負類。如果輸出介於 0 和 1 之間,則輸出屬於正類的機率。在我們的實現中,如果假設函式的輸出≥ 0.5,則將其解釋為正類,否則解釋為負類。
Python 實現
現在,我們將使用 Python 實現上述邏輯迴歸的概念。為此,我們使用名為“iris”的多元花卉資料集。iris 資料集是機器學習中一個眾所周知的資料集,包含三種不同鳶尾花物種的花萼長度、花萼寬度、花瓣長度和花瓣寬度的測量值。我們將使用邏輯迴歸來預測給定鳶尾花測量值的鳶尾花物種。
現在讓我們檢查使用 iris 資料集在 Python 中實現邏輯迴歸的步驟:
載入資料集
首先,我們需要將 iris 資料集載入到我們的 Python 環境中。我們可以使用 scikitlearn 庫載入資料集,如下所示:
from sklearn.datasets import load_iris iris = load_iris() X = iris.data # input features y = iris.target # target variable
繪製訓練資料
這是一個可選步驟,但為了更清楚地瞭解資料集,我們正在繪製訓練資料,如下所示:
import matplotlib.pyplot as plt # plot the training data plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train) plt.xlabel('Sepal length (cm)') plt.ylabel('Sepal width (cm)') plt.title('Iris Training Data') plt.show()
分割資料集
接下來,我們需要將資料集分割成訓練集和測試集。我們將使用 70% 的資料進行訓練,30% 的資料進行測試。
from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
建立邏輯迴歸模型
我們可以使用 scikit-learn 中的 LogisticRegression 類來建立一個邏輯迴歸模型。我們將使用 L2 正則化並將正則化強度設定為 1。
from sklearn.linear_model import LogisticRegression clf = LogisticRegression(penalty='l2', C=1.0, random_state=42)
訓練模型
我們可以使用 fit() 方法在訓練集上訓練模型。
clf.fit(X_train, y_train)
進行預測
訓練完模型後,我們可以使用 predict() 方法在測試集上使用它進行預測。
y_pred = clf.predict(X_test)
評估模型
最後,我們可以使用準確率、精確率、召回率和 F1 分數等指標來評估模型的效能。
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score print('Accuracy:', accuracy_score(y_test, y_pred)) print('Precision:', precision_score(y_test, y_pred, average='macro')) print('Recall:', recall_score(y_test, y_pred, average='macro')) print('F1-score:', f1_score(y_test, y_pred, average='macro'))
在這裡,我們使用平均引數並將值設定為“macro”來分別計算每個類別的指標,然後取平均值。
完整的實現示例
下面是使用 iris 資料集在 python 中實現邏輯迴歸的完整實現示例:
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.linear_model import LogisticRegression import matplotlib.pyplot as plt from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score # load the iris dataset iris = load_iris() X = iris.data # input features y = iris.target # target variable # plot the training data plt.figure(figsize=(7.5, 3.5)) plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train) plt.xlabel('Sepal length (cm)') plt.ylabel('Sepal width (cm)') plt.title('Iris Training Data') plt.show() # split the dataset into training and test sets X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # create the logistic regression model clf = LogisticRegression(penalty='l2', C=1.0, random_state=42) # train the model on the training set clf.fit(X_train, y_train) # make predictions on the test set y_pred = clf.predict(X_test) # evaluate the performance of the model print('Accuracy:', accuracy_score(y_test, y_pred)) print('Precision:', precision_score(y_test, y_pred, average='macro')) print('Recall:', recall_score(y_test, y_pred, average='macro')) print('F1-score:', f1_score(y_test, y_pred, average='macro'))
輸出
執行此程式碼時,它將生成以下繪圖作為輸出:
Accuracy: 1.0 Precision: 1.0 Recall: 1.0 F1-score: 1.0
