数据分析与挖掘之分类算法

常见的分类算法

1、 K-近邻算法(KNN)

2、贝叶斯分类器

3、决策树

4、人工神经网络

5、支持向量机(SVM)

 K-近邻算法(KNN)

 KNN是通过测量不同特征值之间的距离进行分类。

在KNN中,通过计算对象间距离来作为各个对象之间的非相似性指标,避免了对象之间的匹配问题,在这里距离一般使用欧氏距离或曼哈顿距离:

                      

同时,KNN通过依据k个对象中占优的类别进行决策,而不是单一的对象类别决策。这两点就是KNN算法的优势。

思想总结:就是在训练集中数据和标签已知的情况下,输入测试数据,将测试数据的特征与训练集中对应的特征进行相互比较,找到训练集中与之最为相似的前K个数据,则该测试数据对应的类别就是K个数据中出现次数最多的那个分类,其算法的描述为:

1)计算测试数据与各个训练数据之间的距离;

2)按照距离的递增关系进行排序;

3)选取距离最小的K个点;

4)确定前K个点所在类别的出现频率;

5)返回前K个点中出现频率最高的类别作为测试数据的预测分类。

from numpy import *
import operator
#从列方向拓展
#tile(a,(2,1))  2行1列
def   knn(k,testdata,traindata,labels):
                traindatasize=traindata.shape[0]  #获取训练集行数
                dif=tile(testdata,(traindatasize,1))-traindate
                sqdif=dif**2
                sumsqdif=sqdif.sum(axis=1)  #求和  a.sum(axis=1) 各行求和  a.sum(axis=0) 各列求和
                distance=sumsqdif**0.5
                sortdistince=distance.argsort()  #从小到大排序并编号
                count={}
                for i in range(0,k):
                                vote=label[sortdistince[i]]
                                count[vote]=count.get(vote,0)+1
                sortcount=sorted(count.items(),operator.itemgetter(1).reverse=True)  #降序统计类别计数
                return sortcount[0][0]

猜你喜欢

转载自blog.csdn.net/weixin_42219287/article/details/82825965
今日推荐