多层感知机(MLP)实现考勤预测二分类任务(sklearn)

'''
1、基础应用:
https://blog.csdn.net/qq_36158230/article/details/118670801
多层感知机(MLP)实现考勤预测二分类任务(sklearn)
2、分类器参数:https://scikit-learn.org/dev/modules/generated/sklearn.neural_network.MLPClassifier.html
3、损失函数:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.log_loss.html
看着示例数据、参数训练出的模型效果不好呀hhh
'''import csv
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.neural_network import MLPClassifier
from sklearn.metrics import accuracy_score# 加载训练数据集
def load_dataset(path):dataset_file = csv.reader(open(path))vector_x = []   # 样本y = []          # 样本所对应的标签# 从文件读取训练数据集for content in dataset_file:# 如果读取的不是表头if dataset_file.line_num != 1:# 读取一行并转化为列表content = list(map(float, content))if len(content) != 0:vector_x.append(content[1:12])  # 第0-11列是样本的特征,其中第0列是idy.append(content[-1])           # 最后一列是样本的标签#print(content,len(content)) # [2.0, 1.0, 1.0, 2.0, 3.0, 1.0, 4.0, 1.0, 3.0, 2.0, 1.0, 3.0, 1.0] 13#breakreturn vector_x, y  # 返回训练数据集# 训练模型
def mlp_cls(vector_x_train, y_train):# 输入层->第一层->第二层->输出层#    12      30     20      1  # 节点个数# MLPClassifier参数说明详情见https://www.cnblogs.com/-X-peng/p/14225973.htmlmlp = MLPClassifier(solver='adam', alpha=0, hidden_layer_sizes=(30, 20), random_state=1)mlp.fit(vector_x_train, y_train)        # 训练return mlp# 模型预测
def mlp_cls_predict(mlp, vector_x_test, y_test):# 预测y_predict = mlp.predict(vector_x_test)n = 3print("模型预测值:", y_predict[:n], ", 模型true值:", y_test[:n])print(y_predict[0]==y_test[0])print("测试集大小:", len(y_test), len(y_predict))label_1 = []label_fu1 = []for p in y_test:if p==1:label_1.append(p)#print("label: 1")if p==-1:label_fu1.append(-1)print('测试集:和',len(label_1)+len(label_fu1),',len(label_1)', len(label_1), ',len(label_fu1)',len(label_fu1))error_n = 0for i in range(len(y_predict)):if y_predict[i] != y_test[i]:print('错误预测结果:', y_predict[i], ', 真实值:', y_test[i])error_n +=1print('预测错误的数量:', error_n)# 输出模型预测的准确度print(accuracy_score(y_predict, y_test))# 实验
if __name__ == '__main__':# 1. 加载数据集vector_x, y = load_dataset("dataset.csv") # 如果报错,原因:ipynb创建的时候在其他目录,而不是csv文件的路径下print('数据集大小(预期161):', len(vector_x), len(y))count_fu1 = []for p in y:if p==-1:count_fu1.append(p)print('总的负样本数:', len(count_fu1))print(vector_x[:3], y[:3])scalar = StandardScaler()               # 标准化转换scalar.fit(vector_x)                    # 训练标准化对象vector_x = scalar.transform(vector_x)   # 转换数据集print(vector_x[:3], y[:3])print("每个特征的Mean:", scalar.mean_, "特征数量:", len(scalar.mean_))print("每个特征的Standard Deviation:", scalar.scale_, "特征数量:", len(scalar.scale_))'''在数据处理中,标准化是一种常见的预处理步骤,用于将数据转换为均值为 0,标准差为 1 的分布。这有助于确保不同特征的值处于相似的尺度,避免某些特征对模型的影响过大。1)对每个特征计算其均值和标准差。2)将每个特征的值减去均值,然后除以标准差,以完成标准化处理。preprocessing.scale(data) 是 Scikit-learn 中 preprocessing 模块提供的一种快速标准化数据的方法。这个方法会对输入的数据进行标准化处理,即将数据按特征进行标准化,使得每个特征的均值为 0,标准差为 1。这个方法适用于需要快速对数据进行标准化的情况,但是它并不像使用 StandardScaler 那样可以保存均值和标准差供后续使用。'''# 2. 划分训练集和测试集# https://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.htmlvector_x_train, vector_x_test, y_train, y_test = train_test_split(vector_x, y, test_size=0.2, random_state=0)# vector_x_train, vector_x_test, y_train, y_test = train_test_split(vector_x, y, test_size=0.2, random_state=10)label_1 = []label_fu1 = []for p in y_train:if p==1:label_1.append(p)#print("label: 1")if p==-1:label_fu1.append(-1)print('训练集:和',len(label_1)+len(label_fu1),',len(label_1)', len(label_1), ',len(label_fu1)',len(label_fu1))# 3. 训练mlp = mlp_cls(vector_x_train, y_train)# 4. 预测mlp_cls_predict(mlp, vector_x_test, y_test)print('【感觉模型预测时,将结果都预测为正样本1了,看看训练的精度怎么样】')mlp_cls_predict(mlp, vector_x_train, y_train)

