博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python求线性回归斜率
阅读量:4561 次
发布时间:2019-06-08

本文共 2050 字,大约阅读时间需要 6 分钟。

一、 先说我对这个题目的理解

直线的x,y方程是这样的:y = kx+b, k就是斜率.
求线性回归斜率, 就是说
有这么一组(x, y)的对应值——样本。如果有四组,就说样本量是4.
根据这些样本,做“线性回归”,最终求出一条直线(即y = kx + b的k值和b值),使得样本里的各个点(x, y) “尽可能的”落到直线(或者直线附近)上。
二、 python解题需要安装的包
实际解题主要用到的python库是pandas. 解题算法是“最小二乘法”,这用到了pandas的ols函数。
我的系统是ubuntu14.04.
实际实验过程如下:

$ sudo pip install numpy

$ sudo pip install pandas

安装pandas的依赖包(使用pandas.ols函数就必须安装这个依赖包):

$ sudo pip install statsmodels

如果发现安装失败,则需要安装系统依赖库先:

在http://www.netlib.org/lapack/ 下载lapack-3.6.0的包,然后:
$ cd lapack-3.6.0
$ mv make.inc.example make.inc
$ sudo apt-get install gfortran
把makefile文件中的:
lib: lapacklib tmglib
改为:
lib: blaslib variants lapacklib tmglib
$ sudo make
$ sudo cp lib*.a /usr/lib
以上依然不行,然而,'可能'只需要下面两个命令:
$ sudo apt-get install libblas-dev liblapack-dev libatlas-base-dev gfortran
$ sudo pip install statsmodels (安装时间有点长...)
过了.

三、 python解题

$ ipython

> import numpy as np
import pandas as pd
x = np.array([2,3,4,6])
xx = pd.DataFrame({"k": x})
yy = pd.Series([22,33,44,66])   # 口算都知道斜率是11,最终方程是y=11x
res = pd.ols(y=yy, x=xx)           
res

-------------------------Summary of Regression Analysis-------------------------

Formula: Y ~ <k> + <intercept>

Number of Observations: 4

Number of Degrees of Freedom: 2

R-squared: 1.0000

Adj R-squared: 1.0000

Rmse: 0.0000

F-stat (1, 2): inf, p-value: 0.0000

Degrees of Freedom: model 1, resid 2

-----------------------Summary of Estimated Coefficients------------------------

Variable Coef Std Err t-stat p-value CI 2.5% CI 97.5%
--------------------------------------------------------------------------------
k 11.0000 0.0000 1404889085527666.75 0.0000 11.0000 11.0000
intercept -0.0000 0.0000 -0.68 0.5691 -0.0000 0.0000
---------------------------------End of Summary---------------------------------

可以看出,直线方程就是这样的:y = 11x - 0  (就是最左边的一列值作为k和b)

可以直接读取beta,关注每个系数:
res.beta

k 1.100000e+01

intercept -2.131628e-14
dtype: float64

res.beta[0]       # <--------- 斜率

(试试把上面样本里x最后一个改为7,即x = np.array([2,3,4,7]))

四、 end

 参考资料:

http://www.cnblogs.com/fangwenyu/p/4284523.html

转载于:https://www.cnblogs.com/xiaouisme/p/5173083.html

你可能感兴趣的文章
设置控件获取焦点
查看>>
“必须执行Init_Clk函数,才能采集到二氧化碳接口485数据的问题”的解决
查看>>
mysql 笔记
查看>>
MySQL配置参数
查看>>
全面理解Java内存模型
查看>>
A - Mike and palindrome
查看>>
DOTween教程
查看>>
java web中java和python混合使用
查看>>
pymysql模块的使用
查看>>
IOS 正则表达式匹配文本中URL位置并获取URL所在位置(解决连接中文问题)
查看>>
创建学员类和教员类
查看>>
Cookie和Session的作用和工作原理
查看>>
字符串操作
查看>>
Visual Studio中改变environment 的布局和显示风格
查看>>
2016-XCTF Final-Richman
查看>>
文件下载
查看>>
extjs grid renderer用法
查看>>
vue 如何在循环中绑定v-model
查看>>
shell脚本
查看>>
[代码笔记]JS保持函数单一职责,灵活组合
查看>>