scikit learn:更高维度的多项式插值
scikit learn: polynomial interpolation of higher dimensions
在 scikit-learn 项目的 link 中:http://scikit-learn.org/stable/auto_examples/linear_model/plot_polynomial_interpolation.html,展示了如何应用多项式插值来逼近某个函数,例如.
这个例子是为二维点设置的。然而:
如何扩展以适应 3D 点?
或者这甚至可以用 scikit-learn 实现吗?
在文档中我还找不到任何提示。
提前感谢您提供任何信息和
谨致问候。
段
编辑 1:
谢谢罗宾的回答!还指出复杂性的快速增长是一个有价值的提示!
到目前为止我偶然发现了一个问题,它与 model.fit(X,z)
中的二维数组 X 有关
二维数组看起来像这样:
[[ 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)
returns 错误信息如下:
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)
要添加一些背景信息:Polynomial Features 预处理步骤只是创建所有可能的特征组合。这意味着即使对于 2d 输入和度数 2,特征 space 也已经是 6 维 (1, a, b, a*b, a*a, b*b)
。随着更多的功能,这个数字增长得更快。
对于你的第二个问题,fit
函数只接受向量而不接受函数。
因此创建一个向量 y = z(X[:,0],X[:,1])
并在 fit 函数中使用它而不是 model.fit(X,y)
.
在 scikit-learn 项目的 link 中:http://scikit-learn.org/stable/auto_examples/linear_model/plot_polynomial_interpolation.html,展示了如何应用多项式插值来逼近某个函数,例如.
这个例子是为二维点设置的。然而:
如何扩展以适应 3D 点?
或者这甚至可以用 scikit-learn 实现吗? 在文档中我还找不到任何提示。
提前感谢您提供任何信息和 谨致问候。
段
编辑 1:
谢谢罗宾的回答!还指出复杂性的快速增长是一个有价值的提示!
到目前为止我偶然发现了一个问题,它与 model.fit(X,z)
二维数组看起来像这样:
[[ 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)
returns 错误信息如下:
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)
要添加一些背景信息:Polynomial Features 预处理步骤只是创建所有可能的特征组合。这意味着即使对于 2d 输入和度数 2,特征 space 也已经是 6 维 (1, a, b, a*b, a*a, b*b)
。随着更多的功能,这个数字增长得更快。
对于你的第二个问题,fit
函数只接受向量而不接受函数。
因此创建一个向量 y = z(X[:,0],X[:,1])
并在 fit 函数中使用它而不是 model.fit(X,y)
.