最优化方法Python计算:无约束优化应用——神经网络分类模型

Hello, 2024.
用MLPModel类(详见博文《最优化方法Python计算:无约束优化应用——神经网络回归模型》)和Classification类(详见博文《最优化方法Python计算:无约束优化应用——逻辑分类模型》)可以构建用于分类的神经网络。

class MLPClassifier(Classification, MLPModel):'''神经网络分类模型'''        

用MLPClassifier解决下列案例。
综合案例
乳腺癌是困扰女性的一种疾病。随着医学科学的长足发展,许多病人通过手术可解除病痛,延续生命。然而,对根据检查数据对患者的正确诊断是有效治疗的前提。文件breast-cancer-wisconsin.csv(来自UC Irvine Machine Learning Repository)记录了699例病人的记录。

编号肿块密度大小均匀性形状均匀性边缘粘附性单一细胞大小裸核乏味染色体正常核有丝分裂分类
10000255111213112
100294554457103212
10154253111223112
⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots ⋮ \vdots
89747148643410614
89747148854510414

表中每一行表示一位患者的数据。第1个是患者编号,紧接着的9个是检验数据,最后一个是诊断结果(2表示良性,4表示恶性)。表示患者编号的第1个数据显然与诊断结果无关,接着的9个数据视为患者的特征数据,均为数值数据。其中,第7个“裸核”数据有16个记录是缺失的(表示为“?”),简便起见,我们可以直接删掉这16条记录。

import numpy as np															#导入numpy
data = np.loadtxt('breast-cancer-wisconsin.csv', delimiter=',', dtype=str)	#读取数据文件
X = np.array(data)															#转换为数组
X = X[1:, :]																#去掉表头
Y = X[:, 10].astype(int)													#读取标签数据
X = X[:, 1:10]																#去掉编号列及标签列
print('原数据集共有%d条记录。'%X.shape[0])
a = np.where(X[:, 5]=='?')													#找出裸核缺失记录
X = np.delete(X, a, axis = 0).astype(float)									#删除缺损记录
Y = np.delete(Y, a)
Y = Y // 2																	#转换标签数据值
print('有效记录共有%d条'%X.shape[0])

程序的第2~3行读取文件数据data并将其转换为Numpy二维数组X。第4行去掉表头信息,第5行读取X中最后一列作为标签数Y。第6行去掉X中患者编号列(第0列)及标签列(第10列,已转存Y)。第8行用Numpy的where函数找到“裸核”数据列中值为’?'的行下标,赋予a。第9、10行将下标在a中的记录删除,包括X中特征数据和Y中标签数据。第11行将Y中的值2转换为1,4转换为2,以适应我们为分类模型配置的阈值函数对标签值为连续整数的要求(详见博文《最优化方法Python计算:无约束优化应用——逻辑分类模型》)。运行程序,输出

原数据集共有699条记录。
有效记录共有683

接下来,我们在数据集中随机选取一半数据作为训练集合,来训练一个具有2个隐藏层,分别具有4,3个神经元的网络分类模型,并用剩下的数据作为测试数据来检验模型的训练效果。

