线性拟合

Python SciPy库——插值与拟合

浪尽此生 提交于 2019-11-28 10:27:19
插值与拟合 原文链接: https://zhuanlan.zhihu.com/p/28149195 1.最小二乘拟合 实例1 # -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt from scipy.optimize import leastsq ## 设置字符集,防止中文乱码 import matplotlib matplotlib.rcParams['font.sans-serif']=[u'simHei'] matplotlib.rcParams['axes.unicode_minus']=False plt.figure(figsize=(9,9)) x=np.linspace(0,10,1000) X = np.array([8.19, 2.72, 6.39, 8.71, 4.7, 2.66, 3.78]) Y = np.array([7.01, 2.78, 6.47, 6.71, 4.1, 4.23, 4.05]) #计算以p为参数的直线和原始数据之间的误差 def f(p): k, b = p return(Y-(k*X+b)) #leastsq使得f的输出数组的平方和最小,参数初始值为[1,0] r = leastsq(f, [1,0]) k, b = r[0]

matlab学习——05插值和拟合(黄河小浪底调水调沙问题)

大憨熊 提交于 2019-11-28 10:25:45
05插值和拟合 黄河小浪底调水调沙问题 data3.txt 1800 1900 2100 2200 2300 2400 2500 2600 2650 2700 2720 2650 32 60 75 85 90 98 100 102 108 112 115 116 2600 2500 2300 2200 2000 1850 1820 1800 1750 1500 1000 900 118 120 118 105 80 60 50 30 26 20 8 5 插值 % 问题一 % v:水流量S:含沙量;V:排沙量? % 假设水流量和含沙量都是连续的,某一时刻的排沙量V=v(t)S(t) % 先已知某些时刻的 水流量 和 含沙量 ,给出估计任意时刻的 排沙量 及 总排沙量 % 总排沙量 是对 排沙量 做 积分 % 时间8:00-20:00 t1=28800,t24=1022400=t2 format compact; clc,clear; load data3.txt liu = data3([1,3],:); liu=liu';liu=liu(:); % 提出水流量并按照顺序变成列向量 sha = data3([2,4],:); sha=sha';sha=sha(:); % 提出含沙量并按照顺序变成列向量 y=sha.*liu;y=y'; % 计算排沙量,变成行向量 i=1:24; t=

matlab学习——05插值和拟合(一维二维插值)

