0

我想在数据集 (lung.mat) 上应用特征选择加载数据后,我通过 Jaccard 度量计算了每个特征与其他特征之间的距离平均值。然后我在 B1 中对距离进行降序排序。然后我选择了所有特征中的 25 个,并将矩阵保存在 databs1 中。我想选择距离值大于数组平均值 (B1) 的特征。

close all;
clc
load lung.mat
data=lung; 
[n,m]=size(data);
for i=1:m-1
      for j=i+1:m
            t1(i,j)=fjaccard(data(:,i),data(:,j));
           b1=sum(t1)/(m-1);
     end
  end
 [B1,indB1]=sort(b1,'descend');
 databs1=data(:,indB1(1:25));
 databs1=[databs1,data(:,m)]; %jaccard
 save('databs1.mat');

我会很感激您对如何在 B1 中定义它的意见,选择大于数组 B1 平均值的 B1 值,这意味着切割其余小于 B1 平均值的值。我用这条线,

B1(B1>mean(B1(:)))

运行后,B1 仍然具有等于完整数据集的全部特征(列)数,例如,lung.mat 有 57 个特征,而 B1 这条线仍然有 57 列,我认为这条线 B1 将被剪切为大于 B1 均值的特征数。

4

1 回答 1

1

您的问题的一般答案在这里(根据您的代码,这对您来说似乎很清楚):

a=randi(10,1,10) %example data
a>mean(a) %get binary matrix of which elements are larger than mean 
a(a>mean(a)) %select elements from a that are larger than mean

a =

     1     9    10     7     8     8     4     7     2     8


ans =

  1×10 logical array

   0   1   1   1   1   1   0   1   0   1


ans =

     9    10     7     8     8     7     8
于 2019-09-23T14:46:37.233 回答