www.gusucode.com > Relief特征选择算法matlab源码程序 > Relief特征选择算法matlab源码程序/redundance.m
%========================================================================== % % 函数名:redundance % 函数介绍:进行两两冗余分析。 % 对基因进行两两相关性分析。相关性强的一对基因中分类权重小的被去掉,大的被保留。 % 相关性弱的基因和上行保留下的基因的集合就是特征基因。 % 运行该函数需要设定相关系数阈值。 % 输入参数: original_data是原始基因表达谱数据。首行是样本标记行。 % order是分类权重较大基因的顺序号。 % d是分类权重较大基因的权重值。 % stand_data是分类权重较大基因的归一化表达量。 % g_numbertotal是原始基因表达谱数据中的总的基因个数。 % 输出参数:feature_gene是特征基因的归一化表达量。 % feature_order是特征基因的顺序号。 % %========================================================================= function [ feature_gene, feature_order ] = redundance ( original_data, order, d , stand_data, g_numbertotal) %设定相关系数阈值 correlative_threshold = input (' 请输入相关系数阈值:'); %计算相关系数矩阵r r = abs( corrcoef ( transpose ( stand_data ) ) ); [row, column ] = size ( stand_data ); %先得到有序基因集合f和t。由大到小排列。 [ a, index] = sort ( d, 'descend'); f = stand_data ( index, : );%归一化表达拉量。 order_temp = order ( index ); fset = f ( 1, : );%第一个基因的归一化表达量。 orderset = order_temp ( 1 ); p = 1; %标志fset的基因个数。 for i = 2 : row g (i, :) = f (i, :); corr = 0; for j = 1 : p g (j, :) = fset (j, :); if r (i, j) > correlative_threshold corr = 1; end if corr == 0 p = p + 1; fset ( p, : ) = g(i, :); orderset ( p ) = i; end p = p - 1; end p = p + 1; end feature_order = orderset; %输出特征基因的原始表达量。 gene_data = original_data ( 2 : g_numbertotal + 1 , :); [ m , n ] = size ( feature_order ); for i = 1 : n feature_gene( i , :) = gene_data ( feature_order ( i ) , : ); end % end