……
m = X.shape[0]											#记录数
np.random.seed(2002)
a = np.arange(m)										#下标集
print('随机抽取%d个样本作为训练数据'%(m//2))
index = np.random.choice(a,m//2, replace = False)		#随机取得一半作为训练集下标
index1 = np.setdiff1d(a, index)							#测试集下标
Xtrain = X[index]										#训练集特征数据
Ytrain = Y[index]										#训练集标签数据
Xtest = X[index1]										#测试集特征数据
Ytest = Y[index1]										#测试集标签数据
bcw = MLPClassifier()									#建立模型
bcw.fit(Xtrain, Ytrain, hidden_layer_sizes = (4, 3))	#训练模型
_, acc = bcw.test(Xtest, Ytest)							#测试模型
print('对其余%d个数据进行测试,正确率为%.1f'%(m-m//2,acc)+'%'

本程序代码紧接前程序之后,第1行的省略号即表示前面的程序代码。第2行设记录数为m。第4行将所有记录的下标记为a。第6行在a中随机抽取一般数据为index。第7行将a中除去index的值记为index1。第8~11行分别用index和index1设置训练数据集Xtrain,Ytrain和测试数据集Xtest,Ytest。第12行创建MLPClassifier类神经网络分类模型bcw。第13行用Xtrain,Ytrain将bcw训练成一个含有2个隐藏层,分别含有4、3个神经元的神经网络。第14行用Xtest,Ytest对bcw进行测试。运行程序,输出

……
随机抽取341个样本作为训练数据
训练中...,稍候
61次迭代后完成训练。
对其余342个数据进行测试,正确率为97.7%

效果不错!

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

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

相关文章

TypeScript中的Declare关键字的作用

详细介绍TypeScript中的“declare”关键字的作用,这样你对*.d.ts文件就不陌生了。 当你在TypeScript项目中打开 *.d.ts 声明文件时,你可能会看到 declare 。你知道 declare 是做什么的吗?如果你不知道,读完这篇文章,也许你就会知…

安装VS Code到AWS EC2 Linux 2

文章目录 小结问题及解决参考 小结 本文记录了安装VS Code到AWS EC2 Linux 2。 问题及解决 安装VS Code到AWS EC2 Linux 2采取了以下步骤: 更新VS Code的YUM源: [ec2-userip-100-92-28-119 ~]$ sudo rpm --import https://packages.microsoft.com/k…

2023-12-02 青少年软件编程(C语言)等级考试试卷(一级)解析

2023-12-02 青少年软件编程(C语言)等级考试试卷(一级)解析 一、编程题(共5题,共100分)T1.数的输入和输出 输入一个整数和双精度浮点数,先将浮点数保留2位小数输出,然后输出整数。 时间限制:1000 内存限制:65536 输入 一行两个数,分别为整数N(不超过整型范围),双精…

LanChatRoom局域网聊天室

CPP已经结课,我提交的项目是Qt的入门项目,局域网聊天室LanChatRoom。 这个代码重构了很多遍。第一遍是照着明哥推荐到书,把代码抄了一遍。 但抄下来之后,各种问题,而且是清朝老代码。抄了一遍之后,对代码的…

Python访问ElasticSearch

ElasticSearch是广受欢迎的NoSQL数据库,其分布式架构提供了极佳的数据空间的水平扩展能力,同时保障了数据的可靠性;反向索引技术使得数据检索和查询速度非常快。更多功能参见官网介绍 https://www.elastic.co/cn/elasticsearch/ 下面简单罗列…

python慕课版课后题答案,python慕课作业答案

这篇文章主要介绍了中国大学慕课python测验答案,具有一定借鉴价值,需要的朋友可以参考下。希望大家阅读完这篇文章后大有收获,下面让小编带着大家一起了解一下。 Flag 8月29日前学习完MOOC_Python课程,以下各测试题均来自于Python…

数据结构-线性表-顺序存储

线性表概念 线性表是一种线性结构,它是由n(n≥0)个数据元素a1,a2,…,an组成的有限序列。 线性表的基本运算 初始化 Initiate (L):建立一个空表 L(),L 不含数据元素。 求表长度 Length(L):返回线性表 L 的…

深度学习|10.2 边缘检测示例 10.3 更多边缘检测

文章目录 如何在编程中实现卷积运算使用卷积实现边缘检测结果矩阵的元素正负性质的意义水平分类器如何构造卷积运算使用的矩阵 原矩阵通过一个过滤器(filter)/核心(kernel)来生成一个新的矩阵。 如何在编程中实现卷积运算 使用卷积…

Kafka安全认证机制详解之SASL_PLAIN

一、概述 官方文档: https://kafka.apache.org/documentation/#security 在官方文档中,kafka有五种加密认证方式,分别如下: SSL:用于测试环境SASL/GSSAPI (Kerberos) :使用kerberos认证,密码是…

Redis:原理+项目实战——Redis实战3(Redis缓存最佳实践(问题解析+高级实现))

👨‍🎓作者简介:一位大四、研0学生,正在努力准备大四暑假的实习 🌌上期文章:Redis:原理项目实战——Redis实战2(Redis实现短信登录(原理剖析代码优化)&#x…

golang利用alpn机制实现优先以http2协议访问服务端

文章目录 配置连接池发起请求 配置连接池 初始化http连接池 t1 : &http.Transport{Proxy: func(*http.Request) (*url.URL, error) {// 不读取HTTP_PROXY环境变量return nil, nil},DialContext: (&net.Dialer{// TCP握手超时Timeout: 3 * time.Second,// TCP协议的长…

【计算机毕业设计】SSM游戏点评网站

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,网站用户管理,游戏资讯管理,游戏类型管理,城市信息管理,竞技场管理,游戏信息管理,游戏评价信息管理等功能。…

【总结】请求跨域及其终极解决方案

文章目录 跨域示例浏览器的同源策略跨域访问类型跨域解决方案方案 1:允许跨域,配置 CORS自定义 Filter 实现使用 Spring 自带的 CorsFilter使用 @CrossOrigin 注解SpringMVC 全局配置Spring Cloud Gateway 配置 CORS方案 2:实现同源请求代理服务器实现同源子域与父域修改(d…

使用UDF扩展Spark SQL

Apache Spark是一个强大的分布式计算框架,Spark SQL是其一个核心模块,用于处理结构化数据。虽然Spark SQL内置了许多强大的函数和操作,但有时可能需要自定义函数来处理特定的数据需求。在Spark SQL中,可以使用UDF(User…

视频剪辑技巧:制作视频画中画效果,背景图片的选取与运用

在视频剪辑中,画中画效果是一种常用的技巧,它可以在同一屏幕上展示两个或多个视频片段。这种效果在制作教程、比较两个物品或展示对话等场景中非常实用。现在一起来看看云炫AI智剪如何制作视频画中画效果,选取和运用背景图片的方法。 一起来看…

计算机网络---知识点

ARPANET----NFSNET—ANSNET—Internet发展及协议 移动互联网 物联网 无线自组网、无线传感器网络、无线个域网 ISO/OSI网络体系结构 TCP/IP网络体系结构 对等通信、PDU 电路交换、报文交换、分组报文交换 虚电路、数据报 信道复用技术 网络性能的主要指标&#xff08…

【Apache-2.0】springboot-openai-chatgpt超级AI大脑产品架构图

springboot-openai-chatgpt: 一个基于SpringCloud的Chatgpt机器人,已对接GPT-3.5、GPT-4.0、百度文心一言、stable diffusion AI绘图、Midjourney绘图。用户可以在界面上与聊天机器人进行对话,聊天机器人会根据用户的输入自动生成回复。同时也支持画图&a…

RT-Thread内核移植

目录 前言一、实验平台简介1.1 W601简介1.2 RT-Thread简介1.3 ENV简介 二、开发环境搭建2.1 MDK安装2.2 Git安装2.3 RT-Thread相关下载2.4 其他素材 三、移植RT-Thread四、ENV使用五、W601开发板下载验证5.1 使用串口下载软件5.2 ST-Link下载 前言 本文以正点原子W601开发板为例…

阿里云服务器端口PPTP 1723放行教程

阿里云服务器安装PPTP VPN需要先开通1723端口,阿里云服务器端口是在安全组中操作的,阿里云服务器网aliyunfuwuqi.com来详细说明阿里云服务器安全组开放PPTP VPN专用1723端口教程: 阿里云服务器放行1723端口教程 PPTP是点对点隧道协议&#…

STM32 学习(二)GPIO

目录 一、GPIO 简介 1.1 GPIO 基本结构 1.2 GPIO 位结构 1.3 GPIO 工作模式 二、GPIO 输出 三、GPIO 输入 1.1 传感器模块 1.2 开关 一、GPIO 简介 GPIO(General Purpose Input Output)即通用输入输出口。 1.1 GPIO 基本结构 如下图&#xff0…