【深度学习】基于机器学习的无机钙钛矿材料形成能预测,预测形成能,神经网络,回归问题

文章目录

  • 任务分析
  • 数据处理
    • 处理离散数值
    • 处理缺失值
    • 处理不同范围的数据
    • 其他注意事项
  • 我们的数据处理
  • 模型
  • 训练
  • 网页web
  • 代码、指导

任务分析

简单来说,就是一行就是一个样本,要用绿色的9个数值,预测出红色的那1个数值。
在这里插入图片描述

数据处理

在进行深度数学数据处理时,数据预处理是一个至关重要的步骤。它涉及到处理离散数值、缺失值以及不同范围的数据等问题。下面,我们将探讨如何高效地处理这些常见问题,并确保数据集为后续的分析和建模做好准备。

处理离散数值

离散数值通常指的是分类数据,这些数据可以是有序的(例如教育水平)或无序的(例如国籍)。在深度学习中,离散数值通常需要转换为一种更适合模型处理的格式。

独热编码(One-Hot Encoding): 对于无序的分类变量,独热编码是一种常见的处理方法。它为每个类别创建一个新的布尔列,表示某个样本是否属于该类别。

标签编码(Label Encoding): 对于有序的分类变量,可以使用标签编码,它将每个类别映射到一个整数值。这种方法保留了类别间的顺序关系。

嵌入(Embeddings): 对于类别数量非常多的情况,可以使用嵌入层来学习一个更为紧凑的表示。

处理缺失值

缺失值处理是数据预处理中的一个重要方面。不同的处理方法可能会对模型的性能产生重大影响。

删除: 如果数据丢失不是很严重,可以考虑删除含有缺失值的行或列。但这可能会导致信息损失。

填充: 可以用某些统计值(如均值、中位数或众数)填充缺失值。对于连续变量,通常用均值或中位数;对于分类变量,可以用众数。

预测模型: 使用其他完整的特征来预测缺失值。例如,可以使用随机森林或K最近邻算法来预测缺失的数据。

使用缺失值: 某些算法可以直接处理缺失值,例如XGBoost。此外,可以将缺失值作为模型的一个特征。

处理不同范围的数据

当数据集中的特征在不同的范围内变化时,可能会导致模型性能下降,尤其是在使用基于距离的算法时。

标准化(Standardization): 通过减去均值并除以标准差来转换数据,使得特征的均值为0,标准差为1。

归一化(Normalization): 将特征缩放到给定的最小值和最大值之间,通常是0和1。

Robust Scaling: 使用中位数和四分位数范围来缩放特征,这种方法对异常值有更好的鲁棒性。

其他注意事项

异常值处理: 异常值可能是由于错误或偏差造成的。可以使用Z分数、IQR分数等方法检测并处理异常值。

特征工程: 考虑创建新的特征或转换现有特征,以更好地表示数据的潜在结构。

数据集的平衡: 在分类问题中,确保每个类别的样本数量大致相等,或者使用加权损失函数来解决类别不平衡问题。

时间序列数据: 如果数据是时间序列,需要考虑时间依赖性和季节性因素。

数据一致性: 确保所有数据都以一致的格式和单位进行表示。

通过以上的数据预处理方法,我们可以确保数据集为机器学习模型的训练和测试做好准备。这些步骤有助于提高模型的准确性、减少过拟合的风险,并提高模型的泛化能力。

我们的数据处理

独热编码、填充平均值、删除缺失数据过多(>3)的样本、标准化输入。

分析数据平稳性质,基本平稳,无需额外剔除工作。

在这里插入图片描述

模型

引入自注意力机制的神经网络模型:


