线性和三次抛物线的区别函数是不是线性?

我最近一直在研究机器学习,现在正在迈出 scikit 和线性回归的第一步。

输出符合预期 22(显然 scikit 提出了 2x 作为假设函数)。但是当我使用 y = [1,4,9,16,25,36,49,64,81,100] 创建一个稍微复杂的示例时,我的代码只会创建疯狂的输出。我假设线性回归会得出一个二次函数 (x^2),但我不知道发生了什么。 11 的输出现在是:99。所以我想我的代码试图找到某种线性函数来映射所有示例。

在我做的线性回归教程中有多项式项的示例,因此我假设 scikits 实现会得出正确的解决方案。我错了吗?如果是这样,我如何教 scikit 考虑二次、三次等函数?

c*y)。因此,您不能指望线性回归模型能够完美地拟合二次曲线:它根本没有足够的模型复杂性来做到这一点。

也就是说,您可以巧妙地转换输入数据,以便用线性回归模型拟合二次曲线。考虑上面的 2D 情况:

现在让我们进行替换 y = x^2。也就是说,我们向包含二次项的数据添加第二个维度。现在我们有了另一个线性模型:

结果是一个在 x 中是二次的模型,但在系数上仍然是线性的!也就是说,我们可以通过线性回归轻松解决它:这是输入数据的基函数展开的示例。这是代码:

不过,这有点尴尬,因为模型需要 2D 输入到 predict(),因此您必须手动转换输入。如果您希望这种转换自动发生,您可以使用例如在管道中:

这是线性模型的美妙之处之一:使用这样的基函数扩展,它们可以非常灵活,同时保持非常快!您可以考虑添加具有三次、四次或其他项的列,它仍然是线性回归。或者对于周期性模型,您可能会考虑添加正弦、余弦等列。在极限情况下,所谓的“内核技巧”允许您有效地添加 无限 个新的列添加到您的数据中,并最终得到一个非常强大的模型——但仍然是线性的,因此仍然相对较快!有关此类估算器的示例,请查看 scikit-learn 的 。 .

扣丁学堂Python培训简述在Python中利用最小二乘拟合二次抛物线函数的方法

在Python中利用最小二乘拟合二次抛物线函数的方法有多少对Python开发感兴趣的小伙伴知道或者是了解呢?不了解的小伙伴也没有关系,本篇文章扣丁学堂小编就给读者们分享一下在Python中利用最小二乘拟合二次抛物线函数的方法,希望对小伙伴们有所帮助。

1、最小二乘也可以拟合二次函数

我们都知道用最小二乘拟合线性函数没有问题,那么能不能拟合二次函数甚至更高次的函数呢?答案当然是可以的。下面我们就来试试用最小二乘来拟合抛物线形状的的图像。

对于二次函数来说,一般形状为 f(x) = a*x*x+b*x+c,其中a,b,c为三个我们需要求解的参数。为了确定a、b、c,我们需要根据给定的样本,然后通过调整这些参数,知道最后找出一组参数a、b、c,使这些所有的样本点距离f(x)的距离平方和最小。用什么方法来调整这些参数呢?最常见的自然就是我们的梯度下降喽。

spicy库中有名为leastsq的方法,只需要输入一系列样本点,给出待求函数的基本形状,就可以针对上述问题求解了。

# 二次函数的标准形式 # 误差函数,即拟合曲线所求的值与实际值的差

上面的代码中,稍微注意的是如下几点:

1、func是待拟合的曲线的形状。本例中为二次函数的标准形式。

2、error为误差函数。很多同学会问不应该是最小平方和吗?为什么不是func(params, x) - y * func(params, x) - y?原因是名为lasts的方法中帮我们做了。看一下sklearn中源码的注释就知道什么情况了:

二次方的操作在源码中帮我们实现了。

3、p0里放的是a、b、c的初始值,这个值可以随意指定。往后随着迭代次数增加,a、b、c将会不断变化,使得error函数的值越来越小。

4、leastsq的返回值是一个tuple,它里面有两个元素,第一个元素是a、b、c的求解结果,第二个则为cost function的大小!

3、程序的最终结果与拟合曲线

leastsq函数除了可以模拟线性函数二次函数等多项式,还适用于任何波形的模拟。

只要将上面代码中的func换成对应的函数即可!

最后想要了解更多关于Python和人工智能方面内容的小伙伴,请关注扣丁学堂Python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的Python开发环境搭建视频,Python培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的定能让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:。

我要回帖

更多关于 线性和三次抛物线的区别 的文章

 

随机推荐