《Python机器学习》教学课件—09回归分析_第1页
《Python机器学习》教学课件—09回归分析_第2页
《Python机器学习》教学课件—09回归分析_第3页
《Python机器学习》教学课件—09回归分析_第4页
《Python机器学习》教学课件—09回归分析_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、Machine Learning with Python9.1目 录9.3回归分析原理多元线性回归不同回归算法的分析对比9.29.49.5正则化回归分析本章小结回归分析原理回归分析(Regression Analysis)是一个监督学习过程它是一个统计预测模型,用以描述和评估因变量与一个或多个自变量之间的关系9.13 9.1 回归分析原理 1.基本概念回归分析是处理多变量间相关关系的一种数学方法。相关关系不同于函数关系,后者反映变量间的严格依存性,而前者则表现出一定程度的波动性或随机性,对自变量的每一个取值,因变量可以有多个数值与之相对应。在统计学上,研究相关关系可以运用回归分析和相关分析(C

2、orrelation Analysis)。 2.可解决的问题通过回归分析,可以解决以下问题:1)建立变量间的数学表达式,通常称为经验公式。2)利用概率统计基础知识进行分析,从而判断所建立的经验公式的有效性。3)进行因素分析,确定影响某一变量的若干变量(因素)中,何者为主要,何者为次要,以及它们之间的关系。具有相关关系的变量之间虽然具有某种不确定性,但是通过对现象的不断观察可以探索出它们之间的统计规律,这类统计规律称为回归关系。有回归关系的理论、计算和分析称为回归分析。4 9.1 回归分析原理 3.回归分析的一般方法1)收集数据:采用任意方法收集数据。2)准备数据:回归需要数值型数据,标称型数据

3、将被转成二值型数据。3)分析数据:绘出数据的可视化二维图将有助于对数据做出理解和分析,在采用缩减法求得新回归系数之后,可以将新拟合线绘在图上作为对比。4)训练算法:找到回归系数。5)测试算法:使用预测值和数据的拟合度,来分析模型的效果。6)使用算法:使用回归,可以在给定输入的时候预测出一个数值,这是对分类方法的提升,因为这样可以预测连续型数据而不仅仅是离散的类别标签。多元线性回归本节主要介绍线性回归的算法,原理及参数9.26 9.2.1 多元线性回归算法其中,Y为因变量,a为截距,b为相关系数,X为自变量。7 9.2.1 多元线性回归算法由于只有一个预测变量X,预测变量和目标形成了一个二维空间

4、。在此空间中,模型需要拟合一条距离所有数据点最近的直线,接近度的测量方式为直线与所有数据点的垂直距离平方和,如图9-1所示。如果有两个预测变量和,则空间增长到三维,现在模型需要拟合最接近三维空间中所有点的平面,如图9-2所示。而当有了两个以上的特征,模型拟合的就变成了较为抽象的超平面。图9-1 2D空间模型图图9-2 3D空间模型图8 9.2.1 多元线性回归算法9 9.2.1 多元线性回归算法10 10 9.2.1 多元线性回归算法11 11 9.2.1 多元线性回归算法12 12 9.2.1 多元线性回归算法13 9.2.2 实现及参数14 9.2.2 实现及参数正则化回归分析本节主要介绍

5、岭回归,Lasso回归,ElasticNet回归,并将他们的算法进行对比9.316 9.3 正则化回归分析17 9.3.1 岭回归18 9.3.1 岭回归19 9.3.1 岭回归 5)copy_X:是否复制X。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值True,会复制X。 6)solver:指定求解最优化问题的算法。数据类型为字符串型,若不指定该参数值,则自动使用默认参数值auto。其可选值如下: auto:根据数据集自动选择算法。 svd:使用奇异值分解来计算回归系数。 cholesky:使用scipy.linalg.solve函数来求解。 sparse_cg:使用scipy.

6、sparse.linalg.cg函数来求解。 1sqr:使用scipy.sparse.linalg.lsqr函数来求解。它运算速度最快,但是可能老版本的scipy不支持。 sag:使用Stochastic Average Gradient Descent算法,求解最优化问题。 7)tol:指定判断迭代收敛与否的阈值。数据类型为浮点型,若不指定该参数值,则自动使用默认参数值0.001。20 9.3.1 岭回归 8)random_state:用于设置随机数产生的方式。若不指定该参数值,则自动使用默认参数值None。其可选值如下: 整数:该值会被作为随机数发生器的种子。 RandomState实例:

7、指定随机数发生器。 None:使用默认的随机数发生器。 其主要属性如下: 1)coef_:权重向量。 2)intercept_:b值。 3)n_iter_:实际迭代次数。 其主要方法为: 1)fit(X,y, sample_weight):训练模型。 2)predict(X):用模型进行预测,返回预测值。 3)score(X,y,sample_weight):返回预测性能得分。21 9.3.2 Lasso回归22 9.3.2 Lasso回归23 9.3.2 Lasso回归 7)tol:指定判断迭代收敛与否的阈值。数据类型为浮点型,与岭回归相同。 8)random_state:用于设置随机数产生