class SelfAttention(nn.Module):def __init__(self, in_dim):super(SelfAttention, self).__init__()self.query = nn.Linear(in_dim, in_dim)self.key = nn.Linear(in_dim, in_dim)self.value = nn.Linear(in_dim, in_dim)self.softmax = nn.Softmax(dim=-1)def forward(self, x):q = self.query(x)k = self.key(x)v = self.value(x)attention_weights = self.softmax(torch.matmul(q, k.transpose(-2, -1)) / (x.size(-1) ** 0.5))attention_output = torch.matmul(attention_weights, v)return attention_outputclass AttentionModel(nn.Module):def __init__(self, input_dim, output_dim):super(AttentionModel, self).__init__()self.fc0 = nn.Linear(input_dim, 1024)self.fc0_1 = nn.Linear(1024, 512)self.fc1 = nn.Linear(512, 256)self.fc2 = nn.Linear(256, 128)self.fc3 = nn.Linear(128, 64)self.fc4 = nn.Linear(64, output_dim)self.relu = nn.SELU()self.bn0 = nn.BatchNorm1d(1024)self.bn0_1 = nn.BatchNorm1d(512)self.bn1 = nn.BatchNorm1d(256)self.bn2 = nn.BatchNorm1d(128)self.bn3 = nn.BatchNorm1d(64)self.self_attention = SelfAttention(256)def forward(self, x):x = self.bn0(self.relu(self.fc0(x)))x = self.bn0_1(self.relu(self.fc0_1(x)))x = self.bn1(self.relu(self.fc1(x)))attention_output = self.self_attention(x)x = self.relu(attention_output + x)  # 残差连接后应用ReLUx = self.bn2(self.relu(self.fc2(x)))x = self.bn3(self.relu(self.fc3(x)))x = self.fc4(x)return x# 使用Xavier初始化或Kaiming初始化def _initialize_weights(self):for m in self.modules():if isinstance(m, nn.Linear):init.kaiming_uniform_(m.weight, mode='fan_in', nonlinearity='relu')if m.bias is not None:init.constant_(m.bias, 0)

训练

MSE最低降低到0.2左右。
在这里插入图片描述

网页web

在这里插入图片描述

代码、指导

需要帮助请:

https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2

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

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

相关文章

浅析ArcGis中的软件——ArcMap、ArcScene、 ArcGlobe、ArcCatalog

为什么要写这么一篇介绍ArcGis的文章呢?因为大部分人也包括ArcGisdada,在使用ArcMap应用程序创建工程时总以为我们就是使用了ArcGis这个软件的所有。其实不然,在后期的接触和使用中慢慢发现原来ArcMap只是ArcGis这个综合平台的一部分&#xf…

现在阿里云云服务器租用多少钱?一张表,报价单

2024年阿里云服务器优惠价格表,一张表整理阿里云服务器最新报价,阿里云服务器网整理云服务器ECS和轻量应用服务器详细CPU内存、公网带宽和系统盘详细配置报价单,大家也可以直接移步到阿里云CLUB中心查看 aliyun.club 当前最新的云服务器优惠券…

<c语言学习>结构体

结构体类型 为什么要有结构体 我们用c语言描述年龄时候,可以定义一个整形类型来实现: int age; age 18; printf("年龄为%d",age); (c语言描述年龄) 由于年龄这一属性比较单一,类似性别、某游戏角色攻击力、血量都可以用c语言内置…

string类详解及重要函数实现

🪐🪐🪐欢迎来到程序员餐厅💫💫💫 今日主菜:string类 主厨:邪王真眼 所属专栏:c专栏 主厨的主页:Chef‘s blog 前言: 咱们之前也是…

第十三届蓝桥杯物联网试题(省赛)

做后感悟: OLED显示函数需要一直显示,所以在主函数中要一直循环,为了确保这个检错功能error只输出一次,最好用中断串口进行接收数据,数据收完后自动进入中断函数中,做一次数据检查就好了,该开灯…

银行数字人民币系统应用架构设计

2019年10月,01区块链联合数字资产研究院发布了《人民币3.0:中国央行数字货币运行框架与技术解析》,从数字货币界定和人民币发展历程出发,区分了央行数字货币与比特币、移动支付等的区别,全面介绍了央行数字货币的发展历…

Linux设备驱动开发 - 三色LED呼吸灯分析

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 目录 展锐UIS7885呼吸灯介绍呼吸灯调试方法亮蓝灯亮红灯亮绿灯展锐UIS7885呼吸灯DTS配置ump9620 PMIC驱动ump9620中的LED呼吸灯驱动LED的tr…

代码+视频,R语言logistic回归交互项(交互作用)的可视化分析

交互作用效应(p for Interaction)在SCI文章中可以算是一个必杀技,几乎在高分的SCI中必出现,因为把人群分为亚组后再进行统计可以增强文章结果的可靠性,不仅如此,交互作用还可以使用来进行数据挖掘。在既往文章中,我们已…

