MATLAB GUI で k-means を使用しています。私はそれをやった。プログラム (GUI) は非常にうまく動作します (コマンド ウィンドウでは、完全に動作します)。わかりませんが、GUI が動作していることもありますが、突然エラーが表示されることもあります。エラーメッセージは次のとおりです。
??? Error while evaluating uicontrol Callback
??? Error using ==> kmeans>batchUpdate at 436
Empty cluster created at iteration 1.
Error in ==> kmeans at 337
converged = batchUpdate();
Error in ==> CalcRand at 4
[g c] = kmeans(data,k,'dist','SqEuclidean');
Error in ==> kmeansFIN2>Centroid_Callback at 203
[g,c,y,clr]=CalcRand( data,k );
Error in ==> gui_mainfcn at 96
feval(varargin{:});
Error in ==> kmeansFIN2 at 42
gui_mainfcn(gui_State, varargin{:});
Error in ==>
@(hObject,eventdata)kmeansFIN2('Centroid_Callback',hObject,eventdata,guidata(hObject))
??? Error while evaluating uicontrol Callback
簡単な説明: 私の GUI には 4 つのプッシュ ボタンがあります。それらは、クラスター、セントロイドの表示、グラフィックの表示、グラフィックの評価です。ここでコードを示すこともできますが、長すぎるため、コードのヒントを示します。
% CLUSTER (PUSH BUTTON)
[g c] = kmeans(cobat,k,'dist','SqEuclidean');
y = [cobat g]
% SHOW CENTROID (PUSH BUTTON)
c
% EVALUATE THE CLUSTER
[s,h]=silhouette(cobat,g,'SqEuclidean');
% SHOW THE GRAPHIC
%# show points and clusters (color-coded)
clr = lines(k);
figure, hold on
scatter3(cobat(:,1), cobat(:,2), cobat(:,3), 36, clr(g,:), 'Marker','.')
scatter3(c(:,1), c(:,2), c(:,3), 100, clr, 'Marker','o', 'LineWidth',3)
hold off
view(3), axis vis3d, box on, rotate3d on
xlabel('x'), ylabel('y'), zlabel('z')
エラーによると、誰かが次のように述べています。クラスター重心の開始の選択. 'EmptyAction' パラメーターは、それが発生した場合に実行される手順を制御し、デフォルトはエラー アウトです." そうですか?誰かが信頼できる情報源で私に説明できますか? そして、このエラーを回避する方法はありますか?
ありがとうございました。