2

我应该在著名的 Fisher Iris 数据集上使用 matlab 中的“mdscale”函数进行多维缩放。

我不明白为什么有时它有效,有时无效。这就是我所做的:

clear all;
load('fisheriris'); %it return a dataset in the variable "meas"

distM = pdist(meas);  %creating the distance matrix of the dataset
newPoints = mdscale(distM, 2, 'criterion', 'stress')    

错误是:

配置中的点位于同一位置。尝试不同的起点,或使用不同的标准。

如果我使用“sstress”或“metricsstress”之类的其他标准,它似乎可以工作。

怎么解释?

4

1 回答 1

0

这取决于实施。

基于矩阵求逆的实现应该是确定性的,但会随着数据的大小缩放 O(n^3);这是虹膜数据负担得起的。

基于概率地找到矩阵的特征向量(缩放 O(n^2) IIRC)的实现是随机初始化的,因此每次都会产生不同的结果。

但是你确定这是一个错误,而不仅仅是一个警告吗?

虹膜数据集特别容易出现此类问题,因为它的分辨率较低。值仅以 0.1 的分辨率测量,因此您几乎没有不同的值。

于 2014-11-09T19:23:45.800 回答