8、的方式,与岭回归相同。 9)precompute:决定是否提前计算Gram矩阵来加速计算。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值False,即不提前计算Gram矩阵来加速计算。 10)warm_start:是否使用前一次训练结果继续训练。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值False,即重新开始训练。 11)positive:是否强制要求权重向量的分量都为正数。数据类型为布尔型,若不指定该参数值,则自动使用默认参数值False,即不要求权重向量的分量都为正数。 其主要属性如下: 1)coef_:权重向量。 2)intercept_:b值。 3)n_iter

9、_:实际迭代次数。其主要方法为:1)fit(X,y, sample_weight):训练模型。2)predict(X):用模型进行预测,返回预测值。3)score(X,y,sample_weight):返回预测性能得分。具体用法如下所示。24 9.3.3 ElasticNet回归25 9.3.3 ElasticNet回归26 9.3.3 ElasticNet回归 6)copy_X:是否复制X。数据类型为布尔型,与Lasso回归相同。 7)selection:指定每轮迭代时,选择权重向量的哪个分量来更新,与Lasso回归相同。 8)tol:指定判断迭代收敛与否的阈值。数据类型为浮点型,与Lass

10、o回归相同。 9)random_state:用于设置随机数产生的方式,与Lasso回归相同。 10)precompute:决定是否提前计算Gram矩阵来加速计算。数据类型为布尔型,与Lasso回归相同。 11)warm_start:是否使用前一次训练结果继续训练。数据类型为布尔型,与Lasso回归相同。 12)positive:是否强制要求权重向量的分量都为正数。数据类型为布尔型,与Lasso回归相同。 其主要属性为: 1)coef_:权重向量。 2)intercept_:b值。 3)n_iter_:实际迭代次数。其主要方法为:1)fit(X,y, sample_weight):训练模型。2)

11、predict(X):用模型进行预测,返回预测值。3)score(X,y, sample_weight):返回预测性能得分。不同回归算法的分析对比 9.4本案例使用4种回归方法对波士顿房价数据集进行分析,进一步加深对线性回归算法的认识。28 9.4 不同回归算法的分析对比参考程序如下: import matplotlib.pyplot as plt import numpy as np # 导入数据集模块 from sklearn import datasets # 导入sklearn中的线性模型类和模型验证类 from sklearn import linear_model, model_s

12、election # 读取波士顿房价数据集 boston = datasets.load_boston() # 使用train_test_split函数自动随机划分训练集与测试集,其中: # test_size为测试集所占比例, # random_state为随机数种子,相同的种子值在每次运行中的划分结果相同,如不设置则以系统当前时间为种子 x_train, x_test, y_train, y_test = model_selection.train_test_split(boston.data,boston.target, test_size=0.3,random_state=1)29 9

13、.4 不同回归算法的分析对比 # 定义各种线性回归对象 lr = linear_model.LinearRegression() rd = linear_model.Ridge() ls = linear_model.Lasso() en = linear_model.ElasticNet() models = lr, rd, ls, en names = Linear, Ridge, Lasso, Elastic Net # 分别训练模型并进行回归,计算残差平方和及准确率 for model, name in zip(models, names): model.fit(x_train, y_

14、train) y_predict = model.predict(x_test) score = model.score(x_test, y_test) print(Residual sum of squares of %s: %.2f %(name, np.mean(y_predict-y_test)*2) print(Accuracy of %s: %.2f %(name, score)30 9.4 不同回归算法的分析对比 # 测试alpha在不同取值下的回归效果 scores = Alphas=0.0001,0.0005,0.001,0.005,0.01,0.05,0.1,0.5,1,5

15、,10,50 for index, model in enumerate(models): scores.append() for alpha in alphas: if index0: model.alpha = alpha model.fit(x_train, y_train) scoresindex.append(model.score(x_test, y_test) # 绘制结果图 fig = plt.figure(figsize=(10,7) for i, name in enumerate(names): plt.subplot(2,2,i+1) plt.plot(range(le

16、n(alphas), scoresi) plt.title(name) print(Max accuracy of %s: %.2f %(name, max(scoresi) plt.show()31 9.4 不同回归算法的分析对比程序运行结果如下,绘制的结果如图9-6所示。 Residual sum of squares of Linear: 19.83 Accuracy of Linear: 0.78 Residual sum of squares of Ridge: 19.33 Accuracy of Ridge: 0.79 Residual sum of squares of Lass

17、o: 30.29 Accuracy of Lasso: 0.67 Residual sum of squares of Elastic Net: 27.51 Accuracy of Elastic Net: 0.70 Max accuracy of Linear: 0.78 Max accuracy of Ridge: 0.79 Max accuracy of Lasso: 0.79 Max accuracy of Elastic Net: 0.7932 9.4 不同回归算法的分析对比图9-6 不同算法在乳腺癌数据集的回归效果对比图33 9.4 不同回归算法的分析对比 在使用默认参数的情况下,4种回归算法的准确率在67%

温馨提示

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

评论

0/150

提交评论