当前位置: 首页 > article >正文

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

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.kler.cn/a/523963.html

相关文章:

  • JavaScript - Web APIs(下)
  • 支持selenium的chrome driver更新到132.0.6834.110
  • 蓝桥杯例题四
  • K8s运维管理平台 - KubeSphere 3.x 和4.x 使用分析:功能较强,UI美观
  • 出现 Error processing condition on org.springframework.cloud.openfeign 解决方法
  • AndroidCompose Navigation导航精通1-基本页面导航与ViewPager
  • 16届蓝桥杯寒假刷题营】第2期DAY5IOI赛
  • Direct2D 极速教程(1) —— 画图形
  • Linux 学习笔记__Day3
  • 零刻SER7接口及配置跑分
  • AI 浪潮席卷中国年,开启科技新春新纪元
  • 创作三载·福启新章2025
  • 解决 -bash rz:command not found
  • [权限提升] 操作系统权限介绍
  • 二叉树-堆(补充)
  • 动态规划DP 数字三角型模型 最低通行费用(题目详解+C++代码完整实现)
  • vue中onclick如何调用methods中的方法
  • Zookeeper(32) Zookeeper的版本号(version)是什么?
  • 【BUUCTF】[羊城杯 2020]Blackcat1
  • ultralytics 是什么?
  • STM32简介
  • MySQL(单表访问)
  • 代码随想录算法【Day34】
  • [ABC137E] Coins Respawn 题解
  • YOLOv11-ultralytics-8.3.67部分代码阅读笔记-block.py
  • LTV预估 | 大R挖掘器ExpLTV