GNN多任务预测模型实现(二):将EXCEL数据转换为图数据

 

一. 引言

在图神经网络(Graph Neural Networks, GNNs)的多任务学习场景中,数据预处理是至关重要的一步。尤其是当我们的数据存储在表格格式(如Excel文件)中时,如何有效地将其转换为图数据格式,是搭建GNN模型的基础。


二. 加载和检查数据

第一步是加载数据并检查其格式。我们通常使用 pandas 库来读取和操作Excel文件。以下代码实现了从Excel文件中加载数据,并打印前几行以检查格式是否正确。

import pandas as pd# 从Excel文件中读取数据
df = pd.read_excel('Participation_prediction_data.xlsx')# 打印前几行数据以检查数据格式
print(df.head())

 知识点

  • pandas.read_excel():用于从Excel文件中读取数据并加载为DataFrame对象。
  • DataFrame.head():返回前5行数据,用于快速检查数据格式和内容。

三. 提取特征和标签

在机器学习任务中,我们通常需要将数据分为特征(features)和标签(labels)。在本例中,我们从表格中提取三列作为特征,并将“讨论参与”列作为标签。 

import numpy as np# 提取特征列并转换为numpy数组
features = df[['讨论参与', '作业提交', '在线课堂出席时长']].values# 提取标签列并确保其为整数类型
labels = df['讨论参与'].values.astype(int)

知识点

  • DataFrame的列选择:通过列名选择所需的列。
  • .values 属性:将DataFrame转换为NumPy数组。
  • 数据类型转换:通过 .astype() 将数据类型转换为所需的类型。

 四. 标准化特征

在模型训练之前,对特征进行标准化处理(即归一化到均值为0,标准差为1的范围)通常能够提高模型的收敛速度和性能。 

from sklearn.preprocessing import StandardScaler# 初始化StandardScaler对象
scaler = StandardScaler()# 对特征进行标准化处理
features = scaler.fit_transform(features)

知识点

  • StandardScaler:用于对数据进行标准化处理。
  • fit_transform():同时计算均值和标准差,并对数据进行标准化。

 五. 构建节点索引

在图数据中,每个节点通常需要一个唯一的索引。在本例中,我们使用DataFrame的索引作为节点的索引。 

# 获取所有节点的索引
node_indices = df.index.values

知识点

  • DataFrame.index.values:返回DataFrame的索引,通常是一个NumPy数组。

六. 构建边及其特征 

边的构建是图数据生成的关键步骤。在本例中,我们根据以下条件构建边:

  • 两个节点的时间差为1。
  • 两个节点属于同一学生。

同时,我们为每条边定义了特征,包括源节点的“讨论参与”、“作业提交”和“在线课堂出席时长”。

import torch# 初始化边列表和边特征列表
edges = []
edge_features = []for i in range(len(node_indices)):for j in range(len(node_indices)):# 如果两个节点的时间差为1且属于同一学生,则添加一条边if abs(df.loc[i, '时间'] - df.loc[j, '时间']) == 1 and df.loc[i, '学生id'] == df.loc[j, '学生id']:edges.append([i, j])edge_features.append([df.loc[i, '讨论参与'],df.loc[i, '作业提交'],df.loc[i, '在线课堂出席时长']])# 确保边列表和边特征列表长度一致
if len(edges) != len(edge_features):raise ValueError("Edge list and edge feature list should have the same length.")# 将边列表转换为张量,并转置为 [2, num_edges] 形状
edge_index = torch.tensor(edges, dtype=torch.long).t().contiguous()# 将边特征列表转换为张量
edge_attr = torch.tensor(edge_features, dtype=torch.float)

知识点

  • 嵌套循环:用于遍历所有可能的节点对。
  • DataFrame.loc[]:用于按索引访问DataFrame中的行。
  • 条件判断:用于确定是否添加一条边。
  • torch.tensor():将Python列表转换为PyTorch张量。
  • .t() 和 .contiguous():用于将边列表张量转置为 [2, num_edges] 形状。

七. 总结 

 通过上述步骤,我们成功地将Excel表格数据转换为了图数据格式,包括节点特征、节点索引、边列表和边特征。这些数据可以直接输入到GNN模型中进行训练和预测。

