图像采用文本格式存储,具有相同的色彩和大小: 宽髙是32像素*32像素的黑白图像。
实际图像存储在两个子目录内:目录加如trainingDigits中包含了大约2000个例子, 每个数字大约有200个样本;目录testDigits中包含了大约900个测试数据。我们使用目录trainingDigits中的数据训练分类器,使用目录testDigits中的数据来测试分类器的效果。两组数据没有覆盖。
代码示例:
# -*- coding: utf-8 -*-
"""
Created on Fri Apr 13 09:52:11 2018
@author: lizihua
"""
import numpy as np
import os
import operator
#k-近邻算法
def classify0(inX, dataSet, labels, k):
dataSetSize = dataSet.shape[0] #获取行数
#计算欧式距离
#将inX扩维,使其与dataSet形状一致,以便实现获得X-dataSet数组
diffMat = np.tile(inX, (dataSetSize,1))-dataSet
sqdiffMat = diffMat**2
sqDisatances = sqdiffMat.sum(axis=1)
distances=sqDisatances**0.5
#argsort返回distance从小到大的排序索引,此时,distance并没有改变
sortedDistIndicies=np.argsort(distances)
classCount={}
for i in range(k):
#voteIlabel是按照distance从小到大排