1、图片分类若采用最近邻法

 import numpy as np

 class NearestNeighbor:
def _init_(self):
pass def train(self, X, y):
self.Xtr = X
self.ytr = y def predict(self, X):
num_test = X.shape[0]
Y_pred = np.zeros(num_test, dtype = self.ytr.dtype) for i in range(num_test):
distances = np.sum(np.abs(self.Xtr - X[i, :]), axis = 1)
min_index = np.argmin(distances)
Y_pred[i] = self.ytr[min_index] return Y_pred

train函数时间复杂度为O(1),test函数时间复杂度为O(n),n为训练集大小。

训练时间短,但测试时间过长。

一般最好是训练时间较长,测试时间短,如CNN。

2、超参数:不是学习到的参数而是自己人工设置的参数。

如K近邻算法中的K值和距离度量算法的选择。

3、数据集划分:

划分为训练集、验证集、测试集。验证集用来选择超参数,只在测试集上测试一次。

当数据集比较小时,可采用k折交叉验证的方法,即将数据集划分为k份,其中k - 1份作为训练集,剩下的1份作为验证集,取k份数据集分别作为验证集的结果的平均值作为最终结果。

然而由于交叉验证计算代价高,在实践中使用较少。

4、KNN(K最近邻)优缺点:

当特征个数较少时适合用。另外可通过kd树、k均值等方法减少时间复杂度。

另外通过L2距离来比较图片是和人类直觉不同的,如上图中,原始图片分别经过平移、遮挡、变色,但得到的图片和原始图片的L2距离相同,

这和人类直觉显然不符。

在上面的图片中,相邻的图片L2距离较小,可以发现一些背景相似的图片距离较小,相对于主体,背景对类别的影响更大。

最新文章

  1. css3clock.js - 一个用CSS3与纯js实现的简单时钟
  2. 西门子成立next47部门,斥资十亿欧元投资VR/AR等初创公司
  3. iOS开发时,在Xcode中添加多个Targets进行版本控制
  4. 利用javascript、php和ajax实现计算器
  5. [android界面]android中src和background区别——前景与背景
  6. MySQL的基本函数
  7. OAF_EO系列2 - Validation数据校验验证机制(概念)
  8. codeforces 430A Points and Segments (easy)(理解能力有待提高……)
  9. animate平滑回到顶部
  10. 【转】Django Middleware
  11. ORACLE数据库学习之SQL性能优化详解
  12. Python_将指定文件夹中的文件压缩至已有压缩包
  13. 一种非常巧妙的读取串口数据的方法--C#
  14. 导出pip安装的所有放入一个文件中,并把通过这个安装所有的包
  15. 使用google earth engine根据NDWI(归一化水指数)提取水体信息
  16. 基于MMSE的预测
  17. 【洛谷P1330】封锁阳光大学
  18. angularjs动态添加节点时,绑定到$scope中
  19. 微信小程序 功能函数 支付接口
  20. 5V and 3V Level Translators

热门文章

  1. python 读取文件行
  2. 【QT学习笔记】二、信号槽和自定义信号槽
  3. python编程中常见错误
  4. linux入门常用指令3.安装mysql
  5. 长期专业版 mac pycharm
  6. JAI丢包掉帧处理
  7. ak-1
  8. unity vulkan snapdragon profiler
  9. metal sample code
  10. 使用原生js 实现点击消失效果