Python 在Scikit学习支持向量回归中寻找混合次数多项式

Python 在Scikit学习支持向量回归中寻找混合次数多项式,python,scikit-learn,regression,svm,non-linear-regression,Python,Scikit Learn,Regression,Svm,Non Linear Regression,据我所知,Scikit learn中的支持向量回归采用整数表示度。然而,在我看来,似乎低次多项式不被考虑 运行以下示例: import numpy from sklearn.svm import SVR X = np.sort(5 * np.random.rand(40, 1), axis=0) Y=(2*X-.75*X**2).ravel() Y[::5] += 3 * (0.5 - np.random.rand(8)) svr_poly = SVR(kernel='poly', C=1e3,

据我所知,Scikit learn中的支持向量回归采用整数表示度。然而,在我看来,似乎低次多项式不被考虑

运行以下示例:

import numpy
from sklearn.svm import SVR
X = np.sort(5 * np.random.rand(40, 1), axis=0)
Y=(2*X-.75*X**2).ravel()
Y[::5] += 3 * (0.5 - np.random.rand(8))
svr_poly = SVR(kernel='poly', C=1e3, degree=2)
y_poly = svr_poly.fit(X, Y).predict(X)
(从此处复制并稍微修改)

绘制数据的拟合较差(即使跳过第5行,其中Y值会出现随机错误)


似乎不考虑低阶项。我试图为
degree
参数传递一个列表
[1,2]
,但随后
predict
命令出错。有没有办法把它们包括在内?我错过了什么明显的东西吗

我认为低阶多项式项包含在拟合模型中,但在图中不可见,因为
C
epsilon
参数不适合数据。通过使用
GridSearchCV
微调参数,通常可以获得更好的拟合。由于在这种情况下,数据未居中,
coef0
参数也有显著影响

以下参数应能更好地拟合数据:

svr_poly = SVR(kernel='poly', degree=2, C=100, epsilon=0.0001, coef0=5)

scikit learn.SVR
运行低阶多项式。对原始示例的修改清楚地表明了这一点

X = np.sort(2*np.random.rand(40,1)-1,axis=0)
Y = np.sin(6*X).ravel()
svr_poly1 = SVR(kernel='poly', C=1e3, degree=3)
y_poly1 = svr_poly1.fit(X, Y).predict(X)
svr_poly2 = SVR(kernel='poly', C=100, epsilon=0.0001, coef0=5, degree=3)
y_poly2 = svr_poly2.fit(X, Y).predict(X)
svr_poly3 = SVR(kernel='poly', C=100, epsilon=0.0001, coef0=5, degree=5)
y_poly3 = svr_poly3.fit(X, Y).predict(X)
绘制此图将给出


将惩罚C设置为1000,基本上惩罚任何有效参数。尝试将其设置为1或lessIt会有所帮助,但这并不能解决我的一般问题,即在多大程度上考虑了低阶术语。此评论非常有用,但我无法从中推断是否包含低阶术语谢谢!我认为对于一个“简单”的模型来说,超参数并没有那么重要。我将接受Answare,因为它将引导我找到一个更清楚地表明它们包含在内的示例。我也会提供一个答案。