版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第10章数据分析建模信息学院2024引言10.1案例:金融领域的数据分析10.2Scikit-learn介绍10.3Scikit-learn实现回归模型10.4Scikit-learn实现分类模型10.5编程实践10.6本章小结10.7习题本章将深入学习基于Scikit-Learn的数据分析模型(回归和分类)和实现。以两种模型为基础,解决两个在金融领域存在的问题。在编程实践中,基于现有模型进行扩展,针对一个医疗服务平台中的数据进行分析。10.1案例:金融领域的数据分析数据分析的方法丰富繁杂,在多个专业和行业领域都有着广泛的应用。本章重点介绍两种数据分析方法,即回归方法和分类方法。案例1:对股票价格的回归分析,以实现对股票价格的预测。案例2:对贷款过程中的分类计算,以实现对贷款人是否逾期还款的预测。10.1案例1:股票价格回归分析采用Scikit-learn中的线性回归模型对苹果公司股票价格进行分析,可以拟合为如下图形:结论:线性回归模型基本能够拟合股票的上升趋势,但效果不够理想,得分为68.5%。思考:通过非线性回归可以进一步提高拟合精度10.1案例2:贷款人分类采用Scikit-learn中的决策树模型对贷款人进行分类,预测贷款人是否会逾期还款,分类树的形状如下图:为如下图形:结论:通过分类,能够正确预测73%左右的贷款人的还款情况。Scikit-learn(也称为sklearn)是一个用于机器学习的开源Python库。它的名称源于它是“SciKit”(SciPy工具包),它建立在NumPy、SciPy和matplotlib之上,提供了简单且高效的工具,用于数据挖掘和数据分析。本章基于前期在Pandas和Numpy上的预处理数据方法,进一步以几个常见问题为例详细介绍使用Scikit-learn进行数据分析建模的方法。10.2Scikit-learn介绍起源:由DavidCournapeau等人于2007年在Google的夏季代码项目中开发。公开:2010年1月下旬发布了第一个公开版本0.1beta。本书中统一使用1.0的版本10.2.1Scikit-learn的历史时间版本2022年12月scikit-learn1.2.02022年5月scikit-learn1.1.02021年9月scikit-learn1.02020年12月scikit-learn0.24.02020年5月scikit-learn0.23.02019年12月scikit-learn0.22.02019年5月scikit-learn0.21.02018年9月scikit-learn0.20.02017年7月scikit-learn0.19.02016年9月scikit-learn0.18.02015年11月scikit-learn0.17.02015年3月scikit-learn0.16.02014年7月scikit-learn0.15.02013年8月scikit-learn0.14.0Sklearn的发展历史官网:/stable/该官网包括Scikit-learn的详细安装、使用的方法,如果有问题也可以在官网的社区上进行提问。国内参考网站:/源代码:/scikit-learn/scikit-learn安装:pipinstallscikit-learn10.2.2Scikit-learn资源介绍Scikit-learn是一个非常庞杂、功能强大的第三方库,包含了上百种算法的实现,并且涉及大量的数学、计算机和机器学习方面的知识。本章将介绍线性回归的基本原理和实现方法,以及一个基于Scikit-learn的线性回归模型的快速实现。10.3Scikit-learn实现回归模型
10.3.1线性回归模型的原理举例:假定大学学生的身高和体重存在一定的关系,那么就可以首先采集现实世界中不同学生的身高和体重,以身高为自变量x,以体重为因变量y,通过线性回归建立二者的量化关系,形成预测模型。当未来有一个新的学生入学后,当测得了他的身高,就可以以回归模型来预测他的体重。假定北京地区的房价和地段存在一定的关系,那么就可以首先采集北京地区各个小区住房的均价和所在的位置,以位置为自变量x,以价格为因变量y,通过线性回归建立二者的量化关系,形成预测模型。当未来建立了一个新的小区后,在已知它的位置的情况下,就可以以回归模型来预测其价格。10.3.1线性回归模型的原理
10.3.1线性回归模型的原理
10.3.1线性回归模型的原理线性回归模型可以通过NumPy实现,具体过程如下:首先,随机生成了50个从-20到20之间的x值、y值由2x+3并随机增加噪声来生成。生成的点在二维平面上表示r如右图所示,10.3.2线性回归模型的简单实现线性回归模型可以通过NumPy实现,具体过程如下:然后,实现了LinearRegression类,定义了损失函数和梯度下降的值函数,并在学习率为0.01的情况下训练了100次。10.3.2线性回归模型的简单实现拟合后的结果如右图所示Scikit-learn实现了多种模型,其接口和步骤具有通用性,极大降低了学习者的难度,具体来说分为四步:(1)从scikit-learn库中导入需要使用的模型文件,以本部分内容为例,可以导入“linear_model”,即线性模型(2)模型文件中通常包含了大量不同类型的模型,每个模型采用一个类来实现,因此可以根据类来进行实例化,这儿对应于线性回归模型的是“SGDRegressor”类(3)利用模型实例来调用fit函数,传递数据,完成模型训练(4)利用模型实例调用predict函数进行预测,测试模型的可行性10.3.3预测股票价格涨跌趋势SGD:StochasticGradientDescent随机梯度下降
SGDRegressor类定义:10.3.3预测股票价格涨跌趋势classsklearn.linear_model.SGDRegressor(loss='squared_error',*,penalty='l2',alpha=0.0001,l1_ratio=0.15,fit_intercept=True,max_iter=1000,tol=0.001,shuffle=True,verbose=0,epsilon=0.1,random_state=None,learning_rate='invscaling',eta0=0.01,power_t=0.25,early_stopping=False,validation_fraction=0.1,n_iter_no_change=5,warm_start=False,average=False)SGDRegressor类常用属性为coef和intercept,前者表示斜率,即w,后者表示截距,即b。SGDRegressor类常用方法为fit()、predict()、score()。分别用来进行模型训练、预测和评价。fit函数(其中X为自变量,y为因变量,是必须输入的参数):fit(X,y,coef_init=None,intercept_init=None,sample_weight=None)predict函数(给定自变量X,进行因变量的预测,返回因变量的预测):predict(X)score函数(给定自变量X,进行因变量的预测,该函数返回预测结果与真实结果y的相关性,该值越接近1表示该模型越好):score(X,y,sample_weight=None)10.3.3预测股票价格涨跌趋势基于SGDRegressor类实现前面随机数据的拟合过程:结果得分为0.98,拟合结果如右图所示10.3.3预测股票价格涨跌趋势例10-1苹果公司股票(tic:AAPL)的未来走势回归分析数据集:采用的是道琼斯指数数据集。道琼斯指数是美国股票市场上工业构成的发展对世界金融最具有影响的指数之一,包括美国30间最大、最知名的上市公司。该数据集保存在"dow30_origin.csv"中,包含了从2008年12月31日到2021年10月29日的30只股票的开盘价、收盘价、最高价、最低价、股票数量等信息,共有94360条数据。10.3.3预测股票价格涨跌趋势例10-1苹果公司股票(tic:AAPL)的未来走势回归分析数据分析过程--1.数据预处理:从现有数据集中提取所有tic为“AAPL”的收盘价数据,按照日期进行排序,并转换为Numpy数组。10.3.3预测股票价格涨跌趋势提取tic为AAPL的数据按日期排序提取收盘价数据例10-1苹果公司股票(tic:AAPL)的未来走势回归分析数据分析过程--2.线性回归模型构建:利用Scikit-learn的linear_model来构建线性回归模型并进行训练,结果得分为0.68。数据分析过程--3.线性回归模型的评价和可视化:利用x生成预测值,并通过可视化与源数据进行比对。10.3.3预测股票价格涨跌趋势注意:没有再使用SGDRegression,而是用的LinearRegression例10-2根据其他股票的价格来预测苹果股票(数据集与10-1相同)数据分析过程--1.数据预处理:从现有数据集中提取所有股票的收盘价数据,按照股票、日期进行排序,并分别获得苹果股票的数据作为因变量,获得其他股票的数据作为自变量。10.3.3预测股票价格涨跌趋势提取tic、date、close等数据,排序提取tic为AAPL的数据提取tic为其他的数据例10-2根据其他股票的价格来预测苹果股票(数据集与10-1相同)数据分析过程--2.线性回归模型构建:利用Scikit-learn的linear_model来构建线性回归模型并进行训练,结果得分为0.994。数据分析过程--3.线性回归模型的评价和可视化:利用x生成预测值,并通过可视化与源数据进行比对。10.3.3预测股票价格涨跌趋势回归模型是拟合给定数据的趋势,以此来进行后续趋势的预测,因此,这种模型常常用于具有时序特征的数据。分类模型是给定一些事物的属性和类别标签,通过训练来确定属性和类别标签之间的关系,当有新事物产生时,可以通过属性来预测其类别。分类模型与回归模型本质上都是建立映射关系。其区别在于:回归问题的输出空间是一个度量空间,即所谓的“定量”,而分类问题的输出空间不是度量空间,即所谓“定性”。10.4Scikit-learn实现分类模型决策树模型呈树状结构,在分类问题上,表示基于特征(即事物属性)对实例进行分类的过程。优点:可读性高,分类速度快。方法:利用数据进行训练,然后根据损失函数最小化的原则进行构建。当预测时,将新的特征数据输入模型,获得实例类别。10.4.1决策树分类模型的原理
10.4.1决策树分类模型的原理决策树的基本算法为ID3算法,其核心是在决策树的各个节点上应用信息增益准则来选择特征,递归的构建决策树。具体分为三步:(1)从根节点出发,对节点计算所有可能特征的信息增益,选择信息增益最大的特征作为节点的特征,由该特征的不同取值建立子节点;(2)再对子节点递归的调用以上方法,构建决策树;(3)直到所有特征的信息增益均很小或没有特征可以选择为止,得到最后的决策树;10.4.1决策树分类模型的原理
10.4.1决策树分类模型(扩展)
10.4.1决策树分类模型(扩展)基于信息增益的概念,ID算法描述如下:输入:训练数据集D,特征集A,阈值输出:决策树T(1)若D中所有实例属于同一类Ck,则T为单节点树,并将类Ck作为该节点的类标记,返回T;(2)若A为空,则T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;(3)否则,计算A中各个特征对D的信息增益,选择信息增益最大的特征Ag;(4)如果Ag的信息增益小于,则T为单节点树,并将D中实例数最大的类Ck作为该节点的类标记,返回T;(5)否则,对Ag的每个可能值ai,按照Ag=ai将D分割为若干非空子集Di,将Di中的实例数最大的类作为标记,构建子节点,由节点及其子节点构成树T,返回T;(6)对第i个子节点,以Di为训练集,以A-{Ag}为训练集,递归调用步骤(1)-(5),得到子树Ti并返回。10.4.1决策树分类模型(扩展)数据集:生成了15条数据,这些数据包含一个成人的“年龄”、“工作”、“房子”、“信贷情况”和“类别”,其中前四个特征是个人情况的描述,最后一个特征“类别”是标签,用来标示是否可以对其进行贷款。我们希望通过模型,根据其个人情况,来预测是否可以向其贷款。数据集示例如右图10.4.2决策树分类模型的简单实现算法实现-树结点的构造10.4.2决策树分类模型的简单实现算法实现-树的构造10.4.2决策树分类模型的简单实现计算信息熵算法实现-树的构造10.4.2决策树分类模型的简单实现计算条件信息熵算法实现-树的构造10.4.2决策树分类模型的简单实现计算信息增益和训练算法实现-树的构造10.4.2决策树分类模型的简单实现决策树训练的实现算法实现-树的构造10.4.2决策树分类模型的简单实现决策树的训练和预测决策树的应用和结果Scikit-learn用于决策树分类的模型是放置在“tree”这一模型文件中,对应的模型类是“DecisionTreeClassifier”,其定义为:10.4.3基于Scikit-learn的决策树模型classsklearn.tree.DecisionTreeClassifier(*,criterion='gini',splitter='best',max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_features=None,random_state=None,max_leaf_nodes=None,min_impurity_decrease=0.0,class_weight=None,ccp_alpha=0.0)DecisionTreeClassifier类中包含的常用方法为fit()、predict()、score()。分别用来进行模型训练、预测和评价。fit函数(给定自变量和因变量,进行模型的训练。其中X为自变量,y为因变量,是必须输入的参数):fit(X,y,sample_weight=None,check_input=True)predict函数(给定自变量,进行因变量的预测,该函数返回因变量的预测值):predict(X,check_input=True)score函数(给定测试集中的自变量和因变量,计算其预测的平均精确度):score(X,y,sample_weight=None)10.4.3基于Scikit-learn的决策树模型DecisionTreeClassifier类中包含的常用方法为fit()、predict()、score()。分别用来进行模型训练、预测和评价。fit函数(给定自变量和因变量,进行模型的训练。其中X为自变量,y为因变量,是必须输入的参数):fit(X,y,sample_weight=None,check_input=True)predict函数(给定自变量,进行因变量的预测,该函数返回因变量的预测值):predict(X,check_input=True)score函数(给定测试集中的自变量和因变量,计算其预测的平均精确度):score(X,y,sample_weight=None)10.4.3基于Scikit-learn的决策树模型例10.3根据贷款人的属性,判断贷款人是否会逾期归还贷款。数据集:采用的是在网络上爬取的小额贷款数据集"financial_loan.csv",该文件中包含了贷款金额(amount)、贷款利率(rate)、贷款成功数量(success_loan_no)、贷款失败数量(failed_loan_no)、贷款人性别(sex)、贷款人年龄(age)、贷款人信用(credit)、是否逾期(overdue),其中前七个特征为自变量的特征,最后一个特征为因变量,即标签。该数据集中共有20000条数据。右图为数据示例10.4.3基于Scikit-learn的决策树模型例10.3根据贷款人的属性,判断贷款人是否会逾期归还贷款。数据分析过程--1.数据预处理:对数据集进行预处理,将数据标准化、数值化和离散化。其中,对于年龄特征,分为不同粒度,具体规则为:20岁以下;20-25岁;26-32岁;33-39岁;39岁以上,按照该规则离散化为5个值;对于信用特征,将不同的字符串进行数值化。10.4.3基于Scikit-learn的决策树模型对年龄进行离散化规则对年龄离散化,对信用数值化处理后数据例10.3根据贷款人的属性,判断贷款人是否会逾期归还贷款。数据分析过程--2.决策树分类分析:将数据集分为训练集和测试集,构建决策树分类模型,对数据进行线性回归分析,结果得分为0.774。数据分析过程--3.决策树分类模型的评价和可视化:利用测试数据x_test生成预测值,并通过可视化来了解决策树的具体过程。10.4.3基于Scikit-learn的决策树模型训练和测试采用不同的数据集,可以确保模型的独立性
对训练数据进行模型拟合例10.3根据贷款人的属性,判断贷款人是否会逾期归还贷款。数据分析过程--4.改进1:在自变量使用的过程中,由于特征之间存在较大差异,因此模型的训练容易产生更大误差,所以常常对每个特征进行规范化,即将特征值归范直0到1之间,从而降低预测的误差。采用preprocessing模块中的StandardScaler类来完成。数据分析过程--4.改进2:之前需要手动的进行训练集和测试集的分割,再分别进行训练。当指定不同的分割比例时,需要多次训练。这个过程可以进一步集成,通过model_selection的cross_val_score方法,可以传入模型、自变量和因变量,再给定训练的次数,就可以进行自动的交叉验证,确保训练结果的稳定性。10.4.3基于Scikit-learn的决策树模型对某医疗服务平台中获得的数据进行分析数据集:采用的是在某医疗服务平台中爬取的医生在线诊疗数据集"haodf_con_2022.xlsx",该文件中包含了临床职称(doc_cli_title)、科室(doc_depart)、患者评分(rating)、患者总数(patient_number)、访问次数(visiting_num)、昨日访问次数(visiting_num_day)、文章数量(article_num)、诊后患者数量(patient_num_treat)、诊后评价数量(rating_treat)、礼物总数(gift_num_total)、医生使用OHC天数(experience)、心意礼物数量(gift_num)等12个特征。该数据集共有3364条数据。下图是数据示例:10.5编程实践问题1:对于一个在该平台工作医生来说,假设其经验值与其患者评分存在线性关系,尝试通过线性回归模型来拟合,检验该假设是否成立。数据分析思路:提取其经验值(article_num)和患者评分(rating)两个特征,以经验值为自变量x,以患者评分为因变量y,构建线性回归模型。数据预处理:10.5编程实践问题1:对于一个在该平台工作医生来说,假设其经验值与其患者评分存在线性关系,尝试通过线性回归模型来拟合,检验该假设是否成立。线性回归模型预测:结论:从预测结果来看,只能达到3%左右的精确度,所以可以得出结论,两个特征之间基本不具有线性关系。10.5编程实践问题2:对于一位在该平台工作的医生,他通常具有不同职称,假设其评分、访问次数、患者数量等特征能够反映其职称情况,尝试通过决策树分类模型进行拟合,检验该模型的可行性。数据分析思路:提取职称数据作为标签y,提取除所属科室以外的其他数据作为特征x,构建决策树分类模型。数据预处理:10.5编程实践问题2:对于一位在该平台工作的医生,他通常具有不同职称,假设其评分、访问次数、患者数量等特征能够反映
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 口腔喷剂推广方案
- 四川省内江市某校2024-2025学年高三上学期10月月考地理试题( 含答案)
- 第四单元 三位数乘两位数 单元测试(无答案) 2024-2025学年四年级上册数学人教版
- 地方公务员浙江申论2
- 2013年6月23日上午面试真题
- 教育活动中培养幼儿自我效能感的做法
- 2012年7月2日上午面试真题
- 辽宁行政职业能力模拟38
- 地方公务员陕西申论77
- 安徽申论A类模拟55
- 北师大版高三数学选修4-6初等数论初步全册课件【完整版】
- 高中英语-选修二Unit 3 Times Change教学设计学情分析教材分析课后反思
- 人教版PEP英语四年级上册Unit2-My-schoolbag-A-lets-talk课件等
- 乡村振兴的实践探索学习通课后章节答案期末考试题库2023年
- 考研信号与系统真题
- 全册(教学设计)外研版(三起)英语三年级上册
- 鲁科版高一物理必修第二册《生活中的抛体运动》教案及教学反思
- Lesson7(课件)新概念英语第一册
- 城市轨道交通-前期咨询工作收费指导意见
- 人教A版选修1《抛物线的简单几何性质》教案及教学反思
- 现代物流基础PPT完整全套教学课件
评论
0/150
提交评论