财经大数据分析-以Python为工具 课件 王彦超 第8-11章 分析一般公司债的票面利率影响因素-建立上市公司价值分类判断指标体系 应用机器学习_第1页
财经大数据分析-以Python为工具 课件 王彦超 第8-11章 分析一般公司债的票面利率影响因素-建立上市公司价值分类判断指标体系 应用机器学习_第2页
财经大数据分析-以Python为工具 课件 王彦超 第8-11章 分析一般公司债的票面利率影响因素-建立上市公司价值分类判断指标体系 应用机器学习_第3页
财经大数据分析-以Python为工具 课件 王彦超 第8-11章 分析一般公司债的票面利率影响因素-建立上市公司价值分类判断指标体系 应用机器学习_第4页
财经大数据分析-以Python为工具 课件 王彦超 第8-11章 分析一般公司债的票面利率影响因素-建立上市公司价值分类判断指标体系 应用机器学习_第5页
已阅读5页,还剩145页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python与财经大数据分析基础第8章分析一般公司债的票面利率影响因素——应用统计分析CONTENTS目录04回归分析05应用实践01描述性统计02随机变量及其概率分布03推断统计01描述性统计描述性统计是指综合运用计算指标、分类等方式来描述一组数据的特征,帮助读者了解数据。描述性统计的基本指标主要包括数据的位置以及数据的离散程度。8.1描述性统计(一)概述在获取数据之后,我们通常需要了解数据的位置分布特征,例如最小值、最大值、平均数、中位数、众数、分位数等指标。Python中可以使用Pandas模块完成数据位置指标的获取。8.1描述性统计(二)数据的位置分布函数函数说明DataFrame.min()/DataFrame.max()最小值/最大值DataFrame.mean()平均数DataFrame.median()中位数DataFrame.mode()众数DataFrame.quantile()分位数数据位置指标能帮助读者分析一组数据的平均水平或中间位置,但是要了解数据集中和分散程度,则需要用到极差、偏差、方差以及标准差,在Python中主要通过Pandas模块完成数据离散度指标的获取。8.1描述性统计(三)数据的离散程度函数函数说明DataFrame.max()-DataFrame.min()极差DataFrame.mad()平均绝对偏差DataFrame.var()方差DataFrame.std()标准差

Pandas库提供descibe()函数,可以直接得到描述性统计的主要指标,例如样本量、均值、方差、最值、分位数等统计特征。8.1描述性统计(三)describe函数02随机变量及其概率分布随机变量是随机试验各种结果的实值单值函数,随机事件的数量表现。随机变量分为离散型随机变量和连续型随机变量。一般而言,随机数并不是真正的“随机”,而是服从于某种概率分布,根据随机变量的分类,有离散型概率分布和连续型概率分布。财会金融领域经常使用的概率分布如下所示。8.2随机变量及其概率分布(一)概述

8.2随机变量及其概率分布(二)正态分布在Numpy库中使用normal()函数生成正态分布。8.2随机变量及其概率分布(二)正态分布假设X服从标准正态分布N(0,,1),Y服从自由度为n的卡方分布,那么变量Z服从自由度为n的t分布,记作Z~t(n)。随着自由度n逐渐增大,t分布将逐渐接近标准正态分布。8.2随机变量及其概率分布(三)t分布假设两个随机变量x1和x2相互独立,且分别服从自由度是n1和n2的卡方分布,则称统计量F服从自由度n1和n2的F分布,记作F~F(n1,n2)。8.2随机变量及其概率分布(四)F分布03推断统计推断统计是研究如何利用样本数据来推断总体特征的统计方法。推断统计包括两方面的内容:参数估计和假设检验。8.3推断统计(一)概述

8.3推断统计(二)参数估计假设检验是用来判断样本与样本、样本与总体的差异是由抽样误差引起还是本质差别造成的推断统计方法。

进行假设检验主要经历四个步骤。第一,提出原假设H0和备择假设H1。第二,构造检验的统计量及其分布。第三,确定显著性水平α,以及确定检验规则。第四,根据检验规则作出决策。8.3推断统计(三)假设检验

不拒绝H0拒绝H0H0为真1-α(正确)α(拒真错误)H1为假

(取伪错误)1-

(正确)t检验主要用于样本含量较小(例如样本量小于30),总体标准差σ未知的正态分布。常见的t检验主要有单样本t检验、配对样本t检验和独立样本t检验。8.3推断统计(二)假设检验04回归分析协方差表示的是两个变量总体误差的期望。如果两个变量的变化趋势一致,那么两个变量之间的协方差就是正值;如果两个变量的变化趋势相反,那么两个变量之间的协方差就是负值;如果两个变量是统计独立的,那么二者之间的协方差就是0。8.4

