1、什么是猫狗大战;

数据集来源于Kaggle(一个为开发商和数据科学家提供举办机器学习竞赛、托管数据库、编写和分享代码的平台),原数据集有12500只猫和12500只狗,分为训练、测试两个部分。

2、什么是Knn算法:
K最近邻(k-Nearest Neighbor,KNN)基本思想:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
    
如果用比较平实的话来说,就是“我们已经存在了一个带标签的数据库,现在输入没有标签的新数据后,将新数据的每个特征与样本集中数据对应的特征进行比较,然后算法提取样本集中特征最相似(最近邻)的分类标签。”
上图中的对象可以分成两组,蓝色方块和红色三角。每一组也可以称为一个类。我们可以把所有的这些对象看成是一个城镇中房子,而所有的房子分别,,(,)).astype(np.float32)
,,(,)).astype(np.float32)
]
plt.scatter(red[:,],red[:,],,]
plt.scatter(blue[:,],blue[:,],,,,(,)).astype(np.float32)
plt.scatter(newcomer[:,],newcomer[:,],,)
) )]
].reshape(-,).astype(np.float32) :].reshape(-,).astype(np.float32) )
train_labels = np.repeat(k,)[:,np.newaxis]
//直接用训练的结果进行测试
test_labels = train_labels.copy()
)
)
cap = cv2.VideoCapture()
全部代码
) )]
train = np.array(cells).reshape(-,).astype(np.float32)
trainLabel = np.repeat(np.arange(),)
,).astype(np.float32)
train = np.vstack((train,newData))
trainLabel = np.hstack((trainLabel,newDataLabel))
knn.train(train,cv2.ml.ROW_SAMPLE,trainLabel)
)
gray2 = cv2.erode(gray2,)
edges = cv2.absdiff(gray,gray2)
x = cv2.Sobel(edges,cv2.CV_16S,,)
y = cv2.Sobel(edges,cv2.CV_16S,,)
absX = cv2.convertScaleAbs(x)
absY = cv2.convertScaleAbs(y)
dst = cv2.addWeighted(absX,)
ret, ddst = cv2.threshold(dst,thresValue,,cv2.THRESH_BINARY)
im, contours, hierarchy = cv2.findContours(ddst,cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
:
rois.append((x,y,w,h))
, cv2.THRESH_BINARY)
th = cv2.resize(th,(,))
out = th.reshape(-,).astype(np.float32)
ret, result, neighbours, dist = knn.findNearest(out, )
][]), th
**n).reshape(-,)
*i:*(i+),:] = images[i]
)
*
height =
videoFrame = cv2.VideoWriter(,(
]
rois, edges = findRoi(frame, )
digits = []
)
digits.append(cv2.resize(th,(,)))
cv2.rectangle(frame, (x,y), (x+w,y+h), (,,), )
cv2.putText(frame, , (,,), )
newEdges = cv2.cvtColor(edges, cv2.COLOR_GRAY2BGR)
newFrame = np.hstack((frame,newEdges))
cv2.imshow() & ,*Nd))
cv2.imshow(
) & : )
])
labels, testData = np.hsplit(test,[])
)
correct = np.count_nonzero(result == labels)
accuracy = correct*
]==)
)
]
all_label_list = temp[:, ]
n_sample = ,))
tra_images.append(image)

tra_labels = all_label_list[:n_train]
tra_labels = [,))
val_images.append(image)

val_labels = all_label_list[n_train:]
val_labels = [,*).astype(np.float32) ,*).astype(np.float32)
)
# Now we check the accuracy of classification
# For that, compare the result with test_labels and check which are wrong
np_val_labels = np.array(val_labels)[:,np.newaxis]
matches = result == np_val_labels
correct = np.count_nonzero(matches)
accuracy = correct*100.0/result.size
print(accuracy)

结果,在1000狗1000猫的数据集上,是55.55的准确率,而在全部的数据集上,是56.2的准确率。证明两点
knn是有一定用途的;但是在不对特征进行详细分析的基础上,其准确率很难得到较大提高。
Knn的例子到此告以段落。

附件列表

