2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > python建立回归模型_简单线性回归的Python建模方法

python建立回归模型_简单线性回归的Python建模方法

时间:2022-09-27 00:17:07

相关推荐

python建立回归模型_简单线性回归的Python建模方法

简单线性回归,就是两个随机变量存在一定大小的相关系数的前提下,结合散点图观察,采用最小二乘OLS方法,尝试建立一条回归直线,使得误差平方和SSE最小。OLS是一种参数方法,通过确定直线的斜率b和截距a,求得直线方程y=a+bx。利用该直线方程,可对满足条件的测试集中的x值,预测出相应的y值,并评价模型效果。

本文通过一些人造数据,讲解Python实现简单线性回归的建模方法。

数据集包含两个随机变量:学习时间、分数。

一、统一概念

机器学习和数据分析的步骤相似:

①提出问题

②理解数据

③数据清洗

④建立模型

⑤评估模型

本文重点关注建模过程,故而忽略前3步。

简单线性回归就是一元线性回归。含有一个自变量(特征)+一个因变量(标签)。

通用表达式为y=a+bx,a为截距项,b为斜率(也叫回归系数)。

机器学习的一般建模分析方法,需先将原始数据集拆分出一定比例的数据子集,作为训练集。其余的数据则作为测试集,用来评估模型效果。

拆分的时候采用随机拆分,只需指定比例即可。

简单线性回归的特征一般为连续型变量,标签也为连续型变量。

二、建立模型

解释了可能出现的概念之后,可以着手准备建立模型了。

0.准备数据

通过有序字典的方式,手动创建一个原始数据集,包括两个随机变量(特征:x;标签:y):创建原始数据集

1.建模第一步:计算相关系数矩阵,提取特征和标签提取原始数据集的特征和标签

2.建模第二步:得到训练集和测试集

在导入机器学习交叉验证包的分割模块时,会弹出警告,经搜索,sklearn 0.20以后的版本将不支持sklearn.cross_validation包:

解决办法:修改为高级版本支持的包sklearn.model_selection.

在分割数据集的过程中,又弹出警告:

警告信息说的很清楚了,让我们补足testsize的大小。加一个参数test_size=0.2。如下:

原始数据集的特征:exam_x;训练集特征:x_train;测试集特征:x_test;

原始数据集的标签:exam_y;训练集标签:y_train;测试集标签:y_test。

二八分,训练集80%,测试集20%。

这里补充一下第一步需要的散点图,由于散点图的绘制过程需要提取出特征和标签,所以放在这里补充:

这里也可看出,适合用简单线性回归模型。

3.建模第三步:创建并训练模型

首先,导入 机器学习的线性模型包:from sklearn.linear_model import LinearRegression

然后,创建线性回归模型;再用训练集训练模型:

此处会报错:

通过划线部分我们得到:此处需要二维参数,而我们只传入了一维参数,如果只有一个特征,需要通过numpy重塑形状为n行1列。

备注:reshape为numpy的ndarray类型所具有的方法,Series需要先取出值的部分,即Series.values,再reshape(-1,1)成n行1列。关于reshape的规则见下图:numpy.array.reshape规则

言归正传,将训练集特征和测试集特征重塑为n行1列:

再训练模型一次,并求出截距和斜率,写出OLS方程:求出OLS方程

由于在绘制OLS直线时,需要用到 模型对训练集特征预测出来的y值,此处求一下:

y_train_pred = model.predict(x_train)

三、评估模型

简单线性回归模型的效果用判别系数r^2

可以看到,判别系数r平方为0.74,模型拟合效果较好。

下面通过可视化,直观感受一下效果:训练集:蓝色;测试集:红色

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。