DNA序列分类
目录
计算频率
欧氏距离判断法
Fisher判别函数
Bayes判别函数
针对序列建立模型,对DNA进行分类。DNA序列中存在着局部的和全局性的结构,充分挖掘序列的结构对理解DNA全序列有着重要的意义。

计算频率
%计算A、C、G、T在序列中出现的频率
clear all
clc
a=[ 33 44 19 1530 46 18 1730 50 24 747 20 12 3226 47 26 1239 44 14 1439 40 11 2131 41 18 2123 48 23 1720 45 30 15];b=zeros(10,4);for i=1:10for j=1:4b(i,j)=a(i,j)/(a(i,1)+a(i,2)+a(i,3)+a(i,4));endendb
欧氏距离判断法
Y = inv(X)计算方阵X的 逆矩阵。
X^(-1)等效于inv(X)。
x = A\b的计算方式与x = inv(A)*b不同,建议用于求解线性方程组。
%距离判别法中的线性判别函数
clear all
clc
a= [ 0.2973 0.3964 0.1712 0.13510.2703 0.4144 0.1622 0.15320.2703 0.4505 0.2162 0.06310.4234 0.1802 0.1081 0.28830.2342 0.4234 0.2342 0.10810.3514 0.3964 0.1261 0.12610.3514 0.3604 0.0991 0.18920.2793 0.3694 0.1622 0.18920.2072 0.4324 0.2072 0.15320.1818 0.4091 0.2727 0.1364];b=[ 0.3545 0.1000 0.0455 0.50000.3273 0.1455 0.0273 0.50000.2545 0.1273 0.1000 0.51820.3000 0.1182 0.0818 0.50000.2909 0.0636 0 0.64550.3636 0.0909 0.0818 0.46360.3545 0.1364 0.2455 0.26360.2909 0.0909 0.1182 0.50000.2182 0.0727 0.1455 0.56360.2000 0.0636 0.1727 0.5636 ];x=mean(a)';y=mean(b)';d=a';for i=1:10for j=1:4d(j,i)=(d(j,i)-d(j,1));endends1=d*d'e=b';for i=1:10for j=1:4e(j,i)=(e(j,i)-e(j,1));endends2=e*e's=s1+s2;f=s/(10+10-2);njz=inv(f);u=(njz*(x-y))'
v=u*(x+y)/2;
u*v
得出线性判别函数
%判别函数
function y=fun3(x1,x2,x3,x4)
y=0.0765*x1+7.7047*x2-2.8483*x3-4.4863*x4+0.0204;
使用线性判别函数对DNA序列进行归类,若w(x)>0则为A类,反之为B类。
clear all
clc
m=[0.2973 0.3964 0.1712 0.13510.2703 0.4144 0.1622 0.15320.2703 0.4505 0.2162 0.06310.4234 0.1802 0.1081 0.28830.2342 0.4234 0.2342 0.10810.3514 0.3964 0.1261 0.12610.3514 0.3604 0.0991 0.18920.2793 0.3694 0.1622 0.18920.2072 0.4324 0.2072 0.15320.1818 0.4091 0.2727 0.1364];
a=[ 0.3545 0.1000 0.0455 0.50000.3273 0.1455 0.0273 0.50000.2545 0.1273 0.1000 0.51820.3000 0.1182 0.0818 0.50000.2909 0.0636 0 0.64550.3636 0.0909 0.0818 0.46360.3545 0.1364 0.2455 0.26360.2909 0.0909 0.1182 0.50000.2182 0.0727 0.1455 0.56360.2000 0.0636 0.1727 0.5636 ];for i=1:10b(i,1)=fun3(a(i,1),a(i,2),a(i,3),a(i,4));c(i,1)=fun3(m(i,1),m(i,2),m(i,3),m(i,4));end
c
b
Fisher判别函数
得到y0便于后续判断
%fisher判别法
clear all
clcx=[0.2973 0.3964 0.1712 0.13510.2703 0.4144 0.1622 0.15320.2703 0.4505 0.2162 0.06310.4234 0.1802 0.1081 0.28830.2342 0.4234 0.2342 0.10810.3514 0.3964 0.1261 0.12610.3514 0.3604 0.0991 0.18920.2793 0.3694 0.1622 0.18920.2072 0.4324 0.2072 0.15320.1818 0.4091 0.2727 0.1364];x1=[0.3545 0.1000 0.0455 0.50000.3273 0.1455 0.0273 0.50000.2545 0.1273 0.1000 0.51820.3000 0.1182 0.0818 0.50000.2909 0.0636 0 0.64550.3636 0.0909 0.0818 0.46360.3545 0.1364 0.2455 0.26360.2909 0.0909 0.1182 0.50000.2182 0.0727 0.1455 0.56360.2000 0.0636 0.1727 0.5636];
a=mean(x)';
b=mean(x1)';
x=x';
x1=x1';
for i=1:4for j=1:10x(i,j)=x(i,j)-a(i,1);x1(i,j)=x1(i,j)-b(i,1);end
end
s=x*x';
s1=x1*x1';
c=1/18*(s+s1)
m=inv(c);
for i=1:4n(i,1)=a(i,1)-b(i,1);
end
z=1/18*m*n
y=0;
y1=0;
for i=1:4y=a(i,1)*z(i,1)+y;y1=b(i,1)*z(i,1)+y1;
end
y0=(10*y+10*y1)/20;
y0
根据z的值得到判别函数
%判别函数
function y=fun5(x1,x2,x3,x4);
y=-873.0364*x1-869.4539*x2-875.4649*x3-875.5247*x4;
归类:y>y0为A类,反之为B类
%调用函数
clear all
clc
f=[0.2973 0.3964 0.1712 0.13510.2703 0.4144 0.1622 0.15320.2703 0.4505 0.2162 0.06310.4234 0.1802 0.1081 0.28830.2342 0.4234 0.2342 0.10810.3514 0.3964 0.1261 0.12610.3514 0.3604 0.0991 0.18920.2793 0.3694 0.1622 0.18920.2072 0.4324 0.2072 0.15320.1818 0.4091 0.2727 0.1364];
m=[0.3545 0.1000 0.0455 0.50000.3273 0.1455 0.0273 0.50000.2545 0.1273 0.1000 0.51820.3000 0.1182 0.0818 0.50000.2909 0.0636 0 0.64550.3636 0.0909 0.0818 0.46360.3545 0.1364 0.2455 0.26360.2909 0.0909 0.1182 0.50000.2182 0.0727 0.1455 0.56360.2000 0.0636 0.1727 0.5636];
for i=1:10b(i,1)=fun5(f(i,1),f(i,2),f(i,3),f(i,4));h(i,1)=fun5(m(i,1),m(i,2),m(i,3),m(i,4));endbh
Bayes判别函数

