在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)
.