py4CV例子1猫狗大战和Knn算法的更多相关文章

  1. python机器学习一:KNN算法实现

    所谓的KNN算法,或者说K最近邻(kNN,k-NearestNeighbor)分类算法是数据挖掘分类技术中最简单的方法之一.所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个 ...

  2. 数据挖掘之分类算法---knn算法(有matlab例子)

    knn算法(k-Nearest Neighbor algorithm).是一种经典的分类算法.注意,不是聚类算法.所以这种分类算法 必然包括了训练过程. 然而和一般性的分类算法不同,knn算法是一种懒 ...

  3. 什么是 kNN 算法?

    学习 machine learning 的最低要求是什么?  我发觉要求可以很低,甚至初中程度已经可以.  首先要学习一点 Python 编程,譬如这两本小孩子用的书:[1][2]便可.   数学方面 ...

  4. KNN算法与Kd树

    最近邻法和k-近邻法 下面图片中只有三种豆,有三个豆是未知的种类,如何判定他们的种类? 提供一种思路,即:未知的豆离哪种豆最近就认为未知豆和该豆是同一种类.由此,我们引出最近邻算法的定义:为了判定未知 ...

  5. Python 手写数字识别-knn算法应用

    在上一篇博文中,我们对KNN算法思想及流程有了初步的了解,KNN是采用测量不同特征值之间的距离方法进行分类,也就是说对于每个样本数据,需要和训练集中的所有数据进行欧氏距离计算.这里简述KNN算法的特点 ...

  6. KNN算法[分类算法]

    kNN(k-近邻)分类算法的实现 (1) 简介: (2)算法描述: (3) <?php /* *KNN K-近邻方法(分类算法的实现) */ /* *把.txt中的内容读到数组中保存,$file ...

  7. Kmeans算法与KNN算法的区别

    最近研究数据挖掘的相关知识,总是搞混一些算法之间的关联,俗话说好记性不如烂笔头,还是记下了以备不时之需. 首先明确一点KNN与Kmeans的算法的区别: 1.KNN算法是分类算法,分类算法肯定是需要有 ...

  8. 机器学习--kNN算法识别手写字母

    本文主要是用kNN算法对字母图片进行特征提取,分类识别.内容如下: kNN算法及相关Python模块介绍 对字母图片进行特征提取 kNN算法实现 kNN算法分析 一.kNN算法介绍 K近邻(kNN,k ...

  9. 深入浅出KNN算法(二) sklearn KNN实践

    姊妹篇: 深入浅出KNN算法(一) 原理介绍 上次介绍了KNN的基本原理,以及KNN的几个窍门,这次就来用sklearn实践一下KNN算法. 一.Skelarn KNN参数概述 要使用sklearnK ...

随机推荐

  1. 原生table相关写法

    1.<table style="width: 100%;text-align: center" cellpadding="0" cellspacing=& ...

  2. ASP.Net Core 2.2 MVC入门到基本使用系列 (三)(转)

    本教程会对基本的.Net Core 进行一个大概的且不会太深入的讲解, 在您看完本系列之后, 能基本甚至熟练的使用.Net Core进行Web开发, 感受到.Net Core的魅力. 本教程知识点大体 ...

  3. 1.display:flex布局笔记

    /*display:flex布局方式主要运用于垂直居中的效果*/ 一.Flex译为Flexible Box(弹性盒子),任何一个容器都可以指定为Flex布局 注:设置为Flex布局之后,子元素的flo ...

  4. 函数max()优化

    函数max的优化 用途:查询最后支付时间-优化max函数 语句: select max(payment_date)from payment 执行计划:

  5. java中的锁之AbstractQueuedSynchronizer源码分析(一)

    一.AbstractQueuedSynchronizer类介绍. 该抽象类有两个内部类,分别是静态不可继承的Node类和公有的ConditionObject类.AbstractQueuedSynchr ...

  6. springboot的默认访问路径

    注意:默认配置的/**映射到/static(或/public ,/resources,/META-INF/resources) 当请求/index.html的时候,Spring MVC 会在/stat ...

  7. VS2017

    Visual Studio常用快捷键https://www.cnblogs.com/DonetRen/p/8182911.htmlVisual Studio 2017 Product Family S ...

  8. vm虚拟机黑屏解决办法

    以管理员打开cmd 输入 netsh winsock reset --------------------- 然后 reboot

  9. django后台的制作

    参考:http://zengestudy.blog.51cto.com/1702365/1902660 http://www.cnblogs.com/fnng/p/3737964.html 实现与后台 ...

  10. html5-浮动

    #div1{    background: rgba(255,0,0,0.5);    width: 250px;    height: 250px;    float: right;}#div2{  ...