使用python做线性回归,scipy,statsmodels,sklearn
(2021-01-13 00:03:59)分类: python |
1. 1.
用 scipy 包
scipy.stats 中的 linregress
函数可以做一元线性回归。假如因变量为 “不良贷款”,自变量为 “各项贷款余额”,全部 python
代码如下:
import scipy.stats as st
import pandas as pd
datas =
pd.read_excel(r'D:\Users\chen_\git\Statistics-book\datas\linear_regression.xlsx')
# 读取 excel 数据,引号里面是 excel 文件的位置
y = datas.iloc[:, 1] # 因变量为第 2
列数据
x = datas.iloc[:, 2] # 自变量为第 3
列数据
# 线性拟合,可以返回斜率,截距,r 值,p
值,标准误差
slope, intercept, r_value, p_value,
std_err = st.linregress(x, y)
print(slope)# 输出斜率
print(intercept) # 输出截距
print(r_value**2) # 输出 r^2
scipy
中的回归分析比较简单,目前只能做一元线性回归,也不能用来做预测。
scipy
中的回归分析比较简单,目前只能做一元线性回归,也不能用来做预测。
2. 用 statsmodels 包
import pandas as pd
import statsmodels.api as
sm
import matplotlib.pyplot as
plt
datas =
pd.read_excel(r'D:\Users\chen_\git\Statistics-book\datas\linear_regression.xlsx')
# 读取 excel 数据,引号里面是 excel 文件的位置
y = datas.iloc[:, 1] # 因变量为第 2
列数据
x = datas.iloc[:, 2] # 自变量为第 3
列数据
x = sm.add_constant(x) #
若模型中有截距,必须有这一步
model = sm.OLS(y, x).fit() #
构建最小二乘模型并拟合
print(model.summary()) #
输出回归结果
# 画图
# 这两行代码在画图时添加中文必须用
plt.rcParams['font.sans-serif'] =
['SimHei']
plt.rcParams['axes.unicode_minus'] =
False
predicts = model.predict() #
模型的预测值
x = datas.iloc[:, 2] # 自变量为第 3
列数据
plt.scatter(x, y, label='实际值') #
散点图
plt.plot(x, predicts, color = 'red',
label='预测值')
plt.legend() # 显示图例,即每条线对应 label
中的内容
plt.show() # 显示图形
https://chenzhen.blog.csdn.net/article/details/103551261
前一篇:pycharm快捷键设置