回归分析(一)协方差cov()函数相关系数是用以反映变量之间相关关系密切程度的统计指标。与协方差不同,相关系数排除了变量之间量纲的差异。常见的相关系数计算方法包括pearson相关系数、spearman相关系数等。8.4

回归分析(二)相关系数corr()函数8.4

回归分析(三)线性回归线性回归是找到多维空间中的一条直线(线性回归方程),使得其尽可能地去拟合变量之间的“隐式关系”。普通最小二乘法(OrdinaryLeastSquare,OLS),是线性回归模型中最基本的估计方法,原理就是使残差的平方和达到最小。statsmodel库是Python一个强大的统计分析库。我们使用statsmodels.api库的OLS()进行线性回归。需要特别注意的是,进行线性回归的变量不能有缺失值,否则会报错。8.4

回归分析(三)线性回归05应用实践“指数信息.xlsx”为2008年至2021年发行的一般公司债数据,票面利率为发行时票面利率,总资产报酬率、资产负债率、流动比率为债券2020年的财务比率,对其做描述性统计。分析一般公司债的票面利率在2021年与2022年是否存在显著差异。分析一般公司债的票面利率影响因素,因变量为票面利率,自变量分别为发行时信用评级、总资产报酬率、资产负债率、流动比率。8.5应用实践Python与财经大数据分析基础第9章使用ARIMA模型预测股票价格——时间序列CONTENTS目录04应用实践01时间序列简介02时间序列处理03时间序列基本性质01时间序列简介时间序列是指将同一统计指标的数值按其发生的时间先后顺序排列而成的数列,其实质是反映某个或者某些随机变量随时间不断变化的趋势。常见的时间序列如按秒或分钟更新的股价数据、按天更新的利率数据、按月更新的征信数据以及按年更新的宏观经济数据等。9.1时间序列简介(一)时间序列基本概念datetime模块是Python处理日期和时间的标准库,提供多种处理日期、时间相关的类。不仅支持日期和时间的算法,也能实现有效的属性提取和格式输出,本部分将介绍使用datetime创建时间对象、查看时间对象属性和转换时间格式等方法。9.1时间序列简介(二)datetime模块类名功能说明date日期对象,常用属性有year,month,daytime时间对象,常用属性有hour,minute,seconddatetime日期时间对象,是date和time的结合timedelta时间间隔,即两个时间点之间的长度tzinfo时区信息对象在日常数据分析中,最为常用的是datetime模块的datetime类,因此我们主要介绍datetime类。9.1时间序列简介(三)datetime类02时间序列处理时间序列的缺失值处理一般采用插值方法,使用缺失值周围的两个已知数据点估计丢失的数据点。较为常见的插值方法有基于时间的插值、样条插值和线性插值,一般通过pandas模块的interpolate()函数来实现。9.2时间序列处理(一)时间序列缺失值处理移动是指沿着时间轴将数据前移或后移,在财经金融数据处理中,时常会用到时间滞后。时间滞后是将t期的数据转换为(t-n)期的数据,可以通过shift()函数实现。9.2时间序列处理(二)时间序列数据移动和滞后计算第九章数据分组介绍了groupby()函数,其主要作用是进行数据的分组以及分组后的组内运算,常与agg()和apply()函数搭配使用。这一函数在时间序列数据中也十分常用,同样对时间序列进行分组,之后再进行组内运算,从而获取所需的数据或观察不同组别间的差异。9.2时间序列处理(三)时间序列数据分组时间序列通常由趋势、周期性、季节性、误差构成,其中最经常被分析的是趋势和季节性。时间序列可以被看作是趋势、季节性和误差项的整合,其各个观测值可以是以上成分相加或相乘得到的。9.2时间序列处理(四)时间序列的分解时间序列的分解可以通过statsmodels模块的seasonal_decompose来实现。9.2时间序列处理(四)时间序列的分解

9.2时间序列处理(五)时间序列的平滑在了解时间序列数据之后,我们可以对其进行简单的分析,比如进行描述性统计。这里我们沿用上节数据,基于前序章节内容,可以直接使用describe()函数查看数据的均值方差等。9.2时间序列处理(六)时间序列数据描述性统计03时间序列基本性质研究不同变量之间的相关性,是为了揭示变量之间的因果关系,以更好地预测目标变量,而时间序列的自相关性同样也是研究和利用时间序列的重要性质。所谓“历史可以重演”,即希望找到时间序列所具有的可延续性特征,以帮助我们更好地预测未来。时间序列的自相关性可以通过自协方差、自相关系数等统计量来体现。9.3时间序列基本性质(一)自相关性

