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

多层感知机(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)

相关文章:

多层感知机(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、损失函数…...

文件与目录的基本操作

前提:使用su root 切换到权限最大的root用户 1.显示当前工作目录的绝对路径(pwd) 用途:用于显示当前工作目录的绝对路径的命令。无论用户在文件系统的哪个位置,pwd 命令都能提供当前所在位置的完整路径信息。 用法&a…...

Python入门笔记(三)

文章目录 第八章 字典dict8.1 创建字典:{}、dict()、字典生成式、zip()8.2 获取键对应的值:get()8.3 in, not in判断键是否在字典中8.4 增加键值对:fromkeys()、setdefault()、update()8.5 删除键值对:del语句、clear(…...

PostgreSQL 任意命令执行漏洞(CVE-2019-9193)

记一次授权攻击通过PostgreSql弱口令拿到服务器权限的事件。 使用靶机复现攻击过程。 过程 在信息收集过程中,获取到在公网服务器上开启了5432端口,尝试进行暴破,获取到数据库名为默认postgres,密码为1 随后连接进PostgreSql …...

使用tgz包下载安装clickhouse低版本

1.下载安装包 官方下载地址:https://packages.clickhouse.com/tgz/stable 阿里云下载地址:clickhouse-tgz-stable安装包下载_开源镜像站-阿里云 共需要下载四个文件 clickhouse-common-static-20.3.10.75.tgz clickhouse-common-static-dbg-20.3.10.7…...

外包功能测试干了6个月,技术退步太明显了。。。。。

先说一下自己的情况,本科生,23年通过校招进入武汉某软件公司,干了差不多6个月的功能测试,今年中秋,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我就在一个外包企业干了6个月的功…...

动态规划和贪心算法

目录 动态规划和贪心算法 动态规划 贪心算法 两者之间的区别 动态规划和贪心算法 是两种经典的算法设计策略,它们各自具有独特的特点和适用场景。 动态规划 动态规划是一种将复杂问题分解为更简单子问题的求解方法。它特别适用于那些具有重叠子问题和最优子结构特性的问…...

python爬虫--tx动漫完整信息抓取

python爬虫--tx动漫完整信息抓取 一、采集主页信息二、采集详情页信息三、完整代码一、采集主页信息 先看一下采集到的信息,结果保存为csv文件: 打开开发者工具,找到数据接口。 使用xpath提取详情页url。 二、采集详情页信息 如上图所示,使用xpath提取详情页的标题、作…...

《使用Java做爬虫和使用python做爬虫哪个好》

使用Java做爬虫和使用python做爬虫哪个好 Java 和 Python 都是非常出色的编程语言,在爬虫领域各有其优势,具体使用哪种语言更好取决于多种因素: 一、开发效率 1. Python Python 以其简洁、易读的语法而闻名。在爬虫开发中,有许…...

如果我想开发一个APP,需要准备哪些材料呢

开发一个APP需要准备的材料相对复杂,涵盖了公司资质、技术资源、支付接口以及第三方服务等多个方面。以下是一份详细的材料清单: 一、公司资质证明 营业执照:需要提供公司的营业执照副本,用于申请企业支付、域名备案、APP上架及…...

告别论文初稿焦虑!ChatGPT让你轻松完成写作!

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 在面对繁琐的论文写作时,很多人都会遇到无从下手的困惑,尤其是论文初稿阶段,往往需要大量的时间来组织思路和编写内容。然而,随着AI技术的发展,像…...

mongodb 数据迁移,亲测成功!

mysql进行数据迁移,最简单的不过是导出sql,然后在运行sql,数据也自然迁移过去了。 可是mongodb里,我们存储的是文件,是怎么做到的呢,当我在翻阅网上博客的时候,并没有发现有这方面的顾虑。 当…...

如何使用ssm实现疫情居家办公OA系统

TOC 10902ssm疫情居家办公OA系统 系统概述 进过系统的分析后,就开始记性系统的设计,系统设计包含总体设计和详细设计。总体设计只是一个大体的设计,经过了总体设计,我们能够划分出系统的一些东西,例如文件、文档、数…...

深入了解 MySQL 中的 JSON_CONTAINS

深入了解 MySQL 中的 JSON_CONTAINS MySQL 5.7 及更高版本引入了对 JSON 数据类型的支持,使得在数据库中存储和查询 JSON 数据成为可能。在这些新功能中,JSON_CONTAINS 函数是一个非常有用的工具,允许我们检查一个 JSON 文档是否包含特定的值…...

宝藏推荐:精选十款知识库搭建软件

当今这个信息爆炸的时代,高效地管理和利用知识成为了各行各业追求的目标。无论是企业内部的协作,还是对外提供的信息服务,一个强大的知识库都是不可或缺的。为了帮助大家更好地守护和利用知识宝藏,以下是精选的十款知识库搭建软件…...

go语言接口设计三国人物

题目 请设计一个接口Person,然后设计两个结构体实现Person接口,这两个结构体都代表三国时代的名人。Person接口中有一个方法,该方法输出一句最能代表该人物特点的话。 程序 package main import ("fmt") type Person interface …...

day-63 优质数对的总数 II

思路 nums1[i] 可以被 nums2[j] * k 整除,所以nums[i]/k的所有因子都符合条件,问题转换为遍历nums1,统计nums[i]/k的因子出现次数,然后遍历nums2,如果nums2[i]是某一个因子,将其出现次数加入答案中即可 解题过程 利用哈希表统计出…...

基于 Prometheus+Grafana+Alertmanager 搭建 K8S 云监控告警平台(附配置告警至QQ、钉钉)

文章目录 一、机器规划二、部署安装 node-exporter、prometheus、Grafana、kube-state-metrics1、创建 monitor-sa 命名空间2、安装node-exporter组件2.1、说明2.2、应用资源清单2.3、通过node-exporter采集数据 3、k8s 集群中部署 prometheus3.1、创建一个 sa 账号3.2、将 sa …...

C++ | Leetcode C++题解之第461题汉明距离

题目: 题解: class Solution { public:int hammingDistance(int x, int y) {int s x ^ y, ret 0;while (s) {s & s - 1;ret;}return ret;} };...

ElasticSearch备考 -- Update by query Reindex

一、题目 有个索引task,里面的文档长这样 现在需要添加一个字段all,这个字段的值是以下 a、b、c、d字段的值连在一起 二、思考 需要把四个字段拼接到一起,组成一个新的字段,这个就需要脚本, 这里有两种方案&#xff…...

DeepSeek 赋能智慧能源:微电网优化调度的智能革新路径

目录 一、智慧能源微电网优化调度概述1.1 智慧能源微电网概念1.2 优化调度的重要性1.3 目前面临的挑战 二、DeepSeek 技术探秘2.1 DeepSeek 技术原理2.2 DeepSeek 独特优势2.3 DeepSeek 在 AI 领域地位 三、DeepSeek 在微电网优化调度中的应用剖析3.1 数据处理与分析3.2 预测与…...

Oracle查询表空间大小

1 查询数据库中所有的表空间以及表空间所占空间的大小 SELECTtablespace_name,sum( bytes ) / 1024 / 1024 FROMdba_data_files GROUP BYtablespace_name; 2 Oracle查询表空间大小及每个表所占空间的大小 SELECTtablespace_name,file_id,file_name,round( bytes / ( 1024 …...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

2021-03-15 iview一些问题

1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

SpringCloudGateway 自定义局部过滤器

场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

使用 SymPy 进行向量和矩阵的高级操作

在科学计算和工程领域,向量和矩阵操作是解决问题的核心技能之一。Python 的 SymPy 库提供了强大的符号计算功能,能够高效地处理向量和矩阵的各种操作。本文将深入探讨如何使用 SymPy 进行向量和矩阵的创建、合并以及维度拓展等操作,并通过具体…...

CSS设置元素的宽度根据其内容自动调整

width: fit-content 是 CSS 中的一个属性值&#xff0c;用于设置元素的宽度根据其内容自动调整&#xff0c;确保宽度刚好容纳内容而不会超出。 效果对比 默认情况&#xff08;width: auto&#xff09;&#xff1a; 块级元素&#xff08;如 <div>&#xff09;会占满父容器…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

【无标题】湖北理元理律师事务所:债务优化中的生活保障与法律平衡之道

文/法律实务观察组 在债务重组领域&#xff0c;专业机构的核心价值不仅在于减轻债务数字&#xff0c;更在于帮助债务人在履行义务的同时维持基本生活尊严。湖北理元理律师事务所的服务实践表明&#xff0c;合法债务优化需同步实现三重平衡&#xff1a; 法律刚性&#xff08;债…...