使用numpy自定义数据集 使用tensorflow框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预

embedded/2025/2/1 13:33:25/

1. 引言

逻辑回归(Logistic Regression)是一种常见的分类算法,广泛应用于二分类问题。在本篇博客中,我们将使用numpy生成一个简单的自定义数据集,并使用TensorFlow框架构建和训练逻辑回归模型。训练完成后,我们会保存模型,并演示如何加载保存的模型进行预测。

2. 创建自定义数据集

首先,我们使用numpy生成一个简单的二分类数据集,包含两个特征和对应的标签。标签0表示负类,标签1表示正类。

import numpy as np# 设置随机种子,保证每次运行结果一致
np.random.seed(42)# 生成自定义数据集
X = np.random.rand(100, 2)  # 100个样本,2个特征
y = (X[:, 0] + X[:, 1] > 1).astype(int)  # 标签:如果两个特征之和大于1,标签为1,否则为0

这样我们就得到了一个简单的二分类数据集,X是特征矩阵,y是标签。

3. 构建逻辑回归模型

接下来,我们使用TensorFlow来构建逻辑回归模型。逻辑回归本质上是一个线性模型,通过Sigmoid函数输出概率,最终将其转化为二分类标签。

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense# 构建模型
model = Sequential([Dense(1, input_dim=2, activation='sigmoid')  # 输入层2个特征,输出层1个节点,sigmoid激活函数
])# 编译模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

在这个模型中,我们只用了一个包含一个节点的输出层,使用sigmoid激活函数来输出分类概率。损失函数选择了binary_crossentropy,它是二分类问题常用的损失函数。

4. 训练模型

现在,我们使用生成的数据集来训练模型。

# 训练模型
model.fit(X, y, epochs=50, batch_size=10, verbose=1)

训练过程将进行50个周期,每批次包含10个样本。你可以根据自己的需求调整epochsbatch_size

5. 保存模型

训练完成后,我们将保存模型。TensorFlow提供了方便的保存方法,可以将整个模型(包括模型架构、权重和训练配置)保存在一个文件中。

# 保存模型
model.save('logistic_regression_model.h5')

保存后的模型文件logistic_regression_model.h5将包含模型的所有信息,稍后我们可以重新加载这个模型来进行预测。

6. 加载模型并进行预测

保存的模型可以在后续的工作中重新加载并使用。我们通过tensorflow.keras.models.load_model()来加载保存的模型。

# 加载模型
loaded_model = tf.keras.models.load_model('logistic_regression_model.h5')# 使用加载的模型进行预测
predictions = loaded_model.predict(X)# 输出预测结果(概率值)
print(predictions[:5])  # 打印前5个预测结果

这里我们通过加载的模型对输入数据X进行预测。由于是二分类问题,模型会输出一个概率值,我们可以根据这个概率值将其转换为标签(例如,概率大于0.5为正类)。

7. 总结

在本篇博客中,我们学习了如何使用numpy生成自定义数据集,使用TensorFlow框架构建并训练逻辑回归模型,保存模型并在之后加载模型进行预测。通过这种方式,你可以在训练完成后方便地保存和加载模型,从而实现模型的持久化,便于后续的应用和部署。

希望这篇博客对你理解逻辑回归TensorFlow的使用有所帮助!你可以在此基础上扩展应用到更复杂的模型和数据集。


http://www.ppmy.cn/embedded/158635.html

相关文章

无所不搜,吾爱制造

吾爱论坛作为众多软件资源爱好者的宝藏之地,汇聚了许多优秀的软件作品,堪称软件界的“福地”。许多技术大佬在这里分享自己的创作。 而今天要介绍的,正是吾爱作者“buyaobushuo”自制的多功能娱乐软件——太极。这款软件基于flet开发&#x…

我的2024年博客总结(在工作、博客和生活中找到自己的生活节奏)

文章目录 ⭐前言⭐工作和博客的关联⭐找到自己的生活节奏⭐结束 ⭐前言 大家好,我是yma16,本文主要写2024年博客总结,关于在工作、博客和生活中找到自己的生活节奏。 node系列往期文章 node_windows环境变量配置 node_npm发布包 linux_配置…

RK3568使用QT搭建TCP服务器和客户端

文章目录 一、让RK3568开发板先连接上wifi二、客户端代码1. `widget.h` 文件2. `widget.cpp` 文件**详细讲解**1. **`Widget` 类构造函数 (`Widget::Widget`)**2. **UI 布局 (`setupUI`)**3. **连接按钮的槽函数 (`onConnectClicked`)**4. **发送消息按钮的槽函数 (`onSendMess…

《 C++ 点滴漫谈: 二十四 》深入 C++ 变量与类型的世界:高性能编程的根基

摘要 本文深入探讨了 C 中变量与类型的方方面面,包括变量的基本概念、基本与复合数据类型、动态类型与内存管理、类型推导与模板支持,以及类型系统的高级特性。通过全面的理论讲解与实际案例分析,展示了 C 类型系统的强大灵活性与实践价值。…

FFmpeg rtmp推流直播

文章目录 rtmp协议RTMP协议组成RTMP的握手过程RTMP流的创建RTMP消息格式Chunking(Message 分块) rtmp服务器搭建Nginx服务器配置Nginx服务器 librtmp库编译推流 rtmp协议 RTMP(Real Time Messaging Protocol)是由Adobe公司基于Flash Player播放器对应的…

EtherCAT主站IGH-- 24 -- IGH之fsm_slave_config.h/c文件解析

EtherCAT主站IGH-- 24 -- IGH之fsm_slave_config.h/c文件解析 0 预览一 该文件功能`slave_config.c` 文件功能函数预览二 函数功能介绍`slave_config.c` 中主要函数的作用1. `ec_fsm_slave_config_state_start`2. `ec_fsm_slave_config_state_quick_start`3. `ec_fsm_slave_con…

常用的npm镜像源配置方法

常用的npm镜像源配置方法 常用的npm镜像源配置方法一、切换到淘宝镜像源二、切换到腾讯云镜像源三、切换到华为云镜像源四、通过淘宝提供的 cnpm 工具安装包 常用的npm镜像源配置方法 一、切换到淘宝镜像源 配置命令: npm config set registry https://registry.np…

使用 Pipeline 提高 Redis 批量操作性能

使用 Pipeline 提高 Redis 批量操作性能 在 Redis 中,Pipeline(管道) 是一种用于提高批量操作性能的技术。它允许客户端一次性发送多个命令到 Redis 服务器,而不需要等待每个命令的单独响应,从而减少了**网络往返&…