tensorflow实现二分类

在这里插入图片描述

# 导入所需库和模块
from tensorflow.keras.layers import Dense, Input, Activation  # 导入神经网络层和激活函数模块
from tensorflow.keras.models import Sequential  # 导入Keras的Sequential模型
import pandas as pd  # 导入Pandas库用于数据处理
import numpy as np  # 导入NumPy库用于数值计算
from matplotlib import pyplot as plt  # 导入Matplotlib库用于数据可视化
from sklearn.model_selection import train_test_split  # 导入数据集分割模块
from sklearn.metrics import accuracy_score  # 导入评估模块# 创建神经网络模型
model = Sequential()  # 创建Sequential模型,用于堆叠神经网络层# 添加输入层和隐藏层
model.add(Dense(units=20, input_dim=2, activation='sigmoid'))  # 添加具有20个神经元和sigmoid激活函数的隐藏层
model.add(Dense(units=1, activation='sigmoid'))  # 添加具有1个神经元和sigmoid激活函数的输出层# 查看模型结构摘要
model.summary()# 编译模型,配置优化器、损失函数和评估指标
model.compile(loss='categorical_crossentropy',  # 使用分类交叉熵作为损失函数optimizer='sgd',  # 使用随机梯度下降算法进行优化metrics=['accuracy'])  # 评估指标为准确率data = pd.read_csv('D:/pythonDATA/data.csv')  # 从CSV文件中读取数据
X = data.drop(['y'], axis=1)  # 特征变量
y = data.loc[:, 'y']  # 目标变量# 数据可视化
fig1 = plt.figure(figsize=(5, 5))  # 创建画布
passed = plt.scatter(X.loc[:, 'x1'][y == 1], X.loc[:, 'x2'][y == 1])  # 目标为1的数据点
filed = plt.scatter(X.loc[:, 'x1'][y == 0], X.loc[:, 'x2'][y == 0])  # 目标为0的数据点
plt.legend((passed, filed), ('passed', 'filed'))  # 设置图例
plt.xlabel('x1')  # x轴标签
plt.ylabel('x2')  # y轴标签
plt.title('raw data')  # 标题
plt.show()  # 显示图形# 数据分割(训练集和测试集)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=10)  # 将数据集划分为训练集和测试集# 重新编译模型以使用不同的优化器和损失函数
model.compile(optimizer='adam', loss='binary_crossentropy')  # 配置解决问题的方法和损失函数# 进行拟合训练,迭代训练三千次,降低其损失函数
model.fit(X_train, y_train, epochs=3000)  # 拟合模型,进行训练# 进行预测
y_test_predict = model.predict_classes(X_test)  # 对测试集进行预测
accuracy_test = accuracy_score(y_test, y_test_predict)  # 计算预测准确率# 生成范围内的预测结果
xx, yy = np.meshgrid(np.arange(0, 1, 0.01), np.arange(0, 1, 0.01))  # 创建预测范围
x_range = np.c_[xx.ravel(), yy.ravel()]  # 生成范围内所有点的坐标
print("输出坐标:")
print(x_range)
y_range_predict = model.predict_classes(x_range)  # 预测范围内所有点的类别# 格式化输出并绘图展示结果
y_range_predict_form = pd.Series(i[0] for i in y_range_predict)  # 将预测结果格式化为Series类型print(y_range_predict_form)  # 打印格式化后的预测结果
print(accuracy_test)  # 打印预测准确率fig2 = plt.figure(figsize=(5, 5))  # 创建画布
passed_predict = plt.scatter(x_range.loc[:, 'x1'][y == 1], x_range.loc[:, 'x2'][y == 1])  # 预测为1的数据点
filed_predict = plt.scatter(x_range.loc[:, 'x1'][y == 0], x_range.loc[:, 'x2'][y == 0])  # 预测为0的数据点passed = plt.scatter(X.loc[:, 'x1'][y == 1], X.loc[:, 'x2'][y == 1])  # 实际为1的数据点
filed = plt.scatter(X.loc[:, 'x1'][y == 0], X.loc[:, 'x2'][y == 0])  # 实际为0的数据点plt.legend((passed, filed, passed_predict, filed_predict), ('passed', 'filed', 'passed_predict', 'filed_predict'))  # 设置图例
plt.xlabel('x1')  # x轴标签
plt.ylabel('x2')  # y轴标签
plt.title('raw result')  # 标题
plt.show()  # 显示图形

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/701739.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TreeMap详解:Java 有序 Map 原理与实现

哈喽,各位小伙伴们,你们好呀,我是喵手。运营社区:C站/掘金/腾讯云;欢迎大家常来逛逛 今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一…

银河麒麟V10操作系统编译LLVM18踩坑记录

1、简述 要在银河麒麟V10操作系统上编译一个LLVM18,这个系统之前确实也没有用过,所以开始了一系列的摸排工作,进行一下记录。 首先肯定是要搞一个系统,所以去到银河麒麟的网站,填写了一个申请 产品试用申请国产操作系…

3dmax材质库导入方法?3dmax云渲染速度体验

3ds Max 材质库包含多种素材,如金属、木材、布料和石材等,但用户在导入材质时常遇到问题。本文将介绍如何在3ds Max中成功导入材质,并探讨使用云渲染服务来加速渲染过程,提高项目效率。 一、3dmax材质库导入教程 自建材质导入方法…

第1章 初始Spring Boot【仿牛客网社区论坛项目】

第1章 初始Spring Boot【仿牛客网社区论坛项目】 前言推荐项目总结第1章初识Spring Boot,开发社区首页1.课程介绍2.搭建开发环境3.Spring入门体验IOC容器体验Bean的生命周期体验配置类体验依赖注入体验三层架构 4.SpringMVC入门配置体验响应数据体验响应Get请求体验…

如何利用3D可视化大屏提升信息展示效果?

老子云3D可视化平台https://www.laozicloud.com/ 引言 在信息爆炸的时代,如何有效地传达和展示信息成为了各行各业的一大挑战。传统的平面展示方式已经无法满足人们对信息展示的需求,3D可视化大屏应运而生,成为了提升信息展示效果的利器。本…

JavaScript异步编程——10-async异步函数【万字长文,感谢支持】

异步函数(用 async 声明的函数) 异步函数的定义 使用async关键字声明的函数,称之为异步函数。在普通函数前面加上 async 关键字,就成了异步函数。语法举例: // 写法1:函数声明的写法async function foo1(…

Centos 6.10 安装oracle10.2.0.1

由于阿里云机房要下架旧服务器,单位未购买整机迁移服务,且业务较老不兼容Oracle11g,所以新购买一台新服务器进行安装Oracle10.2.0.1 ,后续再将数据迁移到新服务器上。 对外ip 内部ip 数据库版本 操作系统版本 实例名 源库 1…

风电功率预测 | 基于PSO-BP神经网络实现风电功率预测(附matlab完整源码)

风电功率预测 风电功率预测完整代码风电功率预测 基于粒子群优化算法(Particle Swarm Optimization, PSO)的BP神经网络是一种常见的方法,用于实现风电功率预测。下面是一个基于PSO-BP神经网络实现风电功率预测的一般步骤: 数据准备:收集与风电场发电功率相关的数据,包括…

sd卡修复方法

如何修复损坏或损坏的SanDisk设备 1.使用命令提示符修复损坏的SanDisk SD卡 按“Windows”按钮,键入“command”并按Enter键现在,使用文件资源管理器窗口中的垂直三个菜单选择“此设备”,查看存储卡字母切换到命令提示符窗口并键入“chkdsk”…

克鲁斯CLOOS机器人维修知识分享

克鲁斯工业机器人是一种高度精密的自动化设备,广泛应用于制造业、物流等领域。为了确保机器人的正常运行,了解一些基本的CLOOS工业机械手维修知识是必不可少的。 【常见CLOOS机械臂故障及解决方法】 1. 机器人无法启动:检查电源是否正常&…

【启程Golang之旅】环境设置、工具安装与代码实践

欢迎来到Golang的世界!在当今快节奏的软件开发领域,选择一种高效、简洁的编程语言至关重要。而在这方面,Golang(又称Go)无疑是一个备受瞩目的选择。在本文中,带领您探索Golang的世界,一步步地了…

3.TCP的三次握手和四次挥手

一、前置知识 TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。在传输数据前通信双方必须建立连接(所谓连接,是指客户端和服务端各自保存一份关于对方的信息,比如ip地址,端口号等)。TCP通过三次握手建立一个…