文章目录
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个元素从而实现下采样的作用。
挑选意味着要建立一个评分体系,并且围绕这个评分体系去计算价值得分。
而得分可以通过矩阵相乘来得到对应的得分。