确定函数
%贝叶斯判别法
clear all
clc
A=[ 0.2973 0.3964 0.1712 0.13510.2703 0.4144 0.1622 0.15320.2703 0.4505 0.2162 0.06310.4234 0.1802 0.1081 0.28830.2342 0.4234 0.2342 0.10810.3514 0.3964 0.1261 0.12610.3514 0.3604 0.0991 0.18920.2793 0.3694 0.1622 0.18920.2072 0.4324 0.2072 0.15320.1818 0.4091 0.2727 0.1364];
a=(mean(A))';
d=A';
B=[0.3545 0.1000 0.0455 0.50000.3273 0.1455 0.0273 0.50000.2545 0.1273 0.1000 0.51820.3000 0.1182 0.0818 0.50000.2909 0.0636 0 0.64550.3636 0.0909 0.0818 0.46360.3545 0.1364 0.2455 0.26360.2909 0.0909 0.1182 0.50000.2182 0.0727 0.1455 0.56360.2000 0.0636 0.1727 0.5636];
b=(mean(B))';
% c=zeros(3);
for i=1:10for j=1:4d(j,i)=(d(j,i)-a(j,1));end
end
S1=d*d'
e=B';
for x=1:10for y=1:4e(y,x)=(e(y,x)-b(y,1));end
end
S2=e*e';
s=S1+S2;
r=inv(s/18);
log(0.5)-0.5*a'*r*a
r*a
log(0.5)-0.5*b'*r*b
r*b
进行分类
%判别函数
clear all
clc
format long;
a=[0.2973 0.3964 0.1712 0.13510.2703 0.4144 0.1622 0.15320.2703 0.4505 0.2162 0.06310.4234 0.1802 0.1081 0.28830.2342 0.4234 0.2342 0.10810.3514 0.3964 0.1261 0.12610.3514 0.3604 0.0991 0.18920.2793 0.3694 0.1622 0.18920.2072 0.4324 0.2072 0.15320.1818 0.4091 0.2727 0.1364];
b=[0.3545 0.1000 0.0455 0.5000 0.3273 0.1455 0.0273 0.50000.2545 0.1273 0.1000 0.51820.3000 0.1182 0.0818 0.50000.2909 0.0636 0 0.64550.3636 0.0909 0.0818 0.46360.3545 0.1364 0.2455 0.26360.2909 0.0909 0.1182 0.50000.2182 0.0727 0.1455 0.56360.2000 0.0636 0.1727 0.5636];
for i=1:10c(i,1)=fun7_1(a(i,1),a(i,2),a(i,3),a(i,4));d(i,1)=fun7_2(a(i,1),a(i,2),a(i,3),a(i,4));e(i,1)=fun7_1(b(i,1),b(i,2),b(i,3),b(i,4));f(i,1)=fun7_2(b(i,1),b(i,2),b(i,3),b(i,4));
end
c
d
e
f
最终分类结果表明,欧式距离法、Fisher判别法、Bayes判别法这三种方法的判对率分别为90%,95%,80%。故用Fisher判别法判别DNA分类较好。
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