对应的输出

数据集大小(预期161): 161 161
总的负样本数: 18
[[1.0, 1.0, 2.0, 3.0, 1.0, 4.0, 1.0, 3.0, 2.0, 1.0, 3.0], [1.0, 2.0, 2.0, 3.0, 1.0, 4.0, 1.0, 4.0, 2.0, 2.0, 3.0], [2.0, 2.0, 2.0, 3.0, 1.0, 3.0, 1.0, 3.0, 1.0, 2.0, 3.0]] [1.0, 1.0, 1.0]
[[-0.41854806 -1.31484355  0.36579067  0.3130227  -0.80178373  0.49383162-0.48832524  0.23600208  0.06141296 -2.9104275  -0.39633848][-0.41854806  0.76054676  0.36579067  0.3130227  -0.80178373  0.49383162-0.48832524  1.23590565  0.06141296  0.34359214 -0.39633848][ 2.38921186  0.76054676  0.36579067  0.3130227  -0.80178373 -0.71081824-0.48832524  0.23600208 -1.35108513  0.34359214 -0.39633848]] [1.0, 1.0, 1.0]
每个特征的Mean: [1.14906832 1.63354037 1.88198758 2.74534161 1.39130435 3.590062111.19254658 2.76397516 1.95652174 1.89440994 3.31677019] 特征数量: 11
每个特征的Standard Deviation: [0.35615581 0.48183708 0.32262283 0.81354605 0.48804227 0.830116730.39429988 1.00009644 0.70796556 0.30731222 0.79924157] 特征数量: 11
训练集:和 128len(label_1) 111 ,len(label_fu1) 17
模型预测值: [1. 1. 1.] , 模型true值: [1.0, 1.0, 1.0]
True
测试集大小: 33 33
测试集:和 33len(label_1) 32 ,len(label_fu1) 1
错误预测结果: 1.0 , 真实值: -1.0
预测错误的数量: 1
0.9696969696969697
【感觉模型预测时,将结果都预测为正样本1了,看看训练的精度怎么样】
模型预测值: [1. 1. 1.] , 模型true值: [1.0, -1.0, 1.0]
True
测试集大小: 128 128
测试集:和 128len(label_1) 111 ,len(label_fu1) 17
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
错误预测结果: 1.0 , 真实值: -1.0
预测错误的数量: 13
0.8984375
/base/envs/py36/lib/python3.6/site-packages/sklearn/neural_network/_multilayer_perceptron.py:617: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.% self.max_iter, ConvergenceWarning)

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

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

相关文章

Redis配置篇 - 指定Redis配置的三种方式,以及Redis配置文件介绍

文章目录 1 指定Redis配置的三种方式1.1 通过命令行参数来指定Redis配置1.2 通过配置文件来指定Redis配置1.3 在服务器运行时更​​改 Redis 配置 2 关于Redis配置文件 1 指定Redis配置的三种方式 1.1 通过命令行参数来指定Redis配置 在redis启动时,可以直接通过命…

绿野仙踪不仅是童话,还是便宜又好用的产品测试法!

以 ChatGPT 为代表的大语言模型爆火后,推动了对话类人工智能产品的高速发展,我们已经看到了如智能助理、问答系统、自动写作等多种类型的个性化对话类 AI 服务。 AI 能力的提升让人们对智能 AI 产品的期望越来越高,相关产品的用户体验也因此变…

【音频可视化】通过canvas绘制音频波形图

前言 这两天写项目刚好遇到Ai对话相关的需求,需要录音功能,绘制录制波形图,写了一个函数用canvas实现可视化,保留分享一下,有需要的直接粘贴即可,使用时传入一个1024长的,0-255大小的Uint8Arra…

豆包MarsCode 合伙人计划限时招募中,推广最高赢万元现金!

豆包MarsCode 合伙人计划正式上线啦!作为官方推出的推广激励项目,豆包MarsCode 编程助手号召和鼓励所有用户向我们推荐新用户。 现在正式开启首轮合伙人招募,诚邀各位有意愿推广普及 AI 编程产品的伙伴成为我们的合伙人,全国限量…

jmeter输出性能测试报告(常见问题处理与处理)

问题1:报错 WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0x80000002. Windows R 意思是:报没有权限 处理: 操作非gui生成测试报告的方法 cmd界面进入到 jmeter的bin目录 jmeter –n –t -l -e –o …

对后端返回的日期属性进行格式化(扩展 Spring MVC 的消息转换器)

格式化之前 格式化之后: 解决方式 方式一 在属性中加上注解,对日期进行格式化 JsonFormat(pattern "yyyy-MM-dd HH:mm:ss")private LocalDateTime createTime;//JsonFormat(pattern &quo…

