


Python,金融数据挖掘,高等教育出版,第十一章,K,近邻分类,与,K,均值聚类,算法,Python金融数据挖掘 高等教育出版第十一章K近邻分类,【知识框架图】,K,点分类,聚类算法,K,近邻分类,算法应用场景,算法流程与实现,K,均值聚类,算法应用场景,算法流程与实现,【知识框架图】K点分类聚类算法K近邻分类算法应用场景算法流程,目录,Contents,第一节,K,近邻分类原理与实现,第二节,K,均值聚类原理与实现,第三节,案例,目录Contents第一节K近邻分类原理与实现第二节K均值聚,本章,学习目标,掌握,K,近邻分类算法研究的对象、意义、应用场景、算法原理及其实现掌握,K,均值聚类算法研究的对象、意义、应用场景、算法原理及其实现本章学习目标掌握K近邻分类算法研究的对象、意义、应用场景、算,需求背景,K,近邻(,KNN,,,K Nearest Neighbors,)算法属于分类算法样本数据集中除了数据点的坐标,每个点还有一个分类标签,如果,现在新出现了一个待分类的数据点,A,,,KNN,算法是根据与,A,相邻的,K,个样本点分类归属情况,来决定,A,应该归属到哪一类前面章节介绍过的决策树算法、贝叶斯算法和,K,近邻算法都属于分类算法。
K,均值(,K-Means,)算法属于聚类算法样本数据集中只有数据点的坐标,并没有其分类标签,但是,这些点并不是均匀分布在整个坐标空间中,而是相对密集地聚集在几个较小的范围内,聚类,算法的目标是发现这些聚集的范围,将所有那些没有分类标签的点,划分到某个聚集范围内聚类算法和分类算法的区别在于:聚类算法是无监督的,样本数据可以没有贴标签;而分类算法是有监督的,样本数据需要有类别标签通俗理解,分类算法是贴标签,而聚类算法是找朋友(物以类聚,人以群分)需求背景K近邻(KNN,K Nearest Neighbor,01,K,近邻分类原理与实现,01K近邻分类原理与实现,K,近邻分类算法的逻辑非常直观:待分类的这个数据点归属到哪一类,由它的,K,个近邻样本点的分类情况决定每个样本数据点都有若干个属性,例如一个手机网银用户的信息构成这样一个属性集合:,年龄,学历,收入,,通过,某种规则,将这些属性值转换成坐标值,即将用户转换成,n,维空间中的一个点为了简单起见,后文阐述以二维空间的点为例,如,图,11-2,所示,待分类的数据点为,A,,图中用圆表示;其他的数据分类结果是已知的(所谓有监督的学习,表示监督者已经分好类,打好标签了),被分为,1,和,2,两类,分别用三角形和矩形表示。
K近邻分类算法的逻辑非常直观:待分类的这个数据点归属到哪一类,Python金融数据挖掘-ppt课件第11章,图,11-2 K,近邻算法,示意图:,A,点的分类结果可以简单地选择,K,近邻中相对多数的分类标签,例如,图,11-2,中,A,的,3,个近邻中有,2,个分类结果为,2,,占据多数,因此,A,的分类结果为,2,也,可以相对复杂地按照距离远近进行权重投票,图,11 2,中分类标签为,1,的近邻虽然只有,1,个,但是它离,A,最近,如果权重比例足够大,也有可能影响到,A,的最终分类结果图 11-2 K近邻算法示意图:,K,近邻分类算法的,流程图:,K近邻分类算法的流程图:,【,例,11-1,】,下面代码,首先新建了两个数据点,testX,和,testY,,再分别调用,kNNClassify,函数计算其分类归属K,近邻算法有比较直观的解释(特别是在低维空间中),其欧氏距离的计算量也相对比较小,是一个应用很广的基础分类算法例 11-1】,定义一,个用于计算欧氏距离的函数,euclDistance,,使用,numpy,中的函数计算由列表形式存储的两个向量的欧式距离定义一个用于计算欧氏距离的函数euclDistance,使用,创建一个数据集,包含,2,个类别共,8,个样本,:,创建一个数据集,包含2个类别共8个样本:,KNN,分类算法函数实现,:,定义一个,kNNClassify,函数。
根据,dataSet,和,labels,的输入,选择待分类点,newInput,的,k,个近邻,决定其分类归属KNN分类算法函数实现:,生成数据集和类别标签,:,生成数据集和类别标签:,02,K,均值聚类原理与实现,02K均值聚类原理与实现,聚类,算法不需要事先对样本点的类别归属进行判定和标识,而是能够挖掘出现有样本点的分布聚集规律,对样本点自动进行归属划分,聚类,算法被广泛应用于客户群体划分、热点区域发现等业务场景例如:某证券公司一共有,N,个客户,每个客户的资金量、交易频次等数据构成一个样本点,现在,希望能设计出一套手续费费率优惠方案,既能够较好地体现大客户优惠,又可以保证本公司的总体收入,这时候,就可以对这,N,个样本点进行聚类分析,找出客户支付手续费的不同聚集群体,有针对性地设计费率方案又如:某银行要开展理财产品现场促销活动,需要选择热点商圈(即客户分布较密集的区域)来提升活动的潜在客户数量,这时候,就要对手机网银,APP,所提供的位置信息进行聚类,找出活动时间段内潜在客户的热点活动区域,从而让尽可能多的客户了解促销的信息,聚类算法不需要事先对样本点的类别归属进行判定和标识,而是能够,假设,现在采集到二维坐标空间中的由,80,个坐标点构成的数据集(可以理解成是一个,APP,采集到的,80,个客户的某时点位置坐标),如表,11-1,所示,将数据保存在,Python,工作目录下,命名为“,testSet.txt”,。
X,Y,X,Y,X,Y,X,Y,1.658985,4.285136,2.336445,2.875106,2.096701,3.886007,2.89422,2.489128,-3.453687,3.424321,-1.786345,2.554248,-2.70903,2.923887,-2.56254,2.884438,4.838138,-1.151539,2.190101,-1.90602,3.367037,-3.18479,3.491078,-3.94749,-3.195883,-2.283926,-3.837877,-3.253815,-3.17118,-3.57245,-4.90557,-2.91107,表,111 80,个点坐标数据,假设现在采集到二维坐标空间中的由80个坐标点构成的数据集(可,应用聚类算法前,通常需要根据数据集的分布情况确定一个合理的聚类数,K,,因此,事先探查数据集的空间分布情况有利于提高聚类的效果在众多的数据可视化工具中,,Excel,便是一个非常有效的探查样本数据(样本数据量太大时,可以先随机抽取出少量样本)空间分布特征的工具针对表,11-1,中的数据集,我们可以借助,Excel,来绘制散点图,如图,11-4,所示。
根据,Excel,散点图展示的数据分布情况可以发现,其主要聚集在四个,区域:,图 11-4 80个点坐标图,应用聚类算法前,通常需要根据数据集的分布情况确定一个合理的聚,K,均值算法思想有直观的几何意义:将样本点聚集(归属)到,距离,它最近的那个,聚类中心,找出数据集中的,K,个聚类中心是算法的目标(简单起见,这里使用欧式距离来度量样本间的相似度),K均值算法思想有直观的几何意义:将样本点聚集(归属)到距离它,K,均值聚类算法流程图,:,K均值聚类算法流程图:,【,例,11-2】,Python,实现,:,initCentroids,函数根据当前样本数据集和指定的,k,,随机生成,k,个中心点,用于聚类例 11-2】Python实现:initCentroids,K,均值聚类,:,K均值聚类:,2,维平面显示聚类结果,:,2维平面显示聚类结果:,调用以上函数,对读入数据进行聚类,:,原始数据分布,调用以上函数,对读入数据进行聚类:原始数据分布,输出结果:,根据聚类结果用不同的样式显示不同聚类的数据点,并且突出显示了算法求出的,k=4,个聚类中心点K,均值聚类结果,输出结果:K均值聚类结果,03,案例,03案例,银行客户群体,划分,案例,某银行要根据客户资料制定新的促销方案,客户资料信息如表,11 2,所示。
使用本章介绍的两个聚类算法,对客户进行聚类分析,从而确定促销的客户群体划分方案,客户,信息,如下:,ID,性别,年龄,年收入,(,万元,),消费评分,(1-100),1,Male,19,15,39,2,Male,21,15,81,3,Female,20,16,6,4,Female,23,16,77,5,Female,31,17,40,6,Female,22,17,76,7,Female,35,18,6,8,Female,23,18,94,9,Male,64,19,3,Male,30,137,83,银行客户群体划分案例ID性别年龄年收入(万元)消费评分(1-,导入数据:,首先读入数据文件,观察数据结构为了便于后续数据规格化,将,ID,和性别列舍去,仅剩下,年龄、年收入、消费评分,三个属性导入数据:,为了,能够以合适的尺度在坐标轴上展示数据,调用了,sklearn,包,preprocessing,中的,scale,函数,将所有的数据值进行规格化Sklearn,包将在后续章节中专门介绍为了能够以合适的尺度在坐标轴上展示数据,调用了sklearn,绘制,3,维图,:,第,5,行直接使用了,sklearn.decomposition,提供的,pca.fit_transform,函数,将,3,维降低到,2,维。
pca.fit_transform,函数使用了,PCA,方法对数据集进行降维操作,,PCA,(,Principal Component Analysis,,主成分分析方法)是一种将原来的高维特征映射到低维空间的数学方法,既能降低数据维度,又能尽可能地保留高维信息绘制3维图:第5行直接使用了sklearn.decompos,数据降为,2,维,,,绘制,2,维图,:,数据降为2维,绘制2维图:,K,均值聚类,K均值聚类,将,case_clusterAssment,中的聚类结果写回原始,DataFrame,将case_clusterAssment中的聚类结果写回原始,输出结果:,输出结果:,结论:,将聚类得到的,case_clusterAssment,聚类结果写回到原数据,DataFrame,中,然后分别按照聚类结果对年龄、年收入、消费评分进行均值统计,可以,发现,不同聚类的客户,在这三个属性的平均值上都存在显著的差异例如,聚类结果为,1,的客户,平均年龄,45,,平均收入,82,最高(年富力强阶段,收入较高),平均消费评分,24,最低(社会阶层稳定,违约风险最低),聚类,结果和我们按照社会生活经验判定的结果吻合地比较好。
结论:,本章小结,本章介绍了,K,近邻分类和,K,均值算法的基本概念和原理,学会了用,Python,代码实现,K,近邻分类和,K,均值算法本章小结本章介绍了K近邻分类和K均值算法的基本概念和原理,学,重要概念,1,.,分类,与聚类,2,.K,近邻分类,3,.K,均值算法,重要概念1.分类与聚类,复习思考题,1,.,给出一个数据集,data_multivar.txt,,里面有,200,个点坐标,在平面坐标系下可以画出它的散点图,如图,11-8,所,示:,图,118,数据集,data_multivar.txt,散点图,用,K,均值算法来训练模型,将该数据集的,200,个点分成,4,类,请运行,Python,代码,ch13-ex.ipynb,注意:运行之前,首先将给出的数据集,data_multivar.txt,和,utilities.py,拷贝到相应的文件夹中读者可以在程序中设置,k,值为,2,,,3,,,5,等,运行代码进行比较复习思考题1.给出一个数据集data_multivar.t,复习思考。