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),-o

本文介绍了使用KNN算法和Dense-SIFT进行图像内容分类,特别是应用于手势识别。通过KNN算法进行分类,利用python的sklearn包进行实现。Dense-SIFT则提供了一种密集采样的特征描述方法,适用于图像表示和场景理解。在实际操作中,图像像素的大小影响特征点的提取,过高的像素可能导致特征点提取不全。实验结果显示,较低像素图像可能无法有效提取Dense-SIFT特征,建议使用易于区分前景背景且像素小于50的图像。
&spm=1001.2101.3001.5002&articleId=90312842&d=1&t=3&u=0721e678496b4b329ed2ec48443c3dd2)
1498

被折叠的 条评论
为什么被折叠?



