编程实现K邻近分类器,在西瓜数据集3.0@(属性只有密度与含糖率)上,比较其分类边界与决策树分类边界之异同。
KNN用欧式距离计算,投票时根据距离加权,在训练集上最小化错误率,选择k=1时最优。
KNN决策面图如下:
决策树分类面如下(手绘)
将两幅图对比,可以看出分类边界基本一致,但决策树更绝对,不像knn部分不同类别的点还混在一起。
KNN和绘制决策面代码如下:
#coding: utf-8
import numpy as np
from numpy import linalg as LA
from numpy import random
import matplotlib.pyplot as plt
file = open('西瓜数据集3.csv'.decode('utf-8'))
data = [raw.strip('\n').split(',')[-3:] for raw in file][1:]
for i in range(len(data)):
for j in [0, 1]:
data[i][j

本文通过编程实现K邻近(KNN)分类器,并在西瓜数据集3.0(仅考虑密度和含糖率)上进行实验。对比了KNN与决策树的分类边界,发现两者基本一致,但决策树的分类更显绝对,KNN则允许类别边界存在一定模糊性。KNN使用欧式距离并以加权投票方式确定类别,最佳k值为1。
最低0.47元/天 解锁文章
530

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



