MATLAB中的KNN算法

我正在开发一个拇指识别系统。我需要实现KNN算法来对我的图像进行分类。根据这个,它只有两个测量值,通过这些测量值计算距离以找到最近的邻居,但在我的情况下,我有400张25 x 42的图像,其中200张用于训练,200张用于测试。我已经搜索了几个小时,但还没有找到计算点之间距离的方法。

编辑:我已经将前200张图像重塑为1 x 1050,并将它们存储在一个200 x 1050的矩阵trainingData中。同样,我创建了testingData


回答:

以下是k-最近邻分类的一个示例代码(使用的一些函数需要统计工具箱):

%# 图像大小
sz = [25,42];
%# 训练图像
numTrain = 200;
trainData = zeros(numTrain,prod(sz));
for i=1:numTrain    
    img = imread( sprintf('train/image_%03d.jpg',i) );    
    trainData(i,:) = img(:);
end
%# 测试图像
numTest = 200;
testData = zeros(numTest,prod(sz));
for i=1:numTest    
    img = imread( sprintf('test/image_%03d.jpg',i) );    
    testData(i,:) = img(:);
end
%# 目标类别(我只是使用随机值。请加载你的实际值)
trainClass = randi([1 5], [numTrain 1]);
testClass = randi([1 5], [numTest 1]);
%# 计算每个测试实例与所有训练数据之间的成对距离
D = pdist2(testData, trainData, 'euclidean');
[D,idx] = sort(D, 2, 'ascend');
%# K个最近邻居
K = 5;
D = D(:,1:K);
idx = idx(:,1:K);
%# 多数投票
prediction = mode(trainClass(idx),2);
%# 性能(混淆矩阵和分类错误)
C = confusionmat(testClass, prediction);
err = sum(C(:)) - sum(diag(C))

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注