多元函数拟合。如 电视机和收音机价格多销售额的影响,此时自变量有两个。

python 解法:

importnumpy as npimportpandas as pd#import statsmodels.api as sm #方法一

import statsmodels.formula.api as smf #方法二

importmatplotlib.pyplot as pltfrom mpl_toolkits.mplot3d importAxes3D

df= pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)

X= df[['TV', 'radio']]

y= df['sales']#est = sm.OLS(y, sm.add_constant(X)).fit() #方法一

est = smf.ols(formula='sales ~ TV + radio', data=df).fit() #方法二

y_pred =est.predict(X)

df['sales_pred'] =y_predprint(df)print(est.summary()) #回归结果

print(est.params) #系数

fig=plt.figure()

ax= fig.add_subplot(111, projection='3d') #ax = Axes3D(fig)

ax.scatter(X['TV'], X['radio'], y, c='b', marker='o')

ax.scatter(X['TV'], X['radio'], y_pred, c='r', marker='+')

ax.set_xlabel('X Label')

ax.set_ylabel('Y Label')

ax.set_zlabel('Z Label')

plt.show()

拟合的各项评估结果和参数都打印出来了,其中结果函数为:

f(sales) = β0 + β1*[TV] + β2*[radio]

f(sales)  = 2.9211 + 0.0458 * [TV] + 0.188 * [radio]

图中,sales 方向上,蓝色点为原 sales 实际值,红色点为拟合函数计算出来的值。其实误差并不大,部分数据如下。

同样可拟合一元函数;

importnumpy as npimportpandas as pdimportstatsmodels.formula.api as smfimportmatplotlib.pyplot as pltfrom mpl_toolkits.mplot3d importAxes3D

df= pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)

X= df['TV']

y= df['sales']

est= smf.ols(formula='sales ~ TV', data=df).fit()

y_pred=est.predict(X)print(est.summary())

fig=plt.figure()

ax= fig.add_subplot(111)

ax.scatter(X, y, c='b')

ax.plot(X, y_pred, c='r')

plt.show()

Ridge Regression:(岭回归交叉验证)

岭回归(ridge regression, Tikhonov regularization)是一种专用于共线性数据分析的有偏估计回归方法,实质上是一种改良的最小二乘估计法,通过放弃最小二乘法的无偏性,以损失部分信息、降低精度为代价获得回归系数更为符合实际、更可靠的回归方法,对病态数据的拟合要强于最小二乘法。通常岭回归方程的R平方值会稍低于普通回归分析,但回归系数的显著性往往明显高于普通回归,在存在共线性问题和病态数据偏多的研究中有较大的实用价值。

importnumpy as npimportpandas as pdimportmatplotlib.pyplot as pltfrom sklearn importlinear_modelfrom mpl_toolkits.mplot3d importAxes3D

df= pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Advertising.csv', index_col=0)

X= np.asarray(df[['TV', 'radio']])

y= np.asarray(df['sales'])

clf= linear_model.RidgeCV(alphas=[i+1 for i in np.arange(200.0)]).fit(X, y)

y_pred=clf.predict(X)

df['sales_pred'] =y_predprint(df)print("alpha=%s, 常数=%.2f, 系数=%s" %(clf.alpha_ ,clf.intercept_,clf.coef_))

fig=plt.figure()

ax= fig.add_subplot(111, projection='3d')

ax.scatter(df['TV'], df['radio'], y, c='b', marker='o')

ax.scatter(df['TV'], df['radio'], y_pred, c='r', marker='+')

ax.set_xlabel('TV')

ax.set_ylabel('radio')

ax.set_zlabel('sales')

plt.show()

输出结果:alpha=150.0, 常数=2.94, 系数=[ 0.04575621  0.18735312]

