逻辑数组的降维



我在两个不同的时间点测量了 5 台设备。测量基本上由对应于相应位置的位值的 1 和 0 数组组成:

whos measurement1_dev1_time1
Name                         Size               Bytes  Class      Attributes
measurement1_dev1_time1      4096x8             32768  logical

我假设对于特定设备,测量时间 1 和 2 之间的变化是唯一的。但是,由于我正在处理不同位置的 32768 位,因此很难想象是否存在某种依赖关系。

由于位置x的每一个位都可以被视为观察的一个维度,我认为使用 PCA 来减少维度的数量。

因此,对于 5 个设备中的每一个:

  1. 我在第 t1 点随机抽取n测量值并分别t2
  2. 我准备了一个数组作为pca()的输入,其中包含 m *n 列(m <32768;它是所有观察到的位的子集,因为原始数据对于 pca 来说可能太大)和 4 行(每个设备一行)。
  3. 在这个数组A我计算 pca: ''[coeff score subtent] = pca(zscore(A))'''
  4. 然后我尝试使用biplot可视化它:biplot(coeff(:,1:2), 'score', score(:,1:2))

然而,这给了我非常奇怪的结果。也许PCA不是解决这个问题的正确方法?我还修改了输入数据以执行 PCA,而不是在逻辑位数组本身上。相反,我创建了一个向量,它保存原始测量数组中存在"1"的索引。这也会产生奇怪的结果。

由于我是PCA的

新手,我想问你,你是否看到了过程中的缺陷,或者PCA是否不是我的目标的正确方法,我最好寻找其他降维方法或聚类算法。

这种"某种依赖关系"可以只是数据点的成对相关性吗?或者你想找出什么?

如果您这样做,您是否会获得"预期结果":

meas_norm = 2*measurement1_dev1_time1 - 1;
CovarianceMatrix = meas_norm' * meas_norm;
figure
pcolor(CovarianceMatrix )

是否存在数据类型问题?尝试喂double(data) .(请在您的示例中添加适当的代码)

如果您寻求降维,也可以考虑ICA。


上级:你能用xor探测它吗?由于您无法对行或列执行xor,因此您可以欺骗all(x, dimension)

example = imread('cameraman.tif')>128;
meas_points = numel(example);
num_sensors = 4;
%// simulate data for t1
meas_before = repmat(example(:), 1, num_sensors);
flickering_before = (rand(meas_points, num_sensors)<0.001);
meas_before(flickering_before) = ~meas_before(flickering_before);
%// simulate position of changing pixels, let's say 8%
true_change = (rand(num_sensors,1)<0.08);
%// simulate data for t2    
meas_after = repmat(example(:), 1, num_sensors);
meas_after(true_change) = ~meas_after(true_chage);
flickering_after = (rand(meas_points, num_sensors)<0.001);
meas_after(flickering_after) = ~meas_after(flickering_after);
stable_points_after = all(meas_after, 2) | all(~meas_after, 2);
stable_point_fraction = sum(stable_points_after)./ meas_points;
%// similarly for the states before (i.e. t1)
stable_points_before = all(meas_before, 2) | all(~meas_before, 2);   
%// now see which change coherently
stable_chage = meas_after(stable_points_after, 1) & meas_before(stable_points_before, 1)

相关内容

  • 没有找到相关文章

最新更新