Classifying DNA Sequences
在本教程中,我们将使用马尔科夫模型、k近邻算法、支持向量机和其他常用的分类器来对大肠杆菌DNA序列进行分类,从而探索生物信息学的世界。这个项目将使用来自UCI机器学习知识库的数据集,该数据集有106个DNA序列,每个序列有57个核苷酸(碱基对)。
你将学到以下知识:
- 如何从UCI库导入数据
- 将文本输入转为数字数据
- 构建和序列分类器
- 比较和对比分类算法
Step 1:导入数据集
下面的代码导入必要的模块,并将UCI数据转成Pandas DataFrame格式
# To make sure all of the correct libraries are installed, import each module and print the version numbe
import numpy
import sklearn
import pandas
print('Python: {}'.format(sys.version))
print('Numpy: {}'.format(numpy.__version__))
print('Sklearn: {}'.format(sklearn.__version__))
print('Pandas: {}'.format(pandas.__version__))
#导入模块
import numpy as np
import pandas as pd
#导入UCI数据集
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/molecular-biology/promoter-gene-sequences/promoters.data'
names = ['Class', 'id', 'Sequence']
data = pd.read_csv(url, names = names)
#打印一行样例
print(data.iloc[0])
Step 2:数据预处理
当前的数据是文本型的,我们需要对其预处理
#将数据集处理成Pandas DataFrame格式
classes = data.loc[:, 'Class']
print(classes[:5])
#生成DNA序列list
sequences = list(data.loc[:, 'Sequence'])
dataset = {}
# loop through sequences and split into individual nucleotides
for i, seq in enumerate(sequences):
# split into nucleotides, remove tab characters
nucleotides = list(seq)
nucleotides = [x for x in nucleotides if x != '\t']
# append class assignment
nucleotides.append(classes[i])
# add to dataset
dataset[i] = nucleotides
print(dataset[0])