机器算法之逻辑回归(Logistic Regression)详解

一、什么是逻辑回归?

逻辑回归并不是传统意义上的回归分析,而是一种用于处理二分类问题的线性模型。它通过计算样本属于某一类别的概率来进行分类,尽管名字中有"回归"二字,但它实际上是一种分类算法。简单来说,逻辑回归回答的是"这件事发生的可能性有多大"。

二、逻辑回归的基本原理

在讲原理之前,我们先来了解一下逻辑回归的数学基础。逻辑回归的核心是一个Logistic函数(或称为Sigmoid函数),它的公式如下:

g(z) = \\frac{1}{1 + e\^{-z}}

其中,( z = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + ... + \beta_n x_n ),( \beta )是回归系数,( x )是独立变量。

这个函数的特点是,当输入值趋向负无穷时,输出为0;当输入值趋向正无穷时,输出为1;当输入值为0时,输出为0.5。这种形状使得逻辑回归非常适合用于概率估计。

三、Python代码实现逻辑回归

接下来,让我们通过Python代码来实现一个简单的逻辑回归。我们将使用scikit-learn库,这是一个强大的机器学习库。

在导入必要的库之前,我们得检查自己python环境是否OK?

如果还没有安装的话,可以看我之前的文章:环境安装

1.导入必要的库

python 复制代码
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
import matplotlib.pyplot as plt

2.加载数据集

这里我们以著名的鸢尾花(Iris)数据集为例,它包含了150个样本和4个特征。

python 复制代码
from sklearn.datasets import load_iris
data = load_iris()
X = data.data
y = data.target

3.拆分数据集为训练集和测试集

python 复制代码
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

4.创建逻辑回归模型并进行训练

python 复制代码
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)

5.进行预测并评估模型

python 复制代码
y_pred = model.predict(X_test)
print("准确率:", accuracy_score(y_test, y_pred))
print("精确率:", precision_score(y_test, y_pred, average='macro'))
print("召回率:", recall_score(y_test, y_pred, average='macro'))
print("F1分数:", f1_score(y_test, y_pred, average='macro'))

6.可视化决策边界

为了更直观地了解逻辑回归的决策过程,我们可以绘制决策边界。以下是二维数据的可视化示例:

python 复制代码
def plot_decision_boundary(model, X, y):
    h = .02  # step size in the mesh
    x_min, x_max = X[:, 0].min() - 1, X[:, 0].max() + 1
    y_min, y_max = X[:, 1].min() - 1, X[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    Z = model.predict(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    plt.contourf(xx, yy, Z, alpha=0.8)
    plt.scatter(X[:, 0], X[:, 1], c=y, edgecolors='k', marker='o')
    plt.show()

plot_decision_boundary(model, X_test, y_test)

好了本节内容分享大概就是这些了!

以上代码将帮助我们理解逻辑回归 是如何通过决策边界区分不同类别的。

相关推荐
vibecoding日记11 小时前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr213813 小时前
Verilog参数化游程编码RLE模块
算法
望易13 小时前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络17 小时前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
HjhIron1 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩1 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹1 天前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术2 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc
浮生望2 天前
JS字符串与回文算法:从包装类到双指针的面试进阶之路
javascript·算法