摘要:本篇文章将介绍在python中使用机器学习库sklearn建立简单回归模型的过程。

回归分析是一种常见的统计方法,用于确定不同变量间的相互关系。在Excel中可以通过数据分析菜单中的回归功能快速完成。本篇文章将介绍在python中使用机器学习库sklearn建立简单回归模型的过程。

准备工作

首先是开始前的准备工作,在创建回归模型的过程中我们需要使用以下几个库文件,他们分别为sklearn库,numpy库,pandas库和matplotlib库。sklearn库用于计算线性回归模型中的关键参数,并对模型进行检验。numpy和pandas库用于数据导入,创建数据表和一些基础的计算工作。matplotlib库用于绘制散点图。

#导入机器学习linear_model库 from sklearn import linear_model #导入交叉验证库 from sklearn import cross_validation #导入数值计算库 import numpy as np #导入科学计算库 import pandas as pd #导入图表库 import matplotlib.pyplot as plt 读取并查看数据表

准备工作完成后,开始读取数据,这里我们使用了一组每日广告成本和点击量的数据。将这组数据读取到python中并取名为cost_and_click。通过head函数查看数据表中前5行的内容。以下是数据读取和查看的代码和结果。

#读取数据并创建数据表,名称为cost_and_click cost_and_click=pd.DataFrame(pd.read_excel(cost_and_click.xlsx))

#查看数据表前5行的内容 cost_and_click.head()

设置模型的自变量和因变量

在cost_and_click数据表中,我们将广告成本cost设置为自变量X,将广告点击量click设置为因变量Y。希望通过回归模型发现广告成本对于广告点击量的影响,以及两者间的关系。下面我们将X设置为cost,Y设置为click。并通过shape函数查看了两个变量的行数,共25行,这是我们完整数据表的行数。

#将广告成本设为自变量X X = np.array(cost_and_click[[cost]]) #将点击量设为因变量Y Y = np.array(cost_and_click[click]) #查看自变量和因变量的行数 X.shape,Y.shape

绘制散点图

在设置好自变量X和因变量Y后,为了更清楚的看到两者间的关系,我们先使用散点图进行观察,下面是散点图的绘制过程,其中X轴为广告成本数据,Y轴为广告点击量数据。

#设置图表字体为华文细黑,字号15 plt.rc(font, family=STXihei, size=15) #绘制散点图,广告成本X,点击量Y,设置颜色,标记点样式和透明度等参数 plt.scatter(X,Y,60,color=blue,marker=o,linewidth=3,alpha=0.8) #添加x轴标题 plt.xlabel(成本) #添加y轴标题 plt.ylabel(点击量) #添加图表标题 plt.title(广告成本与点击量分析) #设置背景网格线颜色,样式,尺寸和透明度 plt.grid(color=#95a5a6,linestyle=--, linewidth=1,axis=both,alpha=0.4) #显示图表 plt.show()

从散点图中可以看出广告点击量随着广告成本的增加而提升。两者究竟有多强的联系,以及具体的关系如何,我们需要从回归模型中找到答案。

将数据分割为训练集和测试集

原始数据中我们共记录到25天的广告成本和点击量数据。将这25条数据分为两部分,一部分作为训练集创建回归模型,另一部分作为测试集对回归模型的结果进行检验。下面是具体的数据分组代码,使用随机方式从25条记录中抽取40%作为测试集,另外60%作为训练集数据。

#将原始数据通过随机方式分割为训练集和测试集,其中测试集占比为40% X_train, X_test, y_train, y_test = cross_validation.train_test_split(X, Y, test_size=0.4, random_state=0)

使用shape函数对训练集的数据行数进行查看,共有15行。这15行数据将被用于建立回归模型。

#查看训练集数据的行数 X_train.shape,y_train.shape

代入线性回归模型

将训练集数据代入到线性回归模型中,以计算关键的参数值。下面是具体的代码和结果。

#将训练集代入到线性回归模型中 clf = linear_model.LinearRegression() clf.fit (X_train,y_train)

计算模型的关键参数

回归模型依据自变量的数量可以分为一元回归模型和多元回归模型,这里我们只有一个自变量X,因此是一元回归模型。其中斜率b1和截距b0是我们要求的关键参数值。

首先计算出回归模型中的斜率值,以下是具体的代码和结果。

#线性回归模型的斜率 clf.coef_

其次计算出回归模型的截距,以下是具体的代码和结果。

#线性回归模型的截距 clf.intercept_

除此之外,对于回归模型来说还需要计算判定系数,也就是R平方,用以说明自变量对因变量变化的解释度。以下是具体的代码和计算结果。

#判定系数R Square clf.score(X_train,y_train)

有了前面的斜率和截距后,就可以描绘出广告成本与广告点击量之间的关系了,并且可以通过这种关系来对广告点击量的结果进行预测,下面我们在回归模型中将广告成本设置为20000元,经过计算获得预测的广告点击量为1993次。这个预测结果准确吗?我们还需要对回归模型进行评估。

#输入自变量预测因变量 clf.predict(20000)

使用测试集评估模型

