1

私はMatlabでLDAの実行に取り組んでおり、バイナリクラスを区別するためのしきい値を正常に作成することができます. ただし、しきい値が常に原点を横切るため、しきい値が正しくないことに気付きました。Matlabで原点を超えるしきい値なしでLDAを実行する方法はありますか?

前もって感謝します

4

1 に答える 1

0

これは、LDA に使用している製剤によって異なります。しきい値では、決定しきい値を参照していると思いますか? 以下のコードでは、事前確率が決定しきい値に影響を与えるため、それらを正しく設定していない可能性があります。

サンプルの疑似コードを次に示します。

N = ケースの数 c = クラスの数 プライア = クラスごとの各ケースの事前確率のベクトル ターゲット = クラスごとの各ケースのターゲット ラベル データ = 特徴 x ケース。

各データ ポイントのターゲット ラベルを取得します。

T = Targets(:,Cases);      % Target labels for each case 

クラスごとの平均ベクトルと共通共分散行列を計算します。

classifier.u = [mean(Data(:,(T(1,:)==1)),2),mean_nan(Data(:,(T(2,:)==1)),2),....,mean_nan(Data(:,(T(2,:)==c)),2];   % Matrix of data means
classifier.invCV = cov(Data');

クラス平均ベクトルと共通共分散行列を使用して判別値を取得します。

A1=classifier.u;
B1=classifier.invCV;
D = A1'*B1*Data-0.5*(A1'*B1.*A1')*ones(d,N)+log(Priors(:,Cases));

関数は c 判別値を生成します。ケースは、判別値が最大のクラスに割り当てられます。

于 2012-10-19T09:01:52.727 に答える