【理解机器学习算法】之分类问题的模型评估(ROC-AUC)

ROC曲线(接收者操作特性曲线)和AUC(曲线下面积)是在不同阈值设置下,用于分类问题的性能度量工具。下面是它们所代表的含义以及使用方法: ROC曲线 代表含义:ROC曲线是一个图形化的表示&#xf…

掌握收支明细,轻松记录收支明细,一键打印财务自由

在繁忙的生活中,你是否曾感到对个人的财务状况一头雾水?是否曾在需要证明收支情况时手忙脚乱,翻箱倒柜地寻找凭证?今天,我要向你揭示一个简单而高效的方法,帮助你轻松记录收支明细,并一键打印&a…

Cesium 默认选中框设置

Cesium 默认提供的选中框 进来关注下不迷人,还有更多集合专栏! 1、设置状态: 设置false 就不会出现这个默认的状态,如果需要修改如下: viewer._selectedEntitynewEntity newEntity 就是你需要设置选中框的样式 可以…

BGP4+简介

定义 BGP是一种用于自治系统AS(Autonomous System)之间的动态路由协议,常用版本是BGP-4,BGP-4只能传递IPv4路由。针对IPv6的BGP4扩展,通常称为BGP4。 目的 BGP4用于在AS之间传递路由信息,并不是所有情况…

python - 更改pdf中文本的字体高亮颜色(fitz模块)

import fitzdoc fitz.open(r"e:/test.pdf") pagedoc[0]# 按照指定的位置设置颜色 highlight page.add_highlight_annot((20, 500,60, 520)) highlight.set_colors(stroke[1, 1, 0]) # light red color (r, g, b) 颜色rgb每个除以255得出 highlight.update()# 按照…

YZ系列工具之YZ09: VBA_Excel之读心术

我给VBA下的定义:VBA是个人小型自动化处理的有效工具。利用好了,可以大大提高自己的工作效率,而且可以提高数据的准确度。我的教程一共九套一部VBA手册,教程分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的…

大数据分析-基于Python的电影票房信息数据的爬取及分析

概要 现如今,人民群众对物质生活水平的要求已不再局限于衣食住行,对于精神文化有了更多的需求。电影在我国越来越受欢迎,电影业的发展越来越迅猛,为了充分利用互联网技术的发展,掌握电影业的态势,对信息进行…

uniapp 写安卓app,运行到手机端 调试

手机 设置》关于手机》点击版本号 4-5次,弹出手机锁屏页面,输入手机锁屏密码 2.手机 设置中 》搜索 开发人员选项 》 调试》打开USB调试 同页面 找到 选择USB配置》选择 MIDIhbuilder 编辑器 点击 》运行》运行到手机或模拟器》运行到Android App基座 》…

打卡--MySQL8.0 三 (SQL语言)

SQL语言介绍 SQL 是 Structured Query Language(结构化查询语言)的缩写。 SQL 是用来与关系数据库进行通信的。 它是关系数据库管理系统的标准语言。 SQL 语句用于执行任务,如更新数据库中的数据,或从数据库中检索数据。 一些常见…

【滑动窗口】长度最小的子数组|无重复字符的最长子串|最大连续1的个数 III|将 x 减到 0 的最小操作数

1. 长度最小的子数组 - 力扣(LeetCode) 1.题目解析: 2.算法原理 (1)方法一:暴力列举出所有的子数组的和 时间复杂度:O(n**2):枚举所有子数组O(…

在Windows中安装wsl2和ubuntu22.04

目录 一、概述二、安装wsl22.1 虚拟化设置2.2 虚拟化设置2.3 切换和更新wsl2 三、安装ubuntu3.1 下载Ubuntu22.043.2 配置Ubuntu22.04 一、概述 wsl2是一种面向Windows操作系统的虚拟化技术,可以让我们在Windows操作系统中“丝滑”的运行Linux系统。wsl2由微软团队…

WMI接口设计实现

WMI是Windows操作系统管理数据和操作的基础设施,系统管理员可以使用VB Script、PowerShell及Windows API(C、C#等)管理本地或远程计算机。 使用WMI框架应用程序可以直接访问EC RAM、 I/O端口、Memory地址、寄存器、Setup NV设定值&#xff0c…