首页 > 编程知识 正文

多组数据拟合一条曲线,数据拟合的步骤

时间:2023-05-05 01:29:59 阅读:163745 作者:626

顺便说一下,我们学到了很多关于监督学习的算法,但最近博主在看关于数据分析的书时,突然觉得在实际应用中很少使用关于机器学习、数据挖掘的东西。 我们要做的只是获得真实生活的数据,找到数据之间的关系,然后根据这种关系做出运营、决策等行为。 所以这是关于数据拟合。 (其实与监督学习的算法相比,数据拟合可以说非常简单。 )

个人资料数据拟合又称曲线拟合,俗称拉曲线,是通过数学方法将现有数据代入一个数学式的表现。 科学和工程问题可以通过采样、实验等方法得到一些离散的数据,基于这些数据,希望连续的函数,也就是曲线,或者更密集的离散方程与已知的数据一致,这个过程是http://www.Sina .

PS :以上说明是从百度抄来的。

通俗地说,我们用某种方法得到未知关系的数据,找到函数曲线,表达数据之间的关系,保证大部分数据点落在曲线上。

本节介绍如何用python实现多项式拟合数据。 网上也有使用最小二乘法和高斯算法进行数据拟合的方法,但在实际工作中不需要那么复杂的应用,在此不再赘述。 有兴趣的人请自己学习。

说到数据拟合和我多项式拟合的数据,最重要的原因是拟合(fitting)

然后,将数据合成为二次多项式。 具体代码如下。

importnumpyasnpx=[ 10,20,30,40,50,60,70,80 ] #定义x,y散点坐标x=NP.Array(x(print ('自变量x:(n,x ) y ) 2 )通过用二次多项式拟合#,可以通过对多项式阶print (x ) yvals=p(x )对从多项式系数:(n ),f ) p=np.poly1d(f )获得的多项式系数进行排序

用图像表示拟合的函数:

importmatplotlib.pyplotasplt.rcparams [ ' font.sans-serif ' ]=[ ' simhei ' ] # #中文显示不出现在PLT.rcparams['axes.] 8 ) ) plot1=plt.plot(x ) x,y,' s ',label='原始对应值') ) plot2=plt.plot(x ) x,yvvigure label='拟合函数

如上所述,任何函数可以用多项式形式表示。数学上可以证明,任意函数都可以表示为多项式形式那么,接下来试着合成7次多项式。

f=NP.polyfit(x,y,7 ) p=np.poly1d(f ) f ) yvals ) x ) PLT.figure (fig size=(10,8 ) ) plot1=PLT.plop

你会发现结果比以前好了很多。

实际上写这篇文章是因为最近读书的时候,看到了星巴克关于咖啡市场的A/B实验。 本实验旨在验证给定ddmn区域咖啡价格对新客户转化率的影响,并根据影响做出相应的运营决策。 在这个实验中,我们只知道咖啡价格和该地区商店的顾客转化率:

咖啡单价—10、20、30、40、50、60、70、80

顾客转化率—2.30258509、2.99573227、3.40119738、3.68887945、3.91202301、4.09434456、4.24849524、4.38202663

看了这个实验,我的第一个反应是用监督学习中的逻辑回归进行拟合建模。 但仔细想想,似乎没有必要这么复杂。 我只需要用多项式函数表示这两个数据的关系就可以了。

PS :说不定这个函数的次数会非常高,系数也会非常复杂。 但是,那又怎么样呢? 反正也不是人工计算,什么头痛难懂的计算都扔进电脑里就行了。 否则,你学习编程做什么?

代码如下所示。

log _ y=NP.array ([ 2.30258509,2.99573227,3.4 ]

0119738, 3.68887945, 3.91202301,4.09434456, 4.24849524, 4.38202663])f=np.polyfit(x,log_y,2)# 用6次多项式拟合,可改变多项式阶数p=np.poly1d(f)#得到多项式系数,按照阶数从高到低排列#也可使用yvals=np.polyval(f1, x)yvals = p(x) #求对应x的各项拟合函数值plt.figure(figsize=(10,8))plot1=plt.plot(x,log_y,'s',label='原对应值')plot2=plt.plot(x,yvals,'r',label='拟合函数')plt.xlabel('价格提高')plt.ylabel('客户转化率')plt.legend(loc=4) #指定legend的位置右下角plt.title('A/B测试')plt.show()

结果如上所示,可以看出随着价格的提高,新客户转化率是逐渐提高的(该说真不愧是时尚的荔枝),但是转化率的增长速度是逐渐降低的

也就是说,当咖啡价格提高到一定程度的时候,ddmn们便不会再倾心于昂贵的咖啡。而星巴克所需要做的便是要找出这个价格的临界值,并在该区域根据这个价格展开一些运营手段。这样做既可以最高限度地提高新客户转化率,同时也能将销售利润最大化。

PS:这就是数据分析的魅力所在。

总结

数据拟合是用来观察某一自变量归对因变量造成的影响,或者是二者之间的关系,适用于x与y的这种一对一关系:

y=axn+bx(n-1)+…+mx^2+n*x+d

x-自变量 y-因变量

而在数据挖掘/机器学习中,我们往往探讨多个特征值对目标值的共同作用,单独的去研究每个特征值的影响是非常麻烦的,而且用数据拟合去处理是非常片面的,因为有些特征值之间也会相互作用:

y=w[0]x[0]+w[1]x[1]+w[2]x[2]+…+w[p]x[p]+b

这里x[0]到x[p]表示耽搁数据点的特征(本例中特征个数为p+1),w和b是学习模型的参数,y是预测结果

个人博客:https://www.yyb705.com/
欢迎大家来我的个人博客逛一逛,里面不仅有技术文,也有系列书籍的内化笔记。
有很多地方做的不是很好,欢迎网友来提出建议,也希望可以遇到些朋友来一起交流讨论。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。