阅读:5663回复:1
python 2次方程线性回归示例
内容:用最小二乘法求解出关于样本数据2次回归方程的参数
工具:pycharm 库:numpy,matplotlib.pyplot,statsmodels.api 一:导入库 import numpy as np # NumPy(Numerical Python) 是 Python 语言的一个扩展程序库,支持大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。 import matplotlib.pyplot as plt # Matplotlib 是 Python 的绘图库。 它可与 NumPy 一起使用,提供了一种有效的 MatLab 开源替代方案。 它也可以和图形工具包一起使用,如 PyQt 和 wxPython。 import statsmodels.api as sm 二:准备样本数据 #参数个数 方程:Y = 5 + 2x + 3x^2 nsample = 50; x = np.linspace(0, 10, nsample) # 添加x平方项 X = np.column_stack((x, x**2)) #添加常数列 X = sm.add_constant(X) #方程系数 5 2 3 beta = np.array([5, 2, 3]) #误差项e,生成nsample个数值,数值符合正态分布 e = np.random.normal(size = nsample) # 生成实际样本值y, X与beta点乘 ,再加上一个误差项, y = np.dot(X, beta) + e # 用最小二乘法定义出 model model = sm.OLS(y, X) # 拟合 results = model.fit() pams = results.params 三:拟合数据 #拟合估计值y_fitted y_fitted = results.fittedvalues 四:绘制线性回归图 #画图 fig, ax = plt.subplots(figsize = (8, 6)) #原始数据x 与 y ax.plot(x, y, 'o', label = 'data') #拟合数据 ax.plot(x, y_fitted, 'r--.', label = 'OLS') ax.legend(loc='best') plt.show() 拟合效果如下: 描述:拟合效果 图片:a.png |
|