图神经网络X项目|基于图神经网络的电商行为的预测(10%)

本文介绍了如何使用JupyterNotebook进行数据预处理,包括数据集下载、LabelEncoder编码技巧、随机采样、抽取前N项以及图神经网络的构建,重点讲解了如何构造图和使用TopKpooling进行采样。
摘要由CSDN通过智能技术生成

Jupyter Notebook 学习人工智能的好帮手

【Jupyter Notebook】快速上手 轻松玩明白

数据集

数据集下载

数据集下载地址

数据集调用

from sklearn.preprocessing import LabelEncoder
import pandas as pd

df = pd.read_csv("yoochoose-clicks.dat",header=None)
df.columns = ['session_id','timestamp','item_id','category']

print(df)

在这里插入图片描述
在这里插入图片描述
其中,session_id表示的是某次会话的编号,而item_id表示的是某次会话下的某个操作,category代表购买情况,其中0代表未购入,1代表购入。

数据集应用技巧——获取不重复的编号

可以对某一个关键字采用unique()
在这里插入图片描述

数据集应用技巧——随机采样

应用场景:数据集过多,抽取部分数据进行观察。
工具:采用random中的choice进行提取(numpy库也有random包,也有choice方法)。

在这里插入图片描述
choice可以选取出列表/集合中的其中一项

数据集应用技巧——抽取前N项进行模拟测试

应用场景:可用于熟悉操作。
工具:使用分片进行操作。
分片的具体操作可见于分片链接
在这里插入图片描述

数据集构建

步骤

在这里插入图片描述

第二步 编码

刚开始这些点并没有图的编号(有session_id,但并不是一个方便建图的编号),于是可以采取按某一个关键字进行排序的方法,按大小给图上的节点进行重新编号。
编码主要有两种方式——一种是独热🔥one-hot编码,另外一种是标签编码LabelEncoder。
这里采用标签编码。
在这里插入图片描述

先采用fit对数据进行拟合,才采用transform得到具体数据。

from sklearn.preprocessing import LabelEncoder,OneHotEncoder
Encoder_tmp = LabelEncoder()
Encoder_tmp.fit(["apple","orange","banana"])
print(Encoder_tmp.transform(["apple"]))

在这里插入图片描述
也可以采用fit_transform一步到位,同时可以用fit_transform返回的列表给数据去添上一列,毕竟缺这部分,且与数据一一对应

 group['sess_item_id'] = sess_item_id#也就是上文的List
第三步 构造边集

同一会话中,事务的执行是按顺序的,比如说,看完这篇文章后,给博主点一个关注。看完这篇文章对应一件事情A,点个关注又对应一个事情B,此时可以由A连向B,代表一种顺序的关系。
需要注意的是,这个边集并不是一开始就有的,而是需要从一堆数据里面提取出来。而且这堆数据中可能存在重复的序号,也就是说需要进行去重。
同时,是针对会话去建图,也就是说一个会话一张图。
而去重的同时又要保证不要去破坏顺序性(顺序连接的点代表着边)

考虑复用性的话,记得将构造出来的数据集进行保存。

技巧

应用场景:可以可视化进度
在这里插入图片描述

from tqdm import tqdm
import time
List = [0,1,2,3,4,5,6]
for x in tqdm(List):
    time.sleep(1)
    print(x)
技巧2——使用groupby()对数据进行聚合,按类查看数据

,
注意的是,需要通过list对聚合信息进一步展开。
进一步可以按类查看数据。
需要注意的是,使用groupby后的数据,格式将转换为(序号,组)的结构,也就是前后数据的格式是不太一样的。因而,在提取数据的过程要根据具体的情况,选择合适的格式进行提取。

for session_id,group in tqdm(grouped):
    print("current sessin_id is",session_id)
    print(group)

在这里插入图片描述

技巧3——使用reset_index来确定索引

技巧4——使用loc来提取分析

在数据使用中,有的时候只需要使用到部分关键信息,然后对其进行分析,且为了避免在原数据上直接修改(排序或者汇总),一般是先生成副本,再进行分析。
而生成有效的副本,可以采用loc进行操作。
以下是常见的loc操作

选取部分列

要备注好选取的列的关键字名字

new_table = table.loc[:,'关键字1']#单列
new_table = table.loc[:,['关键字1''关键字2']]#多列
#其中:是分片,无任何数据填入,代表的是默认位置,且步长为0

在这里插入图片描述

技巧5——对选取的列进行排序

应用场景:比如从数据表中选出表现优秀的点/数据项

for session_id,group in tqdm(grouped):
    print("current sessin_id is",session_id)
    print(group)
    print(group.loc[:,["timestamp","item_id"]])
    print(group.loc[:,["timestamp","item_id"]].sort_values("item_id"))

数据集整体构造

在这里插入图片描述

构造图神经网络

构造神经网络

import 

层数

使用TopKpooling进行采样

实现的功能:TopKpooling实现的是对图进行下采样/剪枝
在这里插入图片描述
TopKpooling是指挑选出顶部的K个元素从而实现下采样的作用。
挑选意味着要建立一个评分体系,并且围绕这个评分体系去计算价值得分。
而得分可以通过矩阵相乘来得到对应的得分。

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值