Clustering by kmean?

2 vues (au cours des 30 derniers jours)
Tony Castillo
Tony Castillo le 5 Oct 2016
Commenté : Tony Castillo le 5 Oct 2016
Hi Everybody, I'm doing an algorithm that allow me find the typical day and/or week of solar irradiance from a spreadsheet wiht hourly irradiation values from one year.
I'm having some issues with my algorithm, this should do the following: 1-read a spreadsheet of excel 2-calculate the mean of column "f" 3-calculate the kmean 4-graph a point of the mean of colunm "f" 5-graph all the values in column "f"
The point "3" does not work, because it send me a message of error.
This is the error message than Matlab send me, Error using kmeans (line 262) X must have more rows than the number of clusters. This is very strange, so that if i click over it open another script of MATLAB, if you can note my script does not has 262 code lines.
Error in Untitled4 (line 12) idx=kmeans(8759, 52);
%Algoritmo de clusterización kmeans para determinar de un año %una semana tipica de consumo clear all close all
%carga la hoja de datos f=xlsread('IrradBilbo2.xlsx', 1, 'f4:f8763'); %calculo de promedio y=mean(f);
%clausterización por kmean idx=kmeans(8759, 52);
%graficación figure(1) grid on hold on ylabel('Potencia [Wm2]'); xlabel('meses del año'); title ('Radiación Anual'); plot(f); %grafica los 8763 valores de irradiacion del año
figure(2) grid on hold on ylabel('Potencia [Wm2]'); xlabel('meses del año'); title ('Radiación Anual'); plot(y,'*'); %grafica el promedio de los 8763 valores de irradiación del año
%escritura de valores fprintf('promedio de irradiación anual %f/n:', y);

Réponse acceptée

Matthew Eicholtz
Matthew Eicholtz le 5 Oct 2016
See the documentation on the kmeans function.
IDX = kmeans(X,K)
The first input (X) should be an N-by-P data matrix, where N is the number of instances to cluster and P is the number of features. The second input (K) is the number of clusters you desire. The output (IDX) will be an N-by-1 vector of cluster indices for each data point.
In your script, you call
idx = kmeans(8759,52);
The first input is the problem. It is a scalar! In other words, you have only 1 data point with 1 feature. It is impossible to cluster this "data" into 52 clusters. From a very brief glance at your code, I think you may want this instead:
idx = kmeans(f,52);
  1 commentaire
Tony Castillo
Tony Castillo le 5 Oct 2016
This is very strange, so that if i click over it open another script of MATLAB, if you can note my script does not has 262 code lines.
Hi, now my code run without send a error message but the graph doesn't seems be what it should be, can you help me a little bit more?. I want to sort the data (clustering) days firstly or weeks according its irradiance.

Connectez-vous pour commenter.

Plus de réponses (0)

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by