统计学习方法第三章例3.1代码实践

统计学习方法第三章例3.1代码实践

代码内容如下:

#-*- coding:utf-8 -*-
from numpy import *
#根据不同的p值求不同的距离,p=1时是曼哈顿距离;p=2时是欧式距离。。。。。
def distance(vec1,vec2,p):
    vec=abs(vec1-vec2)
    print sum(vec**p)
    return (float((sum(vec**p)))**(1.0/p))

#不解释
def loadDataset():
    dataset=[[5,1],[4,4]]

    return dataset

#根据距离最小选择最近邻点
def findClostestPlot(testVec,dataset,p):
    dataMat=array(dataset);testVecMat=array(testVec)
    m,n=shape(dataMat)
    clostestLabel=-1;clostestDistance=inf
    for i in xrange(m):
        curDistance=distance(dataMat[i],testVecMat,p)
        if curDistancereturn clostestLabel,clostestDistance,dataMat[clostestLabel].tolist()

#用不同的p值来选择最近邻点
dataset=loadDataset()
for i in range(1,6):
    print findClostestPlot([1,1],dataset,i)
    print "---------------------------------------------"
结果如下:

4
6
(0, 4.0, [5, 1])
---------------------------------------------
16
18
(0, 4.0, [5, 1])
---------------------------------------------
64
54
(1, 3.7797631496846193, [4, 4])
---------------------------------------------
256
162
(1, 3.5676213450081633, [4, 4])
---------------------------------------------
1024
486
(1, 3.446095064991105, [4, 4])
---------------------------------------------

made by zcl at CUMT

I know i can because i have a heart that beats

你可能感兴趣的:(机器学习算法原理与编程实践)