数据挖掘机器学习分类算法导论
分类算法,简单来讲就是确定一个未知对象所在的预定义类别
分类的输入数据是样本的集合,用元组表示,即: ( 特 征 , 类 别 ) (特征,类别) (特征,类别)其中特征值可以是离散或者连续,而类别只能是离散,这是区别分类与回归的关键。
分类算法的任务就是通过学习训练数据集得到一个目标函数f,把每一个特征(x)一一映射到预定义类别y中,目标函数即为分类模型目前的分类算法比较适合二分类。
一、KNN(K最近邻)算法
基本思路
“近朱者赤,近墨者黑”,由你的邻居来推断你所属的类别。
确定K值
所谓的K值,就是特定范围内样本的个数,不同的K值,对目标样本的分类结果可能截然相反,在Python中,K值被默认为5。
交叉验证(cross-vaildation)可以用来确定K值,从K=1开始,逐个计算模型准确率。 一 般 而 言 , K 值 低 于 训 练 样 本 数 的 平 方 根 。 一般而言,K值低于训练样本数的平方根。 一般而言,K值低于训练样本数的平方根。
确定邻居
这个过程就是计算训练样本和待分类样本的距离,方法有:
确定待分类类别
- 少数服从多数
- 加权确定(权重为距离平方的倒数)
算法优缺点
优点
- 简单,无需训练,无需参数估计;
- 适合对稀有事件进行分类;
- 对多分类问题结果更好,比SVM要好些。
缺点
- 对测试样本分类需全遍历,计算量大;
- 当正负样本不平衡时,如一个类的样本量很大,而其他类样本量很小时,待测样本K个邻居中大样本量的类别中的样本占多数,导致分类错误。
Python版本
待更