1

KNN 検索を使用してテスト データを分類し、分類率を見つけます。

以下は、matlab コードです。たとえば、次のとおりです。

load fisheriris
x = meas(:,3:4); % x =all training data
y = [5 1.45;6 2;2.75 .75]; % y =3 testing data for 'versicolor' species

[n,d] = knnsearch(x,y,'k',1);   % find the nearest neighbors to three testing data

predicted_class=species(n);

true_class=[cellstr('versicolor'); cellstr('versicolor'); cellstr('versicolor')];

Classification_rate=100*sum(strcmp(predicted_class,true_class))/length(predicted_class);

ただし、上記の matlab コードは k=1 にちょうど適しています。k=2 を試した場合、strcmp を使用するとエラーが発生しました。とにかくコードを変更することはありますか??

次に、「virginica」などの別の種をテストしたい場合は、時間をかけて true_class を「versicolor」から「virginica」に変更する必要があります。自動的に変更する方法はありますか?? ありがとう

4

1 に答える 1

0

あなたの質問の最初の部分についてはよくわかりません。ただし、2番目の部分では、文字列'versicolor'と'virginica'の両方に変数を定義し、反復ごとに変化するようにループを配置することができます。

Vars = {'versicolor','virginica'};
for i = 1:length(Vars);
    true_class = [cellstr(Vars{i}); cellstr(Vars{i}); cellstr(Vars{i})];
    Classification_rate{i} = 100*sum(strcmp(predicted_class,true_class))/length(predicted_class);
end
于 2012-12-08T09:10:50.567 に答える