KNN算法
优点:
简单有效;对数据的分布没有要求;训练阶段很快。
缺点:
不产生模型,在发现特征之间的关系上的能力有限;分类阶段很慢;需要大量的内存;名义变量(特征)和缺失数据需要额外处理。
之所以被称为懒惰学习算法,是因为从技术上说,没有抽象化的步骤。抽象过程与一般过程都被跳跃过去了。由于高度依赖训练案例,所以懒惰学习又称为机械学习。机械学习不会建立一个模型,所以该方法被归类为非参数学习方法。
案例用KNN算法诊断乳腺癌
第一步——收集数据
数据来源于UCI机器学习数据仓库的“威斯康星乳腺癌诊断”(Brest Cancer Wisconsin Diagnostic)数据集,网址:http://archive.ics.uci.edu/ml/
数据集包括569个细胞活检案例,每个案例32个特征。一个特征是识别号,一个特征是诊断结果,其他30个特征是数值型测量结果,诊断结果用“M”表示恶性,“B”表示良性。
第二步——探索和准备数据
首先导入CSV文件:
wbcd<-read.csv("wisc_bc_data.csv",header=F)
第一个变量信息id不能提供有用信息,所以删除:
wbcd<-wbcd[-1]
使用table函数查看恶性和良性肿瘤个数:
table(wbcd$V2)
B M
357 212
许多R机器学习分类器要求将目标属性编码为因子变量,所以重新编码wbcd的第一列,同时用labels参数对B值和M值给出更多信息: