Python 图形分类
我进行图形分类,读取edgelist文件,拆分以进行训练,并使用networkx测试和检查训练集是否为连接图形:Python 图形分类,python,machine-learning,graph,Python,Machine Learning,Graph,我进行图形分类,读取edgelist文件,拆分以进行训练,并使用networkx测试和检查训练集是否为连接图形: import networkx as nx trainGraph = nx.read_edgelist('trainEdgelist.txt', create_using=nx.Graph(), nodetype=int) nx.is_connected(trainGraph) 如果我想使用10倍交叉验证,并使用类似于: from sklearn.model_selection i
import networkx as nx
trainGraph = nx.read_edgelist('trainEdgelist.txt', create_using=nx.Graph(), nodetype=int)
nx.is_connected(trainGraph)
如果我想使用10倍交叉验证,并使用类似于:
from sklearn.model_selection import KFold
KFold(n_splits=10, random_state=None, shuffle=False)
如何确保每个折叠的序列集都是连通图
我怎样才能添加这样一个条件呢?我仍然不完全理解您的目标,我会尽我所能回答您的问题 基本上`返回数据集的索引分割,它的输入是一个类似于数组的对象,这是一个“愚蠢”的函数,它只是拆分一个数组,没有进一步的逻辑 您需要创建具有以下结构的数据集: 类似于数组的对象,其中每个项都是一个连接图(如果适用于您的情况,则为其标签
y
创建另一个数组)
拥有此对象后,可以使用KFold()
创建多个测试和训练集
为了创建一组连通图,您可以选择多种方法,如:
- 删除X条随机边并检查图形是否连接(执行N次)
- 按注释中所述的增量方式添加边和节点,按顺序添加边,并检查图形是否与每个添加连接
我的建议是找到图的MST,这是基连通图,要创建它的变体,只需随机添加任何属于/不属于MST的边您到底想实现什么?通过拆分数据进行k折叠交叉验证,以使每个折叠的序列集都是一个连接图。k折叠来自传统数据,您可以将数据集拆分为更小的独立记录,你不能用graph做这件事,因为它不能被拆分,所以它会保留它的属性,也许你可以模仿k折叠操作,但我需要知道你的用例是什么…@shahaf谢谢你的回答。在创建图形之前,数据保存在edgelists中,如.txt文件。我意识到,当还有时间维度时(就像我的例子),经典的k折叠就不能执行了。在这种情况下,我可以实现前向k折叠,比如:-折叠1:训练[1],测试[2],-折叠2:训练[12],测试[3],-折叠3:训练[1 2 3],测试[4],-折叠4:训练[1 2 3 4],测试[5],-折叠5:训练[1 2 3 4 5],测试[6]