评估回归模型的方法就是使用测试集数据,将测试集中的自变量代入到回归模型中,将结果与测试集的因变量进行对比,评估模型的准确性。下面我们将测试集中的自变量代入回归模型,并列出了所有的计算结果。

#将测试集的自变量代入到模型预测因变量 list(clf.predict(X_test))

同时我们也列出了测试集中因变量。通过对比可以看到两组数据间的差异,例如第一组数据回归模型的计算结果796,测试集中的因变量736。以及第三组数据908和991。有些数据回归模型的结果大于测试集的数据,而另一些则可能小于测试集的数据。

#显示测试集的因变量 list(y_test)

为了衡量回归模型的计算结果与测试集中因变量的数据差异,我们使用误差平方和对两者的差异进行评估。以下是误差平方和的计算公式。为了防止两组数据间差异的正负相互抵消,取平方和。

这里需要说明的是误差平方和指标并不能说明回归模型的结果与测试集数据间的差异大小,它只能用来进行模型间准确率的对比。以下是计算误差平方和的代码和结果。

怎么用python进行回归预测_使用Python训练回归模型并进行预测相关推荐

  1. 简单数据预测—使用Python训练回归模型并进行预测(转自蓝鲸网站分析博客)

     使用Python训练回归模型并进行预测 回归分析是一种常见的统计方法,用于确定不同变量间的相互关系.在Excel中可以通过数据分析菜单中的回归功能快速完成.本篇文章将介绍在python中使用机器 ...

  2. python自动测试优惠券过期_python逻辑回归模型-使用优惠券预测

    最近疫情严重,宅在家里给自己充电,修改简历,心里还是有点担忧的,疫情肯定会对招聘产生影响,今年春招的竞争肯定要比以往几年都要大. 于是打算在我的知乎专栏里也囤点"货". #希望大家 ...

  3. 用python计算准确率_有没有计算回归模型准确率的方法?

    回归类算法的模型评估与分类型算法的模型评估其实是相似的法则--找真实标签和预测值的差异.在分类型算法中,评判否预测到了正确的分类,而在我们的回归类算法中,评判是否预测到了正确的数值.以及是否拟合到了足 ...

  4. python回归分析预测模型_在Python中如何使用Keras模型对分类、回归进行预测

    姓名:代良全 学号:13020199007 转载自:https://www.jianshu.com/p/83ba11abdffc [嵌牛导读]: 在Python中如何使用Keras模型对分类.回归进行 ...

  5. python单向认证_使用Python进行单向方差分析的四种方法

    python单向认证 The current post will focus on how to carry out between-subjects ANOVA using Python. As m ...

  6. 是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)?

    是否有可能从python中的句子语料库重新训练word2vec模型(例如GoogleNews-vectors-negative300.bin)? http://www.voidcn.com/artic ...

  7. python集群_使用Python集群文档

    python集群 Natural Language Processing has made huge advancements in the last years. Currently, variou ...

  8. python 交互式流程图_使用Python创建漂亮的交互式和弦图

    python 交互式流程图 Python中的数据可视化 (Data Visualization in Python) R vs Python is a constant tussle when it ...

  9. python 网页编程_通过Python编程检索网页

    python 网页编程 The internet and the World Wide Web (WWW), is probably the most prominent source of info ...

最新文章

  1. 小姐姐都能看懂的Happens-before规则,你还愣住了?
  2. php原生 文章浏览量,调用WordPress函数统计文章访问量及PHP原生计数器的实现
  3. JS 对象机制深剖——new 运算符
  4. Laravel增加自定义助手函数
  5. shell常用命令之curl: -w,–write-out参数详解
  6. Windows 7 镜像制作过程
  7. 焊接空间臂_焊接烟尘净化器设备哪种好
  8. 李牛(Linux)脚本
  9. Python冒泡排序(4)
  10. Velo 实验室集成 Chainlink 预言机喂价
  11. 2021年 RSA 大会:产品发布概览(第1天)
  12. 选择性搜索(selective search)+opencv实现
  13. C#可空类型(Nullable)
  14. 老游戏与你共渡亲子时光
  15. Python进制转换
  16. 打开cmd 的方式和常用的cmd快捷键
  17. 结构体成员数组怎么初始化c语言,c语言,结构体数组怎么初始化
  18. 实时分析:Flume+Kafka+SparkStreaming商品评分排行榜
  19. HTML——3D移动、3D透视、3D效果、3D呈现案例效果
  20. Linux编写C++程序

热门文章

  1. bcrypt对密码加密的一些认识(学习笔记)
  2. Windows手工使用CMD命令写入系统服务方法
  3. 获取本机IP(考虑多块网卡、虚拟机等复杂情况)
  4. C#如何用Graphics画出一幅图表
  5. ipsec *** 的总结性谈论
  6. 修改weblogic(10.3)域的启动JDK
  7. 【飞秋】ASP.NET 之 常用类、方法的超级总结,并包含动态的EXCEL导入导出功能,奉上类库源码
  8. 从飞鸽传书口水仗想到的
  9. JAVASCRIPT:VOID(0)含义解析
  10. 在VC中使用ADO开发数据库应用程序