Python关于如何进行简单线性回归拟合以及出图

1.首先 需要准备第三方库statsmodels(数学模型),pandas(读取excel文件),matplotlib(出图)

import statsmodels.api as sm
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt

2.读取需要进行线性回归的Excel文件,利用pandas自带的read方法(此处以研究GDP与price的关系为例 具体代码如下)

data=pd.read_excel('SJ.xls',index_col='t')
print (data)
y=data['price']
x=data['GDP']

此实例(“SJ.xls”)中Excel表格共有两列数据,分别是price和GDP,其中index_col是索引列,用以标注方便查看。y因变量为price列所有数据,x自变量为GDP列的所有数据。如下图所示:

3.线性回归拟合

# 线性回归拟合
x_n = sm.add_constant(x) #statsmodels进行回归时,一定要添加此常数项
model = sm.OLS(y, x_n) #model是回归分析模型
results = model.fit() #results是回归分析后的结果

#输出回归分析的结果
print(results.summary())
print('Parameters: ', results.params)
print('R2: ', results.rsquared)

会得到一张统计表格,拟合度以及参数。

4.出图

#以下用于出图
plt.figure()
plt.rcParams['font.sans-serif'] = ['Kaiti']  # 指定默认字体
plt.title(u"线性回归预测GDP和价格")
plt.xlabel(u"x")
plt.ylabel(u"price")
plt.axis([0, 15000, 0, 1000000])
plt.scatter(x, y, marker="o",color="b", s=50)
plt.plot(x_n, y, linewidth=3, color="r")
plt.show()

5.完整代码

# -*- coding: utf-8 -*-
import numpy as np
import statsmodels.api as sm
import pandas as pd
import statsmodels.api as sm
import matplotlib.pyplot as plt

data=pd.read_excel('SJ.xls',index_col='t')
print (data)
y=data['price']
x=data['GDP']

# 线性回归拟合
x_n = sm.add_constant(x) #statsmodels进行回归时,一定要添加此常数项
model = sm.OLS(y, x_n) #model是回归分析模型
results = model.fit() #results是回归分析后的结果

#输出回归分析的结果
print(results.summary())
print('Parameters: ', results.params)
print('R2: ', results.rsquared)

#以下用于出图
plt.figure()
plt.rcParams['font.sans-serif'] = ['Kaiti']  # 指定默认字体
plt.title(u"线性回归预测GDP和价格")
plt.xlabel(u"x")
plt.ylabel(u"price")
plt.axis([0, 15000, 0, 1000000])
plt.scatter(x, y, marker="o",color="b", s=50)
plt.plot(x_n, y, linewidth=3, color="r")
plt.show()

 

  • 15
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值