Python中statsmodels模块包含的acf()函数可以便捷计算自相关系数。9.3时间序列基本性质(一)自相关性时间序列的平稳性是时间序列研究的基本前提,通过前一节的介绍,我们希望通过自相关性找到时间序列的可延续性特征,并在预测未来时利用该特征,而时间序列的平稳性则是决定该特征能否延续到未来的重要性质。9.3时间序列基本性质(二)平稳性增广迪基·富勒检验(ADF检验)是最常用的单位根检验方法,Python中的arch模块提供了ADF()函数帮助我们便捷地进行ADF检验。9.3时间序列基本性质(二)平稳性KPSS检验可以用于趋势平稳性检验,Python中的statsmodels模块提供了kpss()函数帮助我们便捷地进行KPSS检验。9.3时间序列基本性质(二)平稳性白噪声序列是指序列中任意两个时间点的变量均不相关,序列均值为0、方差为常数,这使得白噪声序列符合平稳时间序列的条件。白噪声序列中没有任何规律,不能用于预测和推断,所以发现一个时间序列为白噪声序列时,说明该时间序列已经失去了继续研究的意义。9.3时间序列基本性质(三)白噪声序列可以通过Ljung-Box检验该序列是否为白噪声序列,Python中statsmodels模块提供了q_stat()完成该检验。9.3时间序列基本性质(三)白噪声序列04应用实践

ARIMA(AutoregressiveIntegratedMovingAverage)模型是一种广泛使用的时间序列分析方法,它可以用于对未来的数据进行预测。ARIMA模型由自回归模型(AR模型)、差分整合模型(I模型)和移动平均模型(MA模型)组成,因此也被称为ARIMA(p,d,q)模型。其中,p表示自回归阶数,d表示差分阶数,q表示移动平均阶数。尝试使用ARIMA模型,对贵州茅台股票价格进行预测分析。9.4应用实践Python与财经大数据分析基础第10章

绘制股票日K线图——应用可视化表达