“校友会综合服务平台:连接校友与母校的桥梁”

在当今信息化时代,校友会作为校友与母校之间的重要桥梁,其功能与服务不断拓展和深化。为了更好地满足校友的需求,构建一个高效、便捷的校友服务体系,我们开发了一款基于FastAdmin ThinkPHP Uniapp技术架构的校友会综合服务平台。…

什么是汽车中的SDK?

无论是在家里使用预制菜包做一顿大厨级别的晚餐,还是使用IKEA套组装配出时尚的北欧风桌子,我们都熟悉这样一种概念:比起完全从零开始,使用工具包可以帮助我们更快、更高效地完成一件事。 在速度至关重要的商业软件领域&#xff0…

Linux中各种查看

查看命令 ls ls :简单列出当前目录下的文件和子目录。 ls 目录路径 :列出指定目录下的内容。 ls -l :以长格式显示详细信息,包括文件权限、所有者、大小、修改时间等。 ls -a :显示包括隐藏文件(以 . 开…

利用FnOS搭建虚拟云桌面,并搭建前端开发环境(一)

利用FnOS搭建虚拟云桌面,并搭建前端开发环境 一 飞牛FnOS官方文档一、安装FnOS【Win11系统】1.下载VirtualBox2.下载FnOS镜像3.创建虚拟机4.启动完成后,会进入这样一个界面,这个基本上后续就后台了 本人在网上冲浪了很久,一直也没…

DGX的优势

NVIDIA DGX 的 AI 领导力 文章目录 前言一、概述推动跨行业的 AI 创新二、优势客户体验到哪些好处?1. 利用生成式 AI 释放研究人员的潜力2. 加快现代应用程序的上市时间3. 利用 AI 改善客户体验三、性能性能很重要1. 为世界上最先进的超级计算机提供动力2. 打破世界纪录3. 提高…

Apache Flink 和 Apache Kafka

Apache Flink 和 Apache Kafka 都是大数据生态系统中非常重要的工具,但它们的作用和应用场景有所不同。下面将分别介绍两者的主要特性和它们之间的异同点。 Apache Kafka 作用: 消息队列:Kafka 主要作为消息队列使用,用于解耦生…

ES6总结

1.let和const以及与var区别 1.1 作用域 var: 变量提升(Hoisting):var 声明的变量会被提升到其作用域的顶部,但赋值不会提升。这意味着你可以在声明之前引用该变量(但会得到 undefined)。 con…

CSS元素显示类型

display 属性是 CSS 中最重要的属性之一&#xff0c;主要用来控制元素的布局&#xff0c;通过 display 属性您可以设置元素是否显示以及如何显示。 根据元素类型的不同&#xff0c;每个元素都有一个默认的 display 属性值&#xff0c;例如<div>默认的 display 属性值为 …

电脑端视频通过PCIE到FPGA端转UDP网络视频输出,基于XDMA+PHY芯片架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我这里已有的以太网方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存UDP视频组包发送UDP协议栈MAC数据缓冲FIFO组Tri Mode E…

STM32编码器接口

一、概述 1、Encoder Interface 编码器接口概念 编码器接口可接收增量&#xff08;正交&#xff09;编码器的信号&#xff0c;根据编码器旋转产生的正交信号脉冲&#xff0c;自动控制CNT自增或自减&#xff0c;从而指示编码器的位置、旋转方向和旋转速度每个高级定时器和通用…

C#垃圾回收机制详解

本文详解C#垃圾回收机制。 目录 一、C#垃圾收集器定义 二、C#中的垃圾收集器特点 三、垃圾回收触发条件 四、常见的内存泄漏情况 五、高性能应用程序的垃圾回收策略 六、最佳实践和建议 七、实例 一、C#垃圾收集器定义 int、string变量,这些数据都存储在内存中,如果…

Nginx应用配置实战

Nginx通用部署 Nginx常见参数介绍 Nginx 配置文件中的指令和参数决定了它的行为。下面详细介绍一些常见的 Nginx 参数&#xff0c;以帮助你更好地理解和配置 Nginx。 1. worker_processes worker_processes auto;作用&#xff1a;设置 Nginx 处理请求的工作进程数量。auto …

[搜索] 质数

题目描述 给定 n n n 个正整数&#xff0c;将它们分组&#xff0c;使得每组中任意两个数互质。至少要分成多少个组&#xff1f; 在满足最少的组数的情况下&#xff0c;使得元素个数最多的那一组的元素个数尽可能的少。 输入格式 第一行 1 1 1 个数 n n n。 接下来 n n n…

CSS 3D转换

在 CSS 中&#xff0c;除了可以对页面中的元素进行 2D 转换外&#xff0c;您也可以对象元素进行 3D转换&#xff08;将页面看作是一个三维空间来对页面中的元素进行移动、旋转、缩放和倾斜等操作&#xff09;。与 2D 转换相同&#xff0c;3D 转换同样不会影响周围的元素&#x…