1、Python金融数据挖掘 高等教育出版第十一章第十一章K K近邻分类近邻分类与与K K均值聚类均值聚类算法算法【知识框架图】【知识框架图】K点分类聚类算法K近邻分类算法应用场景算法流程与实现K均值聚类算法应用场景算法流程与实现目 录目 录Contents第一节第一节K K近邻分类原理与实现近邻分类原理与实现第二节第二节K K均值聚类原理与实现均值聚类原理与实现第三节第三节案例案例本章本章学习目标学习目标1.掌握K近邻分类算法研究的对象、意义、应用场景、算法原理及其实现。2.掌握K均值聚类算法研究的对象、意义、应用场景、算法原理及其实现。需求背景需求背景lK近邻(KNN,K Nearest Ne
2、ighbors)算法属于分类算法。样本数据集中除了数据点的坐标,每个点还有一个分类标签。l如果现在新出现了一个待分类的数据点A,KNN算法是根据与A相邻的K个样本点分类归属情况,来决定A应该归属到哪一类。前面章节介绍过的决策树算法、贝叶斯算法和K近邻算法都属于分类算法。lK均值(K-Means)算法属于聚类算法。样本数据集中只有数据点的坐标,并没有其分类标签。l但是这些点并不是均匀分布在整个坐标空间中,而是相对密集地聚集在几个较小的范围内。l聚类算法的目标是发现这些聚集的范围,将所有那些没有分类标签的点,划分到某个聚集范围内。l聚类算法和分类算法的区别在于:聚类算法是无监督的,样本数据可以没有
3、贴标签;而分类算法是有监督的,样本数据需要有类别标签。通俗理解,分类算法是贴标签,而聚类算法是找朋友(物以类聚,人以群分)。K K近邻分类原理近邻分类原理与实现与实现lK近邻分类算法的逻辑非常直观:待分类的这个数据点归属到哪一类,由它的K个近邻样本点的分类情况决定。l每个样本数据点都有若干个属性,例如一个手机网银用户的信息构成这样一个属性集合:年龄,学历,收入,。l通过某种规则,将这些属性值转换成坐标值,即将用户转换成n维空间中的一个点。为了简单起见,后文阐述以二维空间的点为例。l如图 11-2所示,待分类的数据点为A,图中用圆表示;其他的数据分类结果是已知的(所谓有监督的学习,表示监督者已经
4、分好类,打好标签了),被分为1和2两类,分别用三角形和矩形表示。l图 11-2 K近邻算法示意图:lA点的分类结果可以简单地选择K近邻中相对多数的分类标签,例如,图 11-2中A的3个近邻中有2个分类结果为2,占据多数,因此A的分类结果为2。l也可以相对复杂地按照距离远近进行权重投票,图 11 2中分类标签为1的近邻虽然只有1个,但是它离A最近,如果权重比例足够大,也有可能影响到A的最终分类结果。lK近邻分类算法的流程图:【例 11-1】l下面代码首先新建了两个数据点testX和testY,再分别调用kNNClassify函数计算其分类归属。lK近邻算法有比较直观的解释(特别是在低维空间中),
5、其欧氏距离的计算量也相对比较小,是一个应用很广的基础分类算法。l定义一个用于计算欧氏距离的函数euclDistance,使用numpy中的函数计算由列表形式存储的两个向量的欧式距离。l创建一个数据集,包含2个类别共8个样本:lKNN分类算法函数实现:l定义一个kNNClassify函数。根据dataSet和labels的输入,选择待分类点newInput的k个近邻,决定其分类归属。l生成数据集和类别标签:K K均值聚类原理与实现均值聚类原理与实现l聚类算法不需要事先对样本点的类别归属进行判定和标识,而是能够挖掘出现有样本点的分布聚集规律,对样本点自动进行归属划分。l聚类算法被广泛应用于客户群体
6、划分、热点区域发现等业务场景。例如:某证券公司一共有N个客户,每个客户的资金量、交易频次等数据构成一个样本点。l现在希望能设计出一套手续费费率优惠方案,既能够较好地体现大客户优惠,又可以保证本公司的总体收入。l这时候就可以对这N个样本点进行聚类分析,找出客户支付手续费的不同聚集群体,有针对性地设计费率方案。又如:某银行要开展理财产品现场促销活动,需要选择热点商圈(即客户分布较密集的区域)来提升活动的潜在客户数量。l这时候就要对手机网银APP所提供的位置信息进行聚类,找出活动时间段内潜在客户的热点活动区域,从而让尽可能多的客户了解促销的信息。l假设现在采集到二维坐标空间中的由80个坐标点构成的数
7、据集(可以理解成是一个APP采集到的80个客户的某时点位置坐标),如表 11-1所示,将数据保存在Python工作目录下,命名为“testSet.txt”。:XYXYXYXY1.6589854.2851362.3364452.8751062.0967013.8860072.894222.489128-3.4536873.424321-1.7863452.554248-2.709032.923887-2.562542.8844384.838138-1.1515392.190101-1.906023.367037-3.184793.491078-3.94749-3.195883-2.283926-
8、3.837877-3.253815-3.17118-3.57245-4.90557-2.91107表 11 1 80个点坐标数据l应用聚类算法前,通常需要根据数据集的分布情况确定一个合理的聚类数K,因此,事先探查数据集的空间分布情况有利于提高聚类的效果。在众多的数据可视化工具中,Excel便是一个非常有效的探查样本数据(样本数据量太大时,可以先随机抽取出少量样本)空间分布特征的工具。针对表 11-1中的数据集,我们可以借助Excel来绘制散点图,如图 11-4所示。根据Excel散点图展示的数据分布情况可以发现,其主要聚集在四个区域:/通用格式/通用格式/通用格式/通用格式/通用格式/通用格式
9、/通用格式/通用格式图 11-4 80个点坐标图lK均值算法思想有直观的几何意义:将样本点聚集(归属)到距离距离它最近的那个聚类中心聚类中心。找出数据集中的K个聚类中心是算法的目标(简单起见,这里使用欧式距离来度量样本间的相似度)。lK均值聚类算法流程图:l【例 11-2】Python实现:initCentroids函数根据当前样本数据集和指定的k,随机生成k个中心点,用于聚类。lK均值聚类:l 2维平面显示聚类结果:l调用以上函数,对读入数据进行聚类:原始数据分布l输出结果:l根据聚类结果用不同的样式显示不同聚类的数据点,并且突出显示了算法求出的k=4个聚类中心点。K均值聚类结果案例案例l银
10、行客户群体划分案例l某银行要根据客户资料制定新的促销方案,客户资料信息如表 11 2所示。使用本章介绍的两个聚类算法,对客户进行聚类分析,从而确定促销的客户群体划分方案。客户信息如下:ID性别年龄年收入(万元)消费评分(1-100)1Male1915392Male2115813Female201664Female2316775Female3117406Female2217767Female351868Female2318949Male64193Male3013783l导入数据:l首先读入数据文件,观察数据结构。为了便于后续数据规格化,将ID和性别列舍去,仅剩下年龄、年收入、消费评分三个属性。l
11、为了能够以合适的尺度在坐标轴上展示数据,调用了sklearn包 preprocessing中的scale函数,将所有的数据值进行规格化。Sklearn包将在后续章节中专门介绍。l绘制3维图:第5行直接使用了sklearn.decomposition提供的pca.fit_transform函数,将3维降低到2维。pca.fit_transform函数使用了PCA方法对数据集进行降维操作,PCA(Principal Component Analysis,主成分分析方法)是一种将原来的高维特征映射到低维空间的数学方法,既能降低数据维度,又能尽可能地保留高维信息。l数据降为2维,绘制2维图:lK均值聚
12、类l将case_clusterAssment中的聚类结果写回原始DataFramel输出结果:结论:l将聚类得到的case_clusterAssment聚类结果写回到原数据DataFrame中,然后分别按照聚类结果对年龄、年收入、消费评分进行均值统计。l可以发现,不同聚类的客户,在这三个属性的平均值上都存在显著的差异。例如,聚类结果为1的客户,平均年龄45,平均收入82最高(年富力强阶段,收入较高),平均消费评分24最低(社会阶层稳定,违约风险最低)。l聚类结果和我们按照社会生活经验判定的结果吻合地比较好。本章小结本章小结l本章介绍了K近邻分类和K均值算法的基本概念和原理,学会了用Python
13、代码实现K近邻分类和K均值算法。重要概念重要概念1.分类与聚类2.K近邻分类3.K均值算法 复习思考题复习思考题1.给出一个数据集data_multivar.txt,里面有200个点坐标,在平面坐标系下可以画出它的散点图,如图 11-8所示:图 11 8 数据集data_multivar.txt散点图用K均值算法来训练模型,将该数据集的200个点分成4类,请运行Python代码ch13-ex.ipynb。注意:运行之前,首先将给出的数据集data_multivar.txt和utilities.py拷贝到相应的文件夹中。读者可以在程序中设置k值为2,3,5等,运行代码进行比较。复习思考题复习思考
14、题2.选取中华人民共和国第六次人口普查的各地区人口数以及男女比例进行K-means聚类分析,具体的数据如表 11 3。地区地区人口数人口数男女比例(女男女比例(女=100)地区地区人口数人口数男女比例(女男女比例(女=100)北京北京19612368106.75山东95792719102.33天津天津12938693114.52河南94029939102.05河北河北71854210102.84湖北57237727105.55山西山西35712101105.56湖南65700762105.8内蒙古内蒙古24706291108.17广东104320459108.98辽宁辽宁43746323102
15、.54广西46023761108.26吉林吉林27452815102.67海南8671485112.58黑龙江黑龙江38313991102.85重庆28846170102.61上海上海23019196106.19四川80417528103.13江苏江苏78660941101.52贵州34748556106.31浙江浙江54426891105.69云南45966766107.9安徽安徽59500468103.39西藏3002165105.7福建福建36894217105.96陕西37327379106.92江西江西44567797106.67甘肃25575263104.42青海青海5626723107.4宁夏6301350104.99新疆新疆21815815106.87 谢谢观赏谢谢观赏 下节课见下节课见
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。