使用SGT生成sequence embedding时报TypeError:列表索引应为整数或切片
报错原因
sgt库的fit_transform方法要求传入的corpus参数必须为包含id和sequence两列的 pandas DataFrame,你直接传入了由字符列表组成的普通Python列表,库内部尝试用字符串索引访问列表元素才触发了类型错误。
修复后代码
import pandas as pd from sgt import SGT # 原始数据构造 data = [[100, 'MLARALLL'], [101, 'MEAEGSSAPARA'], [102, 'MPGPRRPAGSR']] df = pd.DataFrame(data, columns = ['Id', 'Sequence']) # 构造符合SGT要求的输入格式 sgt_corpus = pd.DataFrame() sgt_corpus['id'] = df['Id'] # 每个序列转成单字符组成的列表 sgt_corpus['sequence'] = df['Sequence'].apply(list) # 初始化SGT生成嵌入 sgt = SGT(kappa=10, lengthsensitive=False) embedding = sgt.fit_transform(corpus=sgt_corpus)
结果说明
运行后得到的embedding即为所有序列对应的嵌入矩阵,每一行对应原始数据中一个id的序列嵌入结果,可直接用于后续的建模任务。
内容的提问来源于stack exchange,提问作者Pranab
相关产品推荐
相关产品推荐