python最小二乘法拟合_Python 普通最小二乘法(OLS)进行多项式拟合相关推荐

  1. python多项式拟合_Python 普通最小二乘法(OLS)进行多项式拟合,最小二乘法拟合二次多项式,多元函数拟合。如 电...

    Python 普通最小二乘法(OLS)进行多项式拟合,最小二乘法拟合二次多项式,多元函数拟合.如 电 多元函数拟合.如 电视机和收音机价格多销售额的影响,此时自变量有两个. python 解法:imp ...

  2. java 多项式拟合最多的项数_matlab 多项式拟合EXCEL中复杂数据

    有如下原始数据x,y,它对应的曲线图形为: -9552 -2036.81 -9328 -2025.62 -9168 -2014.43 -9024 -2003.25 -8928 -1992.06 -88 ...

  3. matlab 拟合光滑曲线图,Matlab光滑曲线多项式拟合与样条曲线拟合的两个案例

    %多项式曲线拟合 figure(1) matrix2=[]; %新建空矩阵 h1=polyfit(matrix1(:,1),matrix1(:,2),3); %计算多项式拟合系数,3-拟合次数 mat ...

  4. python多变量拟合_Python曲线将多个参数拟合到多个数据集

    我正在尝试使用scipy的curve_fit函数来求解模型参数 . 我使用Python curve_fit with multiple independent variables作为起点并且能够满足我 ...

  5. java 多项式拟合最多的项数_机器学习(1)--线性回归和多项式拟合

    机器学习(1)--线性回归和多项式拟合 机器学习(2)逻辑回归 (数学推导及代码实现) 机器学习(3)softmax实现Fashion-MNIST分类 一 线性回归 线性回归,顾名思义是利用线性模型对 ...

  6. 多项式模型与多项式拟合

    3. 多项式模型 (一元多次方程) 3.1 多项式拟合 在有些数据分布中,使用一条曲线比直线能更好拟合数据,这就需要用到多项式拟合.如下图所示分布: 多项式的一般形式: y=p0xn+p1xn−1+p ...

  7. 多项式拟合一般方程法详细推导

    多项式拟合之一般方程法 文章目录 多项式拟合之一般方程法 1 什么是多项式拟合? 2 怎样拟合? 3 求bbb 正交矩阵 QR分解 施密特正交化 matlab测试函数 之前经常会用到多项式拟合来拟合函 ...

  8. python多项式拟合_最小二乘法—多项式拟合非线性函数

    本章涉及到的知识点清单: 1.函数的近似表示-高次多项式 2.误差函数-最小二乘法 3.引出案例函数曲线 4.目标函数 5.优化目标函数 6.优化目标函数-梯度下降法 7.优化目标函数-求解线性方程组 ...

  9. 从寻找谷神星的过程,谈最小二乘法实现多项式拟合

    科学史上众星云集,璨若星河.这些牛人基本上都是天才,但也不乏无名之辈凭借匪夷所思.骇世惊俗的猜想而跻身于巨星之列.比如,门捷列夫,整了一张留空的元素周期表,引得全世界的化学家去做填空题.还有一位德国的 ...

最新文章

  1. git 出现 fatal: refusing to merge unrelated histories 错误
  2. 【深度学习】Pytorch编写代码基本步骤思想
  3. Android之webView入门
  4. sort list java leetcode_[LeetCode] 148. Sort List Java
  5. python初学者编程指南_动态编程初学者指南
  6. java实体序列化_java – 在JPA实体序列化(JSON)上防止JAX-RS中...
  7. django 1.8 官方文档翻译: 2-5-4 聚合 (初稿)
  8. 具有搜索和自定义分页的React Bootstrap表
  9. 《数字图像处理(第三版)》 第一章 绪论 笔记
  10. [面试必考]OSI 网络七层协议以及各层的功能
  11. android版本下载京东,手机京东历史版本
  12. ITMS-90096错误解决
  13. python廖老师课程资源,廖老师的python教程
  14. **传统线上支付 区块链**
  15. python--Django 01 安装以及初识Django项目开发
  16. Joan Baez - Willie Moore
  17. html插入swf自动播放,如何在HTML页面中嵌入SWF文件?
  18. 最老程序员创业札记:全文检索、数据挖掘、推荐引擎应用44
  19. 什么是聚合路由器?主要运用在哪些方面?
  20. 格斗java华娱_华娱水滸2-武林至尊

热门文章

  1. shell写的彩色进度条
  2. 学习方法之05六步法则,考上清华北大的路径
  3. Java多线程之死锁编码及定位分析
  4. Maven中 jar包冲突原理与解决办法依赖传递
  5. 什么时候该用MySQL,什么时候该用ES呢?
  6. 无招胜有招之Java进阶JVM(二)
  7. leetcode 504. 七进制数(Java版)
  8. 面试必会系列 - 5.2 详解OSI模型与七层协议,网络TCP/IP基础,三次握手、四次挥手等
  9. leetcode 121. 买卖股票的最佳时机
  10. C语言 链表 头插法