【发布时间】:2020-01-23 15:47:45
【问题描述】:
我想在数据集 (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 平均值的特征数。
【问题讨论】:
-
b1在每次循环迭代时都会被覆盖,因此只使用最后一次循环迭代的结果。您应该将该计算移出循环。您还应该在循环之前预先分配t1:t1 = zeros(m-1,m)。这将显着加快您的计算速度。
标签: arrays matlab matrix mean feature-selection