Problem with Cluster command
Show older comments
When I ran the following three commands from the Statistics and Machine Learning Toolbox in the shown order, in my command window
Y = pdist(X)
Z - linkage(Y)
T = cluster(Z,'cutoff',1.2)
where X is 3042x53 matrix of type double, I get the following error (just after I execute statement 3) "Index in position 1 is invalid. Array indices must be positive integers or logical values." I then repeated these commands with a smaller X input (4x8). Same result. I believe that "cluster" wants integers for the first two columns of the Z input, (Z was produced by linkage) but the last column of Z is a distance measure and is real - so all columns of Z must be real. What am I doing wrong or misunderstanding?
Accepted Answer
More Answers (1)
Walter Roberson
on 24 Jan 2020
Z = linkage(squareform(Y)) ;
6 Comments
Walter Johnson
on 24 Jan 2020
Walter Roberson
on 24 Jan 2020
X = rand(4,8);
Y = pdist(X);
SY = squareform(Y);
Z = linkage(SY);
T = cluster(Z, 'cutoff', 1.2)
works for me. Tested in R2019a.
What shows up when you use
which linkage
? You should see toolbox/stats/stats/linkage.m . I am wondering if perhaps you are accidentally getting the linkage() routine from Peter Corke's Robotics Toolbox.
Walter Johnson
on 26 Jan 2020
Walter Roberson
on 26 Jan 2020
Hmmm... I just realized that you might somehow have an existing variable named cluster
Walter Johnson
on 26 Jan 2020
Walter Roberson
on 26 Jan 2020
It does happen a fair bit, most commonly with a variable named sum .
Categories
Find more on Hierarchical Clustering in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!