You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Sklearn的高效二阶多项式拟合及替代拟合方案咨询

嘿,我来给你支招!你用SVR的poly kernel做二阶拟合确实有点“杀鸡用牛刀”了,SVR本身的凸优化迭代过程对小数据集来说没必要这么复杂,这就是它慢的原因。下面给你几个更高效的方案:

最快速的二阶多项式拟合方案:PolynomialFeatures + LinearRegression

这是实现二阶多项式拟合的标准高效路径——先把原始特征转换为二阶多项式特征,再用线性回归拟合,本质就是二阶多项式回归,计算量极小,128个数据点瞬间就能跑完。

代码示例

import pandas as pd
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression

# 提取数据(y用一维数组更简洁)
X = df11[['P1FRAMES']]
y = df11['A']

# 生成二阶多项式特征(比如将x转换为x、x²)
poly_transformer = PolynomialFeatures(degree=2, include_bias=False)
X_poly = poly_transformer.fit_transform(X)

# 拟合模型并预测
poly_model = LinearRegression()
poly_model.fit(X_poly, y)
y_poly_fit = poly_model.predict(X_poly)

为什么这个更快?

LinearRegression基于最小二乘法的闭式解计算,不需要迭代优化,速度远快于SVR的凸优化过程。你之前设置的C=1e3会让SVR试图拟合更多细节,进一步增加了计算时间,完全没必要用于简单的二阶拟合场景。

备选方案:高斯过程回归(GPR)

如果你的数据不是严格的二阶多项式,或者需要得到拟合结果的不确定性估计,可以试试sklearn的高斯过程回归,128个数据点的计算压力也很小。

代码示例

from sklearn.gaussian_process import GaussianProcessRegressor
from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C

# 定义核函数(这里用带常数项的RBF核,也可以替换为多项式核)
kernel = C(1.0, (1e-3, 1e3)) * RBF(1.0, (1e-2, 1e2))
gpr_model = GaussianProcessRegressor(kernel=kernel, random_state=42)

# 拟合并预测(return_std=True可以得到预测的标准差,即不确定性)
gpr_model.fit(X, y)
y_gpr_fit, y_pred_std = gpr_model.predict(X, return_std=True)

GPR的优势

它能给出每个预测点的置信区间,适合需要分析拟合可靠性的场景,但计算量比线性回归略大,不过对于你的数据集来说完全没问题。

内容的提问来源于stack exchange,提问作者Tom Dry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:04:43