基于jupyter notebook的python编程-----运用sklearn库,导入文件数据模拟一元线性回归分析


上次博客,我们对于线性回归分析运用的是最小二乘法,这种方法是我们理解线性回归的基础,高中我们就学习过,所以可以根据这种方法来求解回归系数和截距,但作为大学生的我们来说,显然有更加简单的方法,不用我们自己写代码,只需要通过第三方库进行导入就ok,本次博客,林君学长将带大家了解,如何运用sklearn库来进行一元线性回归的分析

一、运行jupyter notebook,搭建python环境

1、打开Windows终端命令行,输入jupyter notebook,打开我们的jupyter工具,如下所示:

在这里插入图片描述

2、在jupyter的web网页中创建python文件,如下所示:

在这里插入图片描述

3、现在就可以在jupyter的代码行里面输入我们的代码啦!

二、以下列的csv文件为例,编写我们的最小二乘法的python代码的分解步骤

在这里插入图片描述
文件内容如下:
在这里插入图片描述
文件中为体重X,身高Y的线性回归关系

1、导入我们需要的基本库

from sklearn import linear_model        #表示,可以调用sklearn中的linear_model模块进行线性回归。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

2、导入我们数据文件mytest.csv

data = np.loadtxt(open("D:mytest.csv","rb"),delimiter=",",skiprows=0)
data1=data[0:20]

以上==data1=data[0:20]==表示我们导入文件数据的前20行,举一反三,导入200、2000行数据则可以在这里进行修改,如下
1)、导入200行数据

data1=data[0:200]

2)、导入2000行数据

data1=data[0:2000]

3、为我们的x,y赋值采样

x=[example[1] for example in data1]
y=[example[2] for example in data1]
X = np.asarray(x).reshape(-1, 1)
Y = np.asarray(y).reshape(-1, 1)

1)、上面,X、Y表示将导入的数据的第1列、第二列分别赋值给X、Y,如下所示:
在这里插入图片描述
2)、上面的x、y是将数据列表装换为array数组方便sklearn库进行数据解析

4、下面就是运用sklearn库进行数据处理,求y=ax+b中的ab

model = linear_model.LinearRegression()
model.fit(X,Y)
b=model.intercept_[0] #截距
a=model.coef_[0]#线性模型的系数
a1=a[0]

以上的数据处理不需要我们去管,是第三方库sklearn写好了的,我们直接拿来用就ok

5、输出打印我们求出的线性回归方程

print("y=",a1,"x+",b)

6、通过scatter画出拟合曲线图

y1 = a1*X + b
plt.scatter(X,Y)
plt.plot(x,y1,c='r')

以上就是运用sklearn库来进行一元线性方程的回归分析,过程比较简单,基本就是运用第三方的库,唯一难点是解决文件导入,然后赋值!

三、python利用sklearn库分析回归方程的全部源码

from sklearn import linear_model        #表示,可以调用sklearn中的linear_model模块进行线性回归。
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline
data = np.loadtxt(open("D:mytest.csv","rb"),delimiter=",",skiprows=0)
data1=data[0:20]
x=[example[1] for example in data1]
y=[example[2] for example in data1]
X = np.asarray(x).reshape(-1, 1)
Y = np.asarray(y).reshape(-1, 1)
model = linear_model.LinearRegression()
model.fit(X,Y)
b=model.intercept_[0] #截距
a=model.coef_[0]#线性模型的系数
a1=a[0]
print("y=",a1,"x+",b)
y1 = a1*X + b
plt.scatter(X,Y)
plt.plot(x,y1,c='r')

四、shift+enter运行我们的代码

1、运行结果如下图所示:

在这里插入图片描述

2、可以看出,以上是我们通过python代码拟合的自变量X(体重)取值20个的线性回归方程,接下来我们通过wps的excel对同样的数据,同样的20个取值,与我们sklearn库的结果对比,如下图所示:

在这里插入图片描述
可以看出,python拟合出来的线性回归和我们excel拟合的线性回归的方程,大致一样,就是有效数字的问题,可以看出,我们编写的代码还是比较完美的!

3、给出自变量X取值200个和2000个的线性回归方程,大家可以自己修改x,y赋值来做!

1)、取值200个x
在这里插入图片描述
对比excel:
在这里插入图片描述
2)、取值2000个x
在这里插入图片描述
对比excel:
在这里插入图片描述
以上就是我们本次博客的全部内容,希望通过本次博客,大家可以更好的理解如何运用第三方库sklearn求线性回归方程哦!
遇到问题的小伙伴评论区留言哦,学长给你们耐心解答!
陈一月的又一天编程岁月^ _ ^

发布了39 篇原创文章 · 获赞 33 · 访问量 6313

猜你喜欢

转载自blog.csdn.net/qq_42451251/article/details/104881776