CONTENTS目录10.1Matplotlib安装10.2Matplotlib库的基础用法10.3Matplotlib库的常用技巧10.4应用实践应用场景分析:在金融数据分析中,数据可视化是至关重要的环节。所谓“千言万语,不如一图”,数据可视化可以直观的观测数据的分布规律和变化趋势。本章关于可视化的主要工具是Matplotlib(一个基于Python的2D绘图库),它能以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形,也是利用Python实现可视化最基础的库。10.1Matplotlib安装10.1Matplotlib安装首先需要安装第三方Matplotlib库。如果已经安装Matplotlib库,请输入以下代码,验证是否安装成功。如果没有报错,则为成功安装。本教材使用的Matplotlib版本为3.5.2。不同版本在代码编写上略有差异,建议读者在学习时安装相同的版本。10.1Matplotlib安装当图中包含中文时,可能会产生乱码问题。如果出现中文乱码,读者可根据以下步骤进行设置。第一,输入In[3]代码,获得缓存文件夹路径。第二,打开命令提示符(Windows系统)或终端(MacOS系统),输入命令删除缓存文件夹下的文件,命令为rm-r/Users/user1/.matplotlib/*。读者需要注意两点:一是,这个命令不是在Python编辑器(如PyCharm或Jupyter)输入,而是在命令提示符或终端;二是,读者需要根据In[3]输出的路径进行设定。第三,下载SeiHei.ttf字体,并放入相应文件夹C:\Windows\Fonts(Windows系统)或~/.fonts(MacOS系统)。如果MacOS系统没有该文件夹,可在终端输入mkdir~/.fonts,创建文件夹。10.1Matplotlib安装在数据分析之前,需要导入相关包,包括numpy、pandas、matplotlib。In[4]#1设定numpy的随机种子数,确保随机数据相同;In[4]#2和In[4]#3分别对pandas设置列示全部的列和列的宽度;In[4]#4设置负数显示格式,如果不设置,当图形中包含负数时可能会乱码;In[4]#5设置字体,如果不设置,当图形中包含中文时可能会乱码。10.2Matplotlib库的基础用法10.2Matplotlib库的基础用法

通过matplotlib官方指南中给出的示意图可以发现,一个完整的图应具备:画板(Figure)、轴域(Axes)、横纵坐标线(Spines)及其标签(X/Yaxislabel)、主/子刻度(Major/Minortick)、网格(Grid)、线(Line)、标点(Markers)、图例(Legend)以及标题(Title)等。10.2Matplotlib库的基础用法10.2.1绘制柱形图(1)第1种方法10.2Matplotlib库的基础用法(2)第2种方法Matplotlib绘图时,首先需要确定一个合适大小的“画板”(figure),它是绘图元素的顶层容器。然后,我们在这个画板绘制各种图形元素。Matplotlib库使用figure()方法设定画板。10.2Matplotlib库的基础用法10.2Matplotlib库的基础用法(3)第3种方法在画板上也可以通过subplots()方法创建轴域。subplots()方法的基本语法如下。10.2Matplotlib库的基础用法10.2.2设置坐标轴刻度最小值和最大值Matplotlib绘图时会根据数据自动设置坐标轴刻度的最小值和最大值。我们可以通过set_xlim()方法和set_ylim()方法分别设置X轴和Y轴坐标轴刻度的最小值和最大值。10.2Matplotlib库的基础用法10.2.3设置坐标轴刻度(1)设置坐标轴主刻度Matplotlib绘图时会根据数据自动设置坐标轴主刻度。我们可以通过set_major_locator()方法设置坐标轴主刻度:使用yaxis.set_major_locator()方法设置Y轴主刻度;使用xaxis.set_major_locator()方法设置X轴主刻度。10.2Matplotlib库的基础用法set_major_locator()方法需要传入locator参数。对于数值型坐标轴,我们可以使用MultipleLocator()类进行设置。MultipleLocator()类为坐标轴每整数倍上设置刻度。10.2Matplotlib库的基础用法(2)设置坐标轴次刻度Matplotlib绘图时默认不显示坐标轴次刻度。我们可以通过set_minor_locator()方法设置坐标轴次刻度:使用yaxis.set_minor_locator()方法设置Y轴次刻度;使用xaxis.set_minor_locator()方法设置X轴次刻度。同样的,该方法需要传入locator参数。对于数值型坐标轴,我们也可以使用MultipleLocator()类进行设置。10.2Matplotlib库的基础用法10.2.4设置坐标轴刻度数字格式如果坐标轴主刻度为数值型,Matplotlib会根据数据自动设置数字格式,我们也可以通过set_major_formatter()方法设置坐标轴主刻度数字格式。10.2Matplotlib库的基础用法Matplotlib绘图时默认不显示坐标轴次刻度数字,我们通过set_minor_formatter()方法设置坐标轴次刻度数字格式。当坐标轴次刻度设置了set_minor_locator(),但没有设置set_minor_formatter(),图形只显示坐标轴次刻度,不显示次刻度数字;当坐标轴次刻度同时设置了set_minor_locator()和set_minor_formatter(),图形将显示坐标轴次刻度和次刻度数字。10.2Matplotlib库的基础用法set_major_formatter()方法和set_minor_formatter()方法需要传入formatter参数。我们可以使用FormatStrFormatter()类进行设置。FormatStrFormatter()类将格式化为字符串。10.2Matplotlib库的基础用法10.2.5设置坐标轴刻度标签(1)第1种方法10.2Matplotlib库的基础用法(2)第2种方法第2种设置坐标轴刻度标签为使用set_ticks()方法,第一个参数传入刻度位置列表,第二个参数传入刻度标签列表。10.2Matplotlib库的基础用法10.2.6设置坐标轴标签图像坐标轴缺乏相应的文字解释,读者有时并不知道X轴和Y轴对应的经济含义是什么,因此需要对坐标轴设置标签。我们通过set_label_text()方法进行设置。10.2Matplotlib库的基础用法10.2.7设置图标题我们通过set_title()方法设置图标题。10.2Matplotlib库的基础用法10.2.8设置网格线网格线是坐标轴上刻度线的延伸,穿过绘图区域。我们通过grid()方法设置网格线。10.2Matplotlib库的基础用法10.2.9设置数据标签当我们需要精确知道每个柱形条对应的数值时,可以通过bar_label()方法设置,呈现柱形图的数据标签。10.2Matplotlib库的基础用法10.2.10设置图例当我们需要精确知道每个柱形条对应的数值时,可以通过legend()方法设置,呈现柱形图的数据标签。10.3Matplotlib库的常用技巧10.3Matplotlib库的常用技巧10.3.1设置日期型坐标轴刻度和标签格式有时我们获得一组时间序列数据,例如贵州茅台2017年至2021年每天的收盘价。如果仍然列示每一条柱的X轴刻度(日期),可能会使得X轴刻度及其标签高度重叠。我们可以按照年度,只对X轴关键位置设置主刻度和次刻度,这样会使得图形更新清晰表达其所蕴藏的经济含义。我们通常可以使用YearLocator()、MonthLocator()方法设置日期型坐标轴刻度,使用DateFormatter()方法设置日期型坐标轴标签格式。10.3Matplotlib库的常用技巧10.3Matplotlib库的常用技巧10.3Matplotlib库的常用技巧10.3.2设置多系列数据设置多系列数据分为两种情况:第一种是共用Y轴;第二种是双Y轴。第一种共用Y轴比较简单,仅需要在轴域ax添加线条等对象即可。第二种双Y轴略微复杂些,当不同序系列数据的单位不相同时,则需要用到双Y轴图形。我们通过twinx()进行设置。10.3Matplotlib库的常用技巧10.3.3设置多子图/轴域我们可以通过subplots()方法设置多子图,subplots()方法的语法详见“10.2.1绘制柱形图”小节。当我们需要自定义子图的高度和宽度时,可以使用GridSpec()方法进行设置。10.3Matplotlib库的常用技巧10.4应用实践10.4应用实践在进行股票投资决策中,重要的步骤之一是分析股票日K线图。本章结合前文所学知识,绘制出股票日K线图,包含日K线、移动均线和交易量。Python与财经大数据分析基础第11章——建立上市公司价值分类判断指标体系——应用机器学习

CONTENTS目录11.1Sklearn概述和安装11.2K-最近邻算法11.3K-均值算法11.4降维算法11.5线性回归11.6逻辑回归11.7朴素贝叶斯11.8决策树11.9随机森林11.10支持向量机11.11Adaboost算法11.12应用实践11.13实操练习题

应用场景分析:机器学习是一门多领域交叉学科,涉及概率论、统计学等学科。机器学习这一术语看似高深,其实在生活的方方面面,如人脸识别、手机相册依据人物自动分类功能等均运用了机器学习的思想和方法。机器学习是计算机模拟人类学习和决策行为的科学,选择合适的算法模型训练数据,实现预测功能。Sklearn是Python中传统机器学习的首选库,本章重点介绍sklearn库的算法逻辑及应用。通过本章的学习,将掌握基本的机器学习方法,构造机器学习模型流程和评估模型效果。机器学习之SklearnSklearn概述和安装K-最近邻算法K-均值算法降维算法线性回归逻辑回归朴素贝叶斯决策树随机森林支持向量机Adaboost算法案例应用:建立科技上市公司价值分类判断指标体系11.1Sklearn概述和安装11.1Sklearn概述和安装Sklearn,全称scikit-learn,是Python中机器学习的库,建立在Numpy、Scipy、Matplotlib等库基础之上,涵盖了机器学习样例数据、数据预处理、模型验证、特征选择、分类、回归、聚类、降维等几乎所有环节,功能十分强大。Sklearn的建模和优化有统一的形式,分类和回归算法都是类似的思想,逻辑大致如图11-1所示:首先导入数据,选择合适的算法将数据进行拟合训练,得到一个模型;接着把需要预测的数据输入该模型中,进行预测;最后输出结果。11.1Sklearn概述和安装安装Scikit-learn需要:Python(≥2.7或≥3.4)、NumPy(≥1.8.2)、SciPy(≥0.13.3)。注意:Scikit-learn0.20是支持Python2.7和Python3.4的最后一个版本。Scikit-learn0.21将需要Python3.5或更高版本。需要先安装Scikit-learn库。如果已经安装Scikit-learn库,请输入以下代码,验证是否安装成功。如果没有报错,则为成功安装。In[1]:importsklearn本教材使用的Scikit-learn版本为1.0.2。不同版本在代码编写上略有差异,建议读者在学习时安装相同的版本。11.2K-最近邻算法11.2K-最近邻算法(K-NearestNeighbor)(1)原理KNN算法的核心思想是用距离最近的k个样本数据来代表目标数据的分类。可以做出类比:判断一个人消费水平,可以通过其身边朋友来判断。具体而言,如果一个样本在特征空间中的k个最相邻样本的大多数属于一个类别,则该样本也属于这个类别,并具有这个类别的样本特征。该方法在确定分类决策上,只依据最近邻的一个或几个样本类别决定待分样本的所属类别。11.2K-最近邻算法(K-NearestNeighbor)(1)原理如图所示,已知存在两个类别,一类为“正方形”,另一类为“三角形”,若判断新加入的蓝色属于什么类别,当k=3时,则离蓝色最近的3个“邻居”是a、b和c,多数属于“三角形”,所以蓝色被划分为“三角形”;而当k=5时,则离蓝色最近的5个“邻居”是a、b、c、d和e,多数属于“正方形”,所以蓝色被划分为“正方形”。11.2K-最近邻算法(K-NearestNeighbor)(2)KNN算法代码实现Python中的Sklearn模块提供了KNN算法实现分类和预测的功能,该功能存在于子模块neighbors中。其中,KNeighborClassifier类可以解决分类问题,而KNeighborsRegressor类可以解决预测问题。neighbors.KNeighborsClassifier()、neighbors.KNeighborsRegressor()基本语法:neighbors.KNeighborsClassifier(n_neighbors=5,weights=’uniform’,algorithm=’auto’,leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=1)neighbors.KNeighborsRegressor(n_neighbors=5,weights=’uniform’,algorithm=’auto’,leaf_size=30,p=2,metric=’minkowski’,metric_params=None,n_jobs=1)11.2K-最近邻算法(K-NearestNeighbor)(2)KNN算法代码实现参数说明:n_neighbors:用于指定近邻样本个数k,默认为5。weights:用于指定近邻样本的投票权重,默认为’uniform’,表示所有近邻样本的投票权重一样;如果为’distance’,则表示投票权重与距离成反比,即近邻样本与未知类别的样本点距离越远,权重越小,反之,权值越大。algorithm:用于指定近邻样本的搜寻算法,如果为’ball_tree’,表示使用球树搜寻法寻找近邻样本;如果为’kd_tree’,表示使用KD树搜寻法寻找近邻样本;如果为’brute’,表示使用暴力搜寻法寻找近邻样本。默认为’auto’,表示KNN算法会根据数据特征自动选择最佳的搜寻算法。11.2K-最近邻算法(K-NearestNeighbor)(2)KNN算法代码实现参数说明:leaf_size:用于指定球树或kd树叶子节点所包含的最小样本量,用于控制树的生长条件,会影响树的查询速度,默认为30。metric:用于指定距离的度量指标,默认为闵可夫斯基距离。p:当参数metric为闵可夫斯基距离时,p=1,表示计算点之间的曼哈顿距离;p=2,表示计算点之间的欧氏距离;该参数的默认值为2。metric_params:为metric参数所对应的距离指标添加关键字参数。n_jobs:用于设置KNN算法并行计算所需的CPU数量,默认为1,表示仅使用1个CPU运行算法,即不使用并行运算功能。11.3K-均值算法11.3K-均值算法(K-Means)(1)原理K-Means聚类算法是一种迭代求解的聚类分析算法。算法思想是:随机选择k个对象作为初始聚类中心,计算每个对象和各个聚类中心之间的距离,将其分配给距离最近的聚类中心。聚类中心及分配给它们的对象就代表着一个聚类。每分配一个样本,聚类的中心会根据聚类中现有的对象被重新计算。此过程将不断重复,直至满足设置的终止条件。其具体的算法步骤如下:11.3K-均值算法(K-Means)(1)原理首先明确k值(随机),即希望数据经过聚类得到k个聚类;在数据集中随机选择k个样本作为质心;分别计算每个样本到k个质心的距离,样本属于距离最小的质心所属的聚类;第一轮将所有的样本聚类后得到k个聚类,然后按均值重新计算每个聚类的质心;如果新计算出来的质心和原来的质心之间的距离小于某一个设置的临界值,表示重新计算的质心位置变化不大,数据整体趋于稳定,或表示数据已经收敛,聚类已经达到期望结果,算法可终止;反之,如果新质心和原来质心的距离变化很大,需要重复迭代3-5步骤,直至位置变化不大,达到收敛状态。11.3K-均值算法(K-Means)(2)图解K-Means算法的原理①首先给定需要进行聚类划分的样本集。11.3K-均值算法(K-Means)(2)图解K-Means算法的原理②假设将样本分为2类,则随机选择2个聚类中心(k=2)。11.3K-均值算法(K-Means)(2)图解K-Means算法的原理③遍历每一个绿点,计算每个样本点到质心的距离,并将数据点划分到离它最近的质心的类中。11.3K-均值算法(K-Means)(2)图解K-Means算法的原理④计算2个数据集的各自的质心(红点、蓝点的均值),将聚类中心移动到均值处,变成新的聚类中心。11.3K-均值算法(K-Means)(2)图解K-Means算法的原理⑤计算出目前红点的均值和蓝点的均值,找到新的聚类中心。11.3K-均值算法(K-Means)(2)图解K-Means算法的原理⑥重复上述③④⑤步骤(计算质心-分配-重新计算),不断迭代,直至新的聚类中心位置不再改变以及各个数据点的位置也不再发生改变,如图14-7所示。11.3K-均值算法(K-Means)(3)K-Means算法代码实现Python的Sklearn模块提供了有关K-Means算法分类的功能,该功能存在于子模块cluster中,利用sklearn.cluster.k_means()函数可以建立K-Means模型。sklearn.cluster.k_means()基本语法:sklearn.cluster.k_means(X,n_clusters,init='k-means++',precompute_distances='deprecated',n_init=10,max_iter=300,random_state=None,copy_x=True)11.3K-均值算法(K-Means)(3)K-Means算法代码实现sklearn.cluster.k_means()参数说明:n_clusters:用于指定生成的聚类数,即产生的质心数。init:有三个可选值:’k-means++’,‘random’,或者传递一个ndarray向量。此参数指定初始化方法,默认值为‘k-means++’。‘k-means++’用一种特殊的方法选定初始质心从而能加速迭代过程的收敛;‘random’随机从训练数据中选取初始质心;如果传递的是一个ndarray,则应该形如(n_clusters,n_features)并给出初始质心。precompute_distances:三个可选值,‘auto’,True或者False。预计算距离,计算速度更快但占用更多内存。‘auto’:如果样本数乘以聚类数大于14million的话则不予计算距离;True:总是预先计算距离;False:永远不预先计算距离。11.3K-均值算法(K-Means)(3)K-Means算法代码实现sklearn.cluster.k_means()参数说明:n_init:用不同的质心初始化值运行算法的次数,最终解是在inertia意义下选出的最优结果。max_iter:用于指定执行一次k_means算法所进行的最大迭代数。random_state:可选用于初始化质心的生成器(generator)。如果值为一个整数,则确定一个seed。默认值为numpy的随机数生成器。copy_x:布尔型,默认值=True。当precomputingdistances时,将数据中心化会得到更准确的结果。如果把此参数值设为True,原始数据不会被改变。如果是False,则会直接在原始数据上做修改,并在函数返回时将其还原。11.4降维算法(PCA)11.4降维算法(PCA)(1)原理主成分分析(PrincipalComponentAnalysis,PCA)是一种无监督的多元统计分析方法。基本思想是在尽量保证数据信息的前提下,将高维数据简化为低维数据,即通过获取数据的主要投影方向,实现数据向主要特征方向上的映射,最终达到数据降维、去噪的效果。11.4降维算法(PCA)(2)图解原理如图所示,给出一个投影方向,坐标系中的点投影到这一条直线上,每个“红点”就是点在投影方向的投影,PCA算法使得这些“红点”到原点的方差最大。按照右图给出的投影方向,投出来的点到原点的平方和远远小于左图中的方差和,所以我们会选择左图的投影方式。11.4降维算法(PCA)(2)PCA算法步骤对所有的样本数据进行中心化,也称为数据中心平移到坐标原点。求取样本的协方差矩阵。对协方差矩阵进行特征值分解。取出最大的n个特征值对应的特征向量,将所有特征向量标准化后,组成特征向量矩阵W。对样本集中的每一个样本,转化为新的样本,得到输出样本集。11.5线性回归11.5

线性回归(1)线性回归介绍线性回归模型是机器学习模型中应用最广泛的模型之一,这是因为线性模型的形式非常简洁,同时在应对实际问题时容易建模。虽然线性模型结构较为简单,但其中蕴含重要的机器学习基本思想,非线性模型也是通过线性基础引入层次结构或者高维映射形成。下面简要介绍一下线性回归模型的分析原理。11.5

线性回归(2)算法简要流程机器学习模型以数据集为基础,第一步需要确定解决问题所需要的数据集,第二步需要实现线性模型算法,Sklearn库提供了相应的函数,只需要提前声明之后引用该函数,即可使用线性模型。第三步,模型在数据集上训练,调整模型的相关参数,使模型在数据集上的预测效果达到最优。11.6逻辑回归11.6逻辑回归(1)逻辑回归介绍逻辑回归虽然被称为回归,但实际上是分类模型,且在二分类的问题上有较好分类效果,其简单、可并行、可解释性强的特点使其深受科研人员、业界研发人员的喜爱。逻辑回归的本质即为:假设数据服从这个分布,使用极大似然估计做参数的估计。逻辑回归的分布实质上是连续型的概率分布,其分布函数与密度函数分别如下所示,其中µ表示位置参数,γ>0表示形状参数。11.6逻辑回归(2)逻辑回归的优劣势逻辑回归模型的优点非常明显:模型清晰,背后模型计算的概率值经得起推敲;输出值落在0至1之间,具有概率意义;建模简单,运算过程也非常高效;可以使用L1、L2正则化的方法解决过拟合的问题;可以使用L2正则化的方法解决多重共线性的问题。逻辑回归模型也存在一些缺点:不能够很好地处理特征间关系,实际上是由逻辑回归的计算形式决定;当特征维度上升时,模型运算性能不够好;逻辑回归模型容易出现欠拟合现象,精准度常常不够高。11.7朴素贝叶斯11.7朴素贝叶斯(1)朴素贝叶斯介绍

朴素贝叶斯(NaiveBayes)是一个非常简单,但是实用性很强的分类模型,与基于线性假设的模型(线性分类器和支持向量机分类器)不同,朴素贝叶斯分类器的构造基础是贝叶斯理论。朴素贝叶斯法是典型的生成学习方法,实际上学习到生成数据的机制,属于生成模型。11.7朴素贝叶斯(2)朴素贝叶斯的优缺点

朴素贝叶斯模型的优点:第一,对大数据集训练速度快、支持增量式运算;第二,实时对新增样本进行训练、结果可解释性强、对小规模的数据表现很好;第三,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批进行增量训练。朴素贝叶斯模型的缺点:第一,给定输出类别的情况下,假设属性之间相互独立,朴素贝叶斯方法就拥有最小的误差率,但实际应用中很难成立;第二,需要知道先验概率,且先验概率很多时候取决于假设,假设的模型很多,有时由于假设的先验模型导致预测效果佳。第三,通过先验和数据决定后验概率,进而决定分类,分类决策存在错误率。第四,输入数据的表达形式很敏感。11.8决策树11.8

决策树(1)决策树介绍决策树的思想,基于常用的“ifelse”思想进行拓展,不过,决策树算法会更为复杂一些。11.8

决策树(2)决策树含义决策树的结构为树形,下面对其进行解释。根节点:最顶部节点。叶子节点:每条路径最末尾的节点,也就是最外层节点。非叶子节点:一些条件节点,会有更多分支,也叫做分支节点。分支:分叉。11.8

决策树(3)决策树优缺点决策树优点:第一,能够同时处理数值型和连续型的数据。其他技术通常只支持一种数据类型,可以查看算法文章以获得更多的信息。第二,能够简单地解释和理解其原理,且能够以可视化的方式来显示决策树。第三,数据准备工作较少。其他技术通常需要正则化后的数据,处理缺失数据。但需注意该模块目前不支持缺失数据的处理。第四,可处理带有多输出的问题。11.8

决策树(3)决策树优缺点决策树优点:第五,该算法为白盒模型,如果在模型中可以观察到特定情况,则可以通过简单的布尔逻辑条件来表达这一情况。相比之下,黑盒模型(例如人造神经网络)的结果可能不太容易表现出来。第六,可以使用统计测试来验证模型,这使得模型可靠性更强。第七,能够良好地辨别“人造数据”。11.8

决策树(3)决策树优缺点决策树缺点:第一,决策树学习器能够为当前问题创建出超复杂的树,但是这个树的泛化能力较差,这种低效现象称为“过拟合”。可以通过对叶子节点设置最小值或给树的深度设置最大值等“修剪机制”来避免过拟合现象。第二,文本决策树稳定性较弱,可能会因为细微的改变而产生一个完全不同的树。这个问题可以通过树的整体方法来缓解。11.9随机森林11.9随机森林(1)随机森林介绍随机森林是一种以决策树为基础的更高级算法。与决策树一样,随机森林可以用于回归和分类。顾名思义,随机森林是用随机的方式构建出一个森林,这一森林由很多相互不关联的决策树组成。理论上,随机森林的表现一般要优于单一的决策树,因为随机森林是基于多个决策树投票的结果。简单来说,在随机森林中,每个决策树都有自己的结果,通过统计每个决策树的结果,选择投票数最多的结果作为其最终结果。11.9随机森林(2)构建随机森林的四个步骤①一个样本容量为N的样本,有放回的抽取N次,每次抽取1个,最终形成了N个样本。这选择好了的N个样本用来训练一个决策树,作为决策树根节点处的样本。②当每个样本有M个属性时,在决策树的每个节点需要分裂时,随机从这M个属性中选取出m个属性,满足条件m<<M。然后从这m个属性中采用某种策略(比如说信息增益)来选择1个属性作为该节点的分裂属性。③决策树形成过程中每个节点都要按照步骤2来分裂。④按照步骤1~3建立大量的决策树,这样就构成了随机森林了。11.9随机森林(3)随机森林的优缺点随机森林的优点:第一,可以出来很高维度(特征多)的数据,不用降维,无需做特征选择。第二,可以判断特征的重要程度。第三,可以判断不同特征之间的相互影响。第四,训练速度比较快,容易做成并行方法。第五,对于不平衡的数据集来说,可以平衡误差。第六,如果有很大一部分的特征遗失,仍可以维持准确度。随机森林的缺点:第一,对于有不同取值属性的数据,取值划分较多的属性会对随机森林产生更大的影响,在这种数据上产出的属性权值是不可信的。第二,已经被证明,随机森林在某些噪音较大的分类或回归问题上会过拟合。11.10支持向量机11.10

支持向量机(1)支持向量机介绍支持向量机模型是英文直译过来的名称,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论