プログラミングできる人ニお願いしたいです、、、!課題のプログラミングがチェック項目のあと一つがどうしても合格にならなくて親切な方、助けてほしいです(;;)課題は写真のとおりです。プログラミングです。rng('default')load fisheriris [coeff, score, latent] = (meas); % PCA(要修正)% ===============================% しきい値% ===============================theta_list = [0.4 0.6];% 結果保存用(Grader評価にも使える)num_data = zeros(length(theta_list),1);mae_list = zeros(length(theta_list),1);% ===============================% 混合正規分布の教師あり学習(初回)% ===============================[gmm0, predict0, mae0, P_class] = ... train_gmm_classification(score(:,1:2), species, 0.01, 100);% ===============================% 各しきい値で処理% ===============================for i = 1:length(theta_list) theta = theta_list(i); % ---- 外れ値削除(昨年度の 0.5 → theta)---- [P_s, ids] = sort(P_class); % 確率を昇順ソート id_del = max(find(P_s theta)); % theta 未満の最大インデックス(要修正) score2 = score(:,1:2); species2 = species; if ~isempty(id_del) score2(ids(1:), :) = [];%外れ値削除(要修正) species2(ids(1:)) = [];%正解の外れ値削除(要修正) end % ---- 外れ値削除後の教師あり学習 ---- [gmm, predict, mae] = ... train_gmm_classification(, , 0.01, 100);%要修正 [predict, nlogL, P] = cluster(gmm, score2); % ---- 結果保存(評価用)---- num_data(i) = size(score2,1); mae_list(i) = mae; % =============================== % プロット(参考表示) % =============================== figure('Position',[100 100 1200 500]) subplot(1,2,1) gscatter(score2(:,1),score2(:,2),species2,'krb','ov^',[],'off') hold on h = gca; gmPDF = @(x,y) arrayfun(@(x0,y0) pdf(gmm,[x0 y0]),x,y); fcontour(gmPDF,[h.XLim h.YLim],'MeshDensity',100) title(['正解+推定したGMM(\\theta = ' num2str(theta) ')']) subplot(1,2,2) gscatter(score2(:,1),score2(:,2),predict,'krb','ov^',[],'off') title(['クラスタリング結果(\\theta = ' num2str(theta) ')'])endどこを直せばいいか教えて欲しいです!閾値リスト、外れ値削除後に残ったデータ数はできたのですが、GMM 教師あり分類の予測誤差(MAE)だけできないです、有識の優しい方教えて欲しいです!

1件の回答

回答を書く

1179836

2026-01-31 21:00

+ フォロー

train_gmm_classificationがどういうものかわかりませんが、



1.PCA

[coeff, score, latent] = (meas); % ←これは間違い

→ pca 関数を使ってください

[coeff, score, latent] = pca(meas);



2. 外れ値削除の条件式

id_del = max(find(P_s theta)); % ←構文エラー

→ find(P_s \u0026lt; theta) に修正

id_del = max(find(P_s \u0026lt; theta));



3. 外れ値削除のインデックス指定

score2(ids(1:), :) = []; % ←全部消してしまう

species2(ids(1:)) = [];

→ 1:id_del に修正:

score2(ids(1:id_del), :) = [];

species2(ids(1:id_del)) = [];



4.GMM再学習の引数が空

[gmm, predict, mae] = train_gmm_classification(, , 0.01, 100); % ←空欄

→ 外れ値削除後のデータを使ってください

[gmm, predict, mae] = train_gmm_classification(score2, species2, 0.01, 100);

こんな感じで合格になると思います

うったえる有益だ(0シェアするブックマークする

関連質問

Copyright © 2026 AQ188.com All Rights Reserved.

博識 著作権所有