import pandas as pd
import numpy as np
from sklearn.preprocessing import StandardScaler
import torch# 从Excel文件中读取数据
df = pd.read_excel('Participation_prediction_data.xlsx')# 打印前几行数据以检查数据格式
print(df.head())# 提取特征列并转换为numpy数组
features = df[['讨论参与', '作业提交', '在线课堂出席时长']].values# 提取标签列并确保其为整数类型
labels = df['讨论参与'].values.astype(int)# 初始化StandardScaler对象
scaler = StandardScaler()# 对特征进行标准化处理
features = scaler.fit_transform(features)# 获取所有节点的索引
node_indices = df.index.values# 初始化边列表和边特征列表
edges = []
edge_features = []for i in range(len(node_indices)):for j in range(len(node_indices)):if abs(df.loc[i, '时间'] - df.loc[j, '时间']) == 1 and df.loc[i, '学生id'] == df.loc[j, '学生id']:edges.append([i, j])edge_features.append([df.loc[i, '讨论参与'],df.loc[i, '作业提交'],df.loc[i, '在线课堂出席时长']])if len(edges) != len(edge_features):raise ValueError("Edge list and edge feature list should have the same length.")edge_index = torch.tensor(edges, dtype=torch.long).t().contiguous()
edge_attr = torch.tensor(edge_features, dtype=torch.float)

八. 结语

通过将Excel数据转换为图数据格式,我们为后续的GNN模型搭建和训练奠定了基础!

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

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

相关文章

Redis bitmap应用

Redis bitmap应用 需求&#xff1a;存储用户今年已签到的天数&#xff0c;如在1月3日签到&#xff0c;则存 3 。。。以此类推 每秒300次请求压力测试 1、使用数据库存储 查询代码与时间 public List<Integer> selectSignRecord(long userId, Integer year) {if (year nu…

蓝桥杯之c++入门(六)【string(practice)】

目录 练习1&#xff1a;标题统计方法1&#xff1a;一次性读取整行字符&#xff0c;然后统计方法2&#xff1a;按照单词读取小提示&#xff1a; 练习2&#xff1a;石头剪子布练习3&#xff1a;密码翻译练习4&#xff1a;文字处理软件练习5&#xff1a;单词的长度练习6&#xff1…

uniapp访问django目录中的图片和视频,2025[最新]中间件访问方式

新建中间件, middleware.py 匹配,以/cover_image/ 开头的图片 匹配以/episode_video/ 开头的视频 imageSrc: http://192.168.110.148:8000/cover_image/12345/1738760890657_mmexport1738154397386.jpg, videoSrc: http://192.168.110.148:8000/episode_video/12345/compres…

gc buffer busy acquire导致的重大数据库性能故障

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

[NKU]C++安装环境 VScode

bilibili安装教程 vscode 关于C/C的环境配置全站最简单易懂&#xff01;&#xff01;大学生及初学初学C/C进&#xff01;&#xff01;&#xff01;_哔哩哔哩_bilibili 1安装vscode和插件 汉化插件 ​ 2安装插件 2.1 C/C 2.2 C/C Compile run ​ 2.3 better C Syntax ​ 查看已…

DeepSeek-r1模型本地化部署最新教程

新的改变 DeepSeek 的搜索引擎基于深度学习算法&#xff0c;能够理解和分析大量的数据源&#xff08;如文本、图像、视频等&#xff09;&#xff0c;并结合用户的行为数据和偏好&#xff0c;提供个性化的搜索结果。 最近爆火的DeepSeek不用多说了&#xff0c;快来本地部署感受…

网络工程师 (20)计算机网络的概念

一、定义 计算机网络是指将地理位置不同、具有独立功能的多台计算机及其外部设备&#xff0c;通过通信线路及通信设备连接起来&#xff0c;在网络操作系统、网络管理软件及网络通信协议的管理和协调下&#xff0c;实现信息传递和资源共享的计算机通信系统。 二、组成 资源子网&…

支持向量机(一)

支持向量机是典型的二分类模型&#xff0c;以其模型简单、实现简单、效果卓越而著称。 一元支持向量机 我们通过一条中间线根据特征对样本实现分类&#xff0c;很明显&#xff1a;两个支持样本的差别越大&#xff0c;两个支持样本的分类效果就越好。 二元支持向量机 在实际生…

React 设计模式:实用指南

React 提供了众多出色的特性以及丰富的设计模式&#xff0c;用于简化开发流程。开发者能够借助 React 组件设计模式&#xff0c;降低开发时间以及编码的工作量。此外&#xff0c;这些模式让 React 开发者能够构建出成果更显著、性能更优越的各类应用程序。 本文将会为您介绍五…

vscode 如何通过Continue引入AI 助手deepseek

