机器算法之逻辑回归(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)

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

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

相关推荐
csdn_aspnet26 分钟前
Python 算法快闪 LeetCode 编号 70 - 爬楼梯
python·算法·leetcode·职场和发展
AI算法沐枫2 小时前
深度学习python代码处理科研测序数据
数据结构·人工智能·python·深度学习·决策树·机器学习·线性回归
哥布林学者2 小时前
高光谱拼接算法(一)扫推式成像和航带拼接算法
机器学习·高光谱成像
malog_3 小时前
大语言模型后训练全解析
人工智能·深度学习·机器学习·ai·语言模型
m0_629494733 小时前
LeetCode 热题 100-----26.环形链表 II
数据结构·算法·leetcode·链表
壹号用户3 小时前
用队列实现栈
数据结构·算法
做人求其滴4 小时前
面试经典 150 题 380 274
c++·算法·面试·职场和发展·力扣
daad7774 小时前
记一组无人机IMU传感器数据
算法
计算机安禾4 小时前
【c++面向对象编程】第42篇:模板特化与偏特化:为特定类型定制实现
开发语言·c++·算法