图像内容分类(KNN算法+dense-sift+SVM手势识别)

KNN算法(K近邻分类法)

KNN算法可以直接调用python的sklearn包中的knn算法
python自带的sklearn包是一个非常强大的机器学习包,其中包含了knn算法,主要包含以下几个函数。(下面是用鸢尾花数据集做预测)

from sklearn.neighbors import KNeighborsClassifier
//引入sklearn包中的knn类
knn=KNeighborsClassifier(weights="distance",n_neighbors=10)
//取得knn分类器,并使用内置参数调整KNN三要素
knn.fit(iris_x_train,iris_y_train)
//使用knn.fit()对训练集进行训练
iris_y_predict=knn.predict(iris_x_test)
//调用knn.predict()预测新输入的类别
knn.predict_proba(iris_x_test)
//调用knn.predict_proba(),显示每个测试集样本对应各个分类结果的概率
score=knn.score(iris_x_test,iris_y_test,sample_weight=None)
//调用knn.score()计算预测的准确率

knn.fit(),训练函数,它是最主要的函数。接收参数只有1个,就是训练数据集,每一行是一个样本,每一列是一个属性。它返回对象本身,即只是修改对象内部属性,因此直接调用就可以了,后面用该对象的预测函数取预测自然及用到了这个训练的结果。

下面是自实现随机生成数据(两种:高斯以及环形数据),KNN进行分类。

# -*- coding: utf-8 -*-
from numpy.random import randn
import pickle
from pylab import *

# create sample data of 2D points
n = 500
# two normal distributions
class_1 = 0.4 * randn(n,2)
class_2 = 1.2 * 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)
# normal distribution and ring around it
print ("save OK!")
class_1 = 0.4 * randn(n,2)
r = 0.9 * randn(n,1) + 5
angle = 2*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', '
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值