MATLAB Answers

ラッパー法でのfunの定義の仕方について

2 ビュー (過去 30 日間)
Ayaka Egashira
Ayaka Egashira 2020 年 11 月 18 日
コメント済み: Ayaka Egashira 2020 年 12 月 11 日
特徴選択を行い、そこで選ばれた因子から順序ロジステックモデルを作ろうと思っています。そこでカスタム基準を使用した逐次特徴選択を使おうと思います。構文はinmodel = sequentialfs(fun,X,y)です。そこでこのfunを定義する必要があると思うのですが、どう定義したら良いですか?
よろしくおねがいします。

回答 (2 件)

michio
michio 2020 年 11 月 19 日
の例にある
fun = @(XT,yT,Xt,yt)loss(fitcecoc(XT,yT),Xt,yt);
が fun 定義の一例です。ここでは無名関数として定義していますが、別途関数ファイルに XTRAIN,ytrain,XTEST,ytest を入力とする関数を定義し(例えば myFcn.m)
fun = @myFcn
と定義することもできるかと思います。
  7 件のコメント
Ayaka Egashira
Ayaka Egashira 2020 年 12 月 11 日
ご回答ありがとうございます。
今回頂いたコードはそのカスタム基準を返す関数(の一部)ということでしょうか?事前に fscnca により特徴量を選択さておりますが、その選択された中から sequentialfs でさらに絞り込むことを想定されていますか?
>sequentialfsを使って特徴選択を行おうと考えていたのですが、funの定義を具体的にどう書けばよいか分からなかったので、fscncaを用いて特徴選択を行いました。
頂いたコードだけを拝見するとコード内で model が定義されていないために model.Rsquared.Adjusted との呼び出しにてエラーがでいると見えてしまいますが、いかがでしょうか?
具体的にどのようにmodelを定義すればよいですか?

サインインしてコメントする。


Ayaka Egashira
Ayaka Egashira 2020 年 12 月 11 日
編集済み: michio 2020 年 12 月 11 日
説明不足で申し訳ございません。
こちら、コードになります。
load imports-85
Y = X(:,15)
X(:,15) = []
mdl = fscnca(X,Y);
figure()
plot(mdl.FeatureWeights,'ro')
grid on
xlabel('Feature index')
ylabel('Feature weight')
% (ここで特徴選択を行う)
X14 = X(:,14)
X25 = X(:,25)
X16 = X(:,16)
X13 = X(:,13)
X12 = X(:,12)
% (特徴選択により選ばれた因子)
Xnew = [ones(size(X14)) X14 X25 X16 X13 X12];
Xnew(:,1)=[];
Ynew = ordinal(Y,{'1','2','3','4'},[],[19,29,39,49,59]);
[B,dev,stats] = mnrfit(Xnew,Ynew,'model','ordinal');
B
[B(1:3)'; repmat(B(4:end),1,3)]
stats.p
model.Rsquared.Adjusted
value = aic(model)
このように打ち込むと、エラー文が置きます。
順序ロジステックモデルを作成し、p値は出るのですが、他の評価方法(自由度調整済み決定係数やAIC)でも
モデルの評価を行いたいと考えています。しかし現段階では他の評価方法ではエラー文が出ます。
その他、不足している情報がございましたらお知らせください。
よろしくお願いいたします。

Community Treasure Hunt

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

Start Hunting!