K-mean Clustering

6 views (last 30 days)
MAT NIZAM UTI
MAT NIZAM UTI on 9 Nov 2021
Edited: MAT NIZAM UTI on 18 Nov 2021
Hi Everyone, can someone help me on how to use the K-mean clustering or perhaps share with me the suitable coding use to cluster wind speed data. I hava wind speed data in the form of Latitude, Longitude, Wind Speed. I want to cluster the data into 3 groups.

Accepted Answer

Image Analyst
Image Analyst on 12 Nov 2021
If you have all the lat and lon values, then just put each into kmeans separately:
numColumns = 26; % Or however many columns you know there to be.
[xIndexes, xCentroids] = kmeans(lon, numColumns);
numRows = 50; % Or however many rows you know there to be.
[yIndexes, yCentroids] = kmeans(lat, numRows);
The values of the columns (x or longitude values) will be in xCentroids.
The values of the rows (y or lat values) will be in yCentroids.
  16 Comments
Image Analyst
Image Analyst on 18 Nov 2021
So can we just take the first 2314 values and ignore the extra lat?
MAT NIZAM UTI
MAT NIZAM UTI on 18 Nov 2021
Edited: MAT NIZAM UTI on 18 Nov 2021
Sure..well I dont really know how the matlab works, because after comparing the actual values and the after read values, both lons and speeds were different with the actual data.
https://drive.google.com/drive/folders/1tFOl0ZHQo4XzB-VGvi-LBLPg_lERG98u (this is my very actual data) Column C until LB is the wind speeds values.

Sign in to comment.

More Answers (1)

H R
H R on 9 Nov 2021
If your data is in a matrix format X, then you can use the following:
[idx,C] = kmeans(X,3,'Distance','cityblock','Replicates',5);
  6 Comments
H R
H R on 12 Nov 2021
Yes, every thing is possible (even using 1D data) , but you have to finally check what you are looking for from the clustering task and check if the outcome makes sense to you.
MAT NIZAM UTI
MAT NIZAM UTI on 14 Nov 2021
Edited: Image Analyst on 14 Nov 2021
Here is my coding, and I have an error on it
Error using horzcat
Dimensions of matrices being concatenated are not consistent.
Error in k_mean (line 7)
idx1=kmeans([X1 Y1],numClusters,'Replicates',5);
This is the code:
k = xlsread('WIND_26YEARS.csv');
X1=(1:6943);
Y1=randn(6943,1);
numClusters=3;
idx1=kmeans([X1 Y1],numClusters,'Replicates',5);
pointclust=repmat(idx1,1,numClusters)==repmat(1:numClusters,numel(idx1),1);
colors=hsv(numClusters);
for j=1:numClusters,
plot(X1(pointclust(:,j)),Y1(pointclust(:,j)),'Color',colors(j,:));
if j==1,
hold on;
end;
end,
hold off;

Sign in to comment.

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!