代码和数据:https://github.com/qdbszsj/KNN
这里编程实现了一下KNN,K-Nearest Neighbor。
KNN的好处是可以“懒惰学习”,只要存好数据,来一个测一个,调整一下K就好,或者是把每个维度的权值调整一下,意思就是在距离上做点文章。
然后这一章里的PCA(principal component analysis),主成分分析,是一种降维方法,说白了就是挑一些方差比较大的特征值出来,把那些影响不大的特征值忽略掉,这样做有俩好处:1.舍弃这部分信息之后能使样本的采样密度增大,这正是降维的重要动机。2.当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,舍弃这些特征在一定程度上能去噪。
import numpy as np
import pandas as pd
dataset=pd.read_csv('/home/parker/watermelonData/watermelon3_0a.csv', delimiter=",")
data=dataset.values
X=data[:,1:3]
y=data[:,-1]
import random
def KNNone(x,iX,iY,K):
m,n=np.shape(iX)
dist = (iX - x) ** 2
for j in range(m):
dist[j, 0] = sum(dist[j])
dist[j, 1] = j