python实现knn图片分类_GitHub - professor98911/PythonComputerVision-9-Image-Content-Classification: 图像内容分类。...

本文详细介绍了如何使用Python实现KNN算法进行图像内容分类,包括二维数据的KNN分类器可视化,以及稠密SIFT(dense sift)原理在手势识别中的应用。通过计算和可视化dense SIFT描述子,建立了一个简单的手势识别系统,该系统在作者的手势图像数据集上达到了98%的准确率。
摘要由CSDN通过智能技术生成

PythonComputerVision-9-Image-Content-Classification

图像内容分类--本文主要阐述:①knn可视化。②dense sift(稠密sift)原理。③手势识别

一.K邻近分类法(KNN)

目前存在很多分类方法,其中最简单且用的最多的一种方法就是KNN(K-Nearest Neighbor,K邻近分类法),这种算法把要分类的对象,比如我们后面要用到的特征向量,与训练集中已知类标记的所有对象进行对比,并由k近邻对指派到哪个类进行投票。这种方法通常分类效果较好,但是也有很多弊端:与K-means聚类算法一样,需要预先设定K值,K值的选择会影响分类的性能;此外,这种方法要求将整个训练集存储起来,如果训练集非常大,搜索起来会比歼缓慢。对于大训练集,采取某些装箱形式通常会减少对比的次数。

实现最基本的KNN很简单。这里会展示一个简单的二维示例:

1.创建数据集

源码如下:

# -*- coding: utf-8 -*-

from numpy.random import randn

import pickle

from pylab import *

# create sample data of 2D points

n = 250

# 2个正态分布数据集

class_1 = 0.7 * randn(n,2)

class_2 = 1.4 * randn(n,2) + array([5,1])

labels = hstack((ones(n),-ones(n)))

# save with Pickle

#with open('points_normal.pkl', 'wb') as f:

with open('points_normal_test.pkl', 'wb') as f:

pickle.dump(class_1,f)

pickle.dump(class_2,f)

pickle.dump(labels,f)

# 正态分布并且使数据环绕装分布

print ("save OK!")

class_1 = 0.7 * randn(n,2)

r = 0.9 * randn(n,1) + 5

angle = 3*pi * randn(n,1)

class_2 = hstack((r*cos(angle),r*sin(angle)))

labels = hstack((ones(n),-ones(n)))

# save with Pickle

#with open('points_ring.pkl', 'wb') as f:

with open('points_ring_test.pkl', 'wb') as f:

pickle.dump(class_1,f)

pickle.dump(class_2,f)

pickle.dump(labels,f)

print ("save OK!")

用不同的保存文件名运行上述代码两次,就可以得到4个二维数据集。每个分布有两个文件,一个训练,一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值