使用countvectorizer 和tf-idf来编码文字/DNA序列

在做文字识别和自然语言处理时,countvectorizer 和tf-idf是常见的两种常见的对文字进行编码的方式。DNA在打断成kmer后,也可以按照文字编码的方式对kme进行编码。DNA如何编码可参考本人博客文章字符串(如DNA序列,蛋白质序列)的编码和用于机器学习和神经网络.

这篇文章展示如何将DNA序列打断成kmer然后用countvectorizer 和tf-idf来编码,当然也可以直接用文字来编码,如果用来处理word文本,直接从第2步开始。

1. 对dna 打断成kmer并处理成word格式

# 读取fasta 序列
from Bio import SeqIO
chromid = []
chromseq = []
for sample in SeqIO.parse("your——file.fa", "fasta"):
    chromid.append(sample.id)
    chromseq.append(str(sample.seq))
chrom.head()

读入的序列以字符串格式储层:

	id	seq
0	HF952106	atagtgaaaaagagatatttaacttgttgtctgatcttcgtgaaaa...
1	APOS01000035	ataaataaagtagcttgttgtgattttcggattaaaattgcgtcaa...
2	JKMH01000030	gctggtgaactccggcaccgaggccactatgagcgccgtgcggctg...
3	JDYX01000005	aaatgcttgagggttcgtaattaacttgaatacatcttcatcaata...
4	ALQS01000022	aggattggatcgaggtcaatgactaaagttgttttagtgacgggct...

#打断成6mer

def getKmers(sequence, size=6):
    return [sequence[x:x+size].lower() for x in range(len(sequence) - size + 1)]
    
chrom['6mers'] = chrom.apply(lambda x: getKmers
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值