↘锁芯ラ 提交于 2019-11-28 06:04:19
05插值和拟合 1.一维插值 (1) 机床加工零件,试用分段线性和三次样条两种插值方法计算。并求x=0处的曲线斜率和13<=x<=15范围内y的最小值。 x0=[0 3 5 7 9 11 12 13 14 15]; y0=[0 1.2 1.7 2 2.1 2.0 1.8 1.2 1.0 1.6]; x=0:0.1:15; % interp1现有插值函数,要求x0单调,'method'有 % nearest 最近项插值 linear 线性插值 % spline 立方样条插值 cubic 立方插值 y1=interp1(x0,y0,x); y2=interp1(x0,y0,x,'spline'); pp1=csape(x0,y0); y3=fnval(pp1,x); pp2=csape(x0,y0,'second'); y4=fnval(pp2,x); [x',y1',y2',y3',y4'] subplot(1,4,1) plot(x0,y0,'+',x,y1) title('Piecewise linear 分段线性') subplot(1,4,2) plot(x0,y0,'+',x,y2) title('spline1') subplot(1,4,3) plot(x0,y0,'+',x,y3) title('spline2') subplot(1,4,4) plot(x0,y0,

传统推荐算法(五)LR+GBDT(1)剑指GBDT

大城市里の小女人 提交于 2019-11-28 05:55:27
文章目录 写在前面 1. GBM 1.1 从参数空间到函数空间: 1.2 从非参估计到参数估计 1.3 泰勒展开近似 2. GBM的基学习器 2.1 基学习器选择 2.2 CART回归树 3. GBDT之回归 4. GBDT之分类 4.1 二类逻辑回归和分类 4.2 多类逻辑回归和分类 5. 反思总结 5.1 样本权重调整 5.2 GBDT优缺点 6. GBDT资料推荐 参考 公众号 写在前面 学习GBDT的时候,被网上的几篇文章搞晕了,就去看了下GBDT的论文,整理了一些思路,结合参考中的一些内容,整理了这篇文章。本文将循序渐进,从GB,DT讲到GBDT,细致分析下GBDT的原理。本人才疏学浅,有些地方可能理解得不对,欢迎指出错误。学习过程中,薛大佬的这篇文章给了我很多启发:http://xtf615.com/paper/GBM.html。他本人也很热心地帮我解答疑问,在此特别感谢。 机器学习中的 Boosting 算法族有两大类,一类是 weight_boosting,其中以 adaboost 为主要代表,另一类是 gradient_boosting,其中以 gbdt 为主要代表[1]。GBDT是机器学习竞赛中常用的一种算法,据统计,Kaggle比赛中50%以上的冠军方案都是基于GBDT算法[2]。有人称之为机器学习TOP3算法。 1999年,Jerome Harold

numpy中多项式拟合

荒凉一梦 提交于 2019-11-28 04:15:07
多项式拟合 前言: 任何可微的函数都可以用一个N次多项式来估计, 而比N次幂更高阶的部分为无穷小量. 多项式拟合与线性拟合的区别就是: 线性拟合是使用向量空间中的直线去拟合离散的数据点 多项式拟合是使用连续的曲线去拟合离散的数据点 Key_Function:   np.polyfit函数: 输入x轴数组, 输入y轴数组, 用多项式拟合一系列数据点, 返回一个系数数组 np.polyval函数: 输入多项式系数数组,输入x, 返回一个与x对应的y值 np.roots函数: 输入多项式系数数组, 返回一个表示根的数组 np.poluder函数: 输入多项式系数数组, 返回一个求导后的多项式系数数组 Code: import numpy as np import matplotlib.pyplot as plt bhp = np.loadtxt('BHP.csv', delimiter=',', usecols=(6,), unpack=True) vale = np.loadtxt('VALE.csv', delimiter=',', usecols=(6,), unpack=True) print(bhp) ''' [ 93.72 95.64 94.56 93.3 93.93 92.39 92.11 92.36 91.76 93.91 94.6 93.27 94.43 96.02

5.多项式回归与模型泛化

 ̄綄美尐妖づ 提交于 2019-11-27 03:59:11
(一)什么是多项式回归 还记得线性回归法吗?线性回归法有一个很大的局限性,那就是需要数据是有一定的线性关系的,但是现实中的很多数据是没有线性关系的。多项式就是用来解决这个问题的,可以处理非线性数据 在线性回归中,我们是假设数据具有线性关系的,因此我们在简单线性回归中,将直线的方向设置为y=ax+b的形式,那么我们求出a和b即可。 而对于有些数据,我们虽然也可以使用线性回归,但是显然具有更加强的非线性的关系,换句话说,如果我们用一个二次曲线来拟合这些点,效果会更好。因此函数就变成了了y=ax^2+bx+c,我们求出a、b、c即可。但是本质上,和线性回归一样,目前都是只有一个特征,只不过我们为样本多添加了一些特征,这些特征是原来的多项式项。求出了对原来的特征而言,一个非线性的曲线。 生成数据集 import numpy as np import matplotlib.pyplot as plt # 生成一百个样本,每个样本只有一个特征 X = np.random.uniform(-3, 3, size=(100, 1)) y = 0.5 * X ** 2 + X + 2 + np.random.normal(0, 1, size=(100,1)) plt.scatter(X, y) plt.show() 可以看到数据大概满足一条二次曲线,但是我们使用线性回归法来拟合一下 from

多项式回归

狂风中的少年 提交于 2019-11-26 21:13:50
目录 多项式回归 一、多项式回归 二、scikit-learn中的多项式回归 三、关于PolynomialFeatures 四、sklearn中的Pipeline 五、过拟合和欠拟合 六、解决过拟合问题 七、透过学习曲线看过拟合 我是尾巴 多项式回归 直线回归研究的是一个依变量与一个自变量之间的回归问题。 研究一个因变量与一个或多个自变量间多项式的回归分析方法,称为多项式回归(Polynomial Regression)多项式回归模型是线性回归模型的一种。 多项式回归问题可以通过变量转换化为多元线性回归问题来解决。 一、多项式回归 import numpy as np import matplotlib.pyplot as plt x = np.random.uniform(-3, 3, size=100) X = x.reshape(-1, 1) y = 0.5 + x**2 + x + 2 + np.random.normal(0, 1, size=100) plt.scatter(x, y) plt.show() 如果直接使用线性回归,看一下效果: from sklearn.linear_model import LinearRegression lin_reg = LinearRegression() lin_reg.fit(X, y) y_predict = lin