Scikit 学习:更高维度的多项式插值



scikit-learn项目的这个链接中:http://scikit-learn.org/stable/auto_examples/linear_model/plot_polynomial_interpolation.html,它展示了如何应用多项式插值来近似某个函数。

此示例针对 2D 点设置。然而:

  • 如何扩展它以适应 3D 点?

  • 或者这甚至可以通过scikit-learn吗?在文档中,我找不到任何提示。

提前感谢您提供任何信息,并致以最诚挚的问候。

编辑 1

谢谢罗宾的回答!指出复杂性的快速增长也是一个有价值的提示!

到目前为止,我偶然发现了一个问题,它与 2D 数组 X 有关model.fit(X,z)

2D 数组如下所示:

[[ 0.1010101   0.35353535]
 [ 0.4040404   0.65656566]
 [ 0.80808081  1.11111111]
 [ 1.21212121  1.31313131]]

而函数 z 是抛物面的函数:

(((x**2)/(4**2) + ((y**2)/(8**2))) * 2)

运行model.fit(X,z)将返回以下错误消息:

ValueError: Found arrays with inconsistent numbers of samples: [10 20]

不一致从何而来?

是的,同样的方法可以用于更高维的数据。只需将相同的代码与包含更多列的X一起使用即可。

# For some degree, X and y
model = make_pipeline(PolynomialFeatures(degree), Ridge())
model.fit(X, y)

要添加一些背景信息,请执行以下操作: 多项式要素预处理步骤仅创建要素的所有可能组合。这意味着即使对于 2D 输入和度数 2,特征空间也已经是 6 维(1, a, b, a*b, a*a, b*b)。随着更多功能,这个数字增长得更快。

对于第二个问题,fit函数只接受向量,不接受函数。因此,创建一个向量y = z(X[:,0],X[:,1]),并在 fit 函数中使用它而不是model.fit(X,y) .

相关内容

  • 没有找到相关文章

最新更新