tfknn.m
来自「一个关于数据聚类和模式识别的程序,在生物化学,化学中因该都可以用到.希望对大家有」· M 代码 · 共 41 行
M
41 行
load iris.dat
sampleData = iris;
train = iris(1:2:end, :); % Use odd-indexed data as the sample data
test = iris(2:2:end, :); % Use even-indexed data as the test data
k = 3;
sampleIn = train(:, 1:end-1);
sampleOut = initfknn(train, k);
testFuzzyOut = fknn(sampleIn, sampleOut, test(:, 1:end-1), k);
[junk, testCrispOut] = max(testFuzzyOut');
misclassified_n = sum(testCrispOut'~=test(:, end));
dispconf(testCrispOut, test(:,end));
fprintf('\nResults of using fuzzy k-nearest neighbor rule for IRIS data:\n');
fprintf('Sample data: Odd-indexed data\n');
fprintf('Test data: Even-indexed data\n');
fprintf('No. of misclassified case is %g.\n', misclassified_n);
fprintf('Recognition rate = %g/%g = %.2f%%\n', ...
misclassified_n, size(test,1), 100*misclassified_n/size(test, 1));
for k = 3:9,
fprintf('k = %g\n', k);
% ====== Leave-one-out test
sampleNum = size(sampleData,1);
correct = zeros(sampleNum, 1);
for i=1:length(sampleData),
% fprintf('%g/%g\n', i, sampleNum);
test = sampleData(i,:);
train = sampleData;
train(i,:) = [];
trainIn = train(:, 1:end-1);
trainOut = initfknn(train, k);
testOut = fknn(trainIn, trainOut, test(1:end-1), k);
[junk, index] = max(testOut);
correct(i) = index==test(end);
end
fprintf('No. of misclassification: %g\n', sum(correct==0));
fprintf('Leave-one-out recognition rate = %g%%\n', sum(correct)/length(correct)*100);
end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?