错误解决:在使用ogb加载dgl数据集时出错

文章讲述了在使用ogb的DglNodePropPredDataset加载数据时遇到的AttributeError,原因在于master.csv中的None值被转换为nan。提供了两种解决方案:一是读取时忽略缺失值,二是修改判断逻辑以处理nan。问题普遍存在于ogb的各种数据集中,推测可能与pandas版本更新有关。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

错误解决:在使用ogb加载dgl数据集时出错

报错

在使用ogb.nodeproppred.DglNodePropPredDataset加载数据集时,报错

AttributeError: ‘float’ object has no attribute ‘split’

尝试加载不同数据集,都会在同一个地方报这个错。

错误溯源

查看出错的位置为:

ogb包中的ogb.nodeproppred.dataset_dgl.py文件中

additional_node_files = self.meta_info['additional node files'].split(',')这一行

相关片段为:
本来应该为None的值,在此处为nan, 进入else处理,因此出错。

if self.meta_info['additional edge files'] == 'None':
    additional_edge_files = []
else:
	additional_edge_files = self.meta_info['additional edge files'].split(',')

查看代码逻辑:

self.meta_info = master[self.name]

meta_info是加载的数据集的所有信息。

master = pd.read_csv(os.path.join(os.path.dirname(__file__), 'master.csv'), index_col = 0)

数据集的信息是通过读取ogb包中的ogb.nodeproppred.master.csv文件获取的。

master.csv中存在None, 在使用pandas.read_csv()读取时,被处理为nan

因此在判断时出错。

修改

第一种方法:只需要在pandas读取master.csv时,忽略处理缺失值。保持文件的内容不变,在判断时就不会出错。

在当前环境的库中找到data_dgl.py.

路径一般为:环境名\Lib\site-packages\ogb\nodeproppred\dataset_dgl.py

如果是加载别的类型的数据集,将nodeproppred更换为别的路径

找到加载读取master的语句,设置na_filter = False, 使pandas忽略None。

master = pd.read_csv(os.path.join(os.path.dirname(__file__), 'master.csv'), index_col = 0,na_filter=False)

第二种方法:把判断的逻辑改为if self.meta_info['additional edge files'] == 'nan':(不推荐)

代码中的判断逻辑不止一处,不推荐这样修改。

延申

不只是在节点分类的数据集中有这样情况,在ogb每种数据集中都是这样,问题都一样。

猜测是pandas的更新导致的?

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Liwan95

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值