第一步&#xff1a; 在deepseek 官网上注册账号&#xff0c;得到APIKeys(deepseek官网地址) 创建属于自己的APIKey,然后复制这个key,(注意保存自己的key)! 第二步&#xff1a; 打开vscode,在插件市场安装Continue插件, 点击设置&#xff0c;添加deepseek模型&#xff0c;默认…

LPJ-GUESS模型入门(一)

一、模型简介 LPJ-GUESS是一个基于过程的动态植被陆地生态系统模型&#xff0c;专为区域或全球研究而设计。这种模型通常被称为动态全球植被模型&#xff08;DGVM&#xff09;。根据区域气候条件和大气二氧化碳浓度的数据&#xff0c;它可以预测地球主要气候带本土生态系统的结…

Windows本地部署DeepSeek-R1大模型并使用web界面远程交互

文章目录 前言1. 安装Ollama2. 安装DeepSeek-r1模型3. 安装图形化界面3.1 Windows系统安装Docker3.2 Docker部署Open WebUI3.3 添加Deepseek模型 4. 安装内网穿透工具5. 配置固定公网地址 前言 最近爆火的国产AI大模型Deepseek详细大家都不陌生&#xff0c;不过除了在手机上安…

MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR)

MySQL时间类型相关总结(DATETIME, TIMESTAMP, DATE, TIME, YEAR) MySQL官方文档&#xff1a; https://dev.mysql.com/doc/refman/8.0/en/date-and-time-types.html 一. 对比&#xff1a; 在 MySQL 中&#xff0c;处理时间相关的数据类型主要有以下几种&#xff1a;DATE、TIME、…

Ubuntu部署Deepseek-R1模型(8b)

安装ubuntu系统 本机电脑系统ubuntu-20.04 #升级软件 sudo apt-get update#安装curl sudo apt-get install curl通过以上两条指令&#xff0c;完成了curl命令的安装。 安装ollama 打开Ollama官网 选择Linux&#xff0c; 给出如上图方框所示的一条指令 curl -fsSL https:…

【教程】docker升级镜像

转载请注明出处&#xff1a;小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你&#xff0c;欢迎[点赞、收藏、关注]哦~ 目录 自动升级 手动升级 无论哪种方式&#xff0c;最重要的是一定要通过-v参数做数据的持久化&#xff01; 自动升级 使用watchtower&#xff0c;可…

4 前端前置技术(上):AJAX技术、Axios技术(前端发送请求)

文章目录 前言一、Ajax技术&#xff08;从服务端获取数据&#xff0c;发送各种请求&#xff09;0 接口文档管理&#xff1a;使用apipost等接口测试软件创建接口便于前端后端分离测试1 基本概念2 原生Ajax使用示例&#xff08;几年前的早期用法&#xff09; 二、 Axios技术(对原…

Google C++ Style / 谷歌C++开源风格

文章目录 前言1. 头文件1.1 自给自足的头文件1.2 #define 防护符1.3 导入你的依赖1.4 前向声明1.5 内联函数1.6 #include 的路径及顺序 2. 作用域2.1 命名空间2.2 内部链接2.3 非成员函数、静态成员函数和全局函数2.4 局部变量2.5 静态和全局变量2.6 thread_local 变量 3. 类3.…

在 Mac M2 上安装 PyTorch 并启用 MPS 加速的详细教程与性能对比

1. 安装torch 在官网上可以查看安装教程&#xff0c;Start Locally | PyTorch 作者安装了目前最新的torch版本2.5.1&#xff0c;需要提前安装python3.9及以上版本&#xff0c;作者python版本是python3.11最新版本 使用conda安装torch&#xff0c;在终端进入要安装的环境&…

股指入门:股指期货是什么意思?在哪里可以做股指期货交易?

股指期货是一种以股票指数为标的物的期货合约&#xff0c;也可以称为股票指数期货或期指。 股指期货是什么意思&#xff1f; 股指期货是一种金融衍生品&#xff0c;其标的资产是股票市场上的股指&#xff0c;例如标普500指数、道琼斯工业平均指数、上证50指数等。 股指期货允…

ZooKeeper单节点详细部署流程

ZooKeeper单节点详细部署流程 文章目录 ZooKeeper单节点详细部署流程 一.下载稳定版本**ZooKeeper**二进制安装包二.安装并启动**ZooKeeper**1.安装**ZooKeeper**2.配置并启动**ZooKeeper** ZooKeeper 版本与 JDK 兼容性3.检查启动状态4.配置环境变量 三.可视化工具管理**Zooke…