首页 > 解决方案 > 为 SVR 回归模型寻找 pvalue、r 和调整后的 r^2

问题描述

我想使用支持向量回归 (SVR) 进行回归,因为当我有几个功能时它看起来非常强大。当我在 scikit-learn 中找到一个非常易于使用的实现时,我正在使用该实现。我下面的问题特别是关于这个 python 包的,但是如果你有任何其他语言或包的解决方案,也请告诉我。

所以,我正在使用以下代码:

from sklearn.svm import SVR
from sklearn.model_selection import cross_validate
from sklearn.model_selection import KFold

svr_rbf = SVR(kernel='rbf')
scoring = ['neg_mean_absolute_error', 'neg_mean_squared_error', 'r2']


scores = cross_validate(estimator, X, y, cv=KFold(10, shuffle=True), scoring=scoring, return_train_score=False)

score = -1 * scores['test_neg_mean_absolute_error']
print("MAE: %.4f (%.4f)" % (score.mean(), score.std()))

score = -1 * scores['test_neg_mean_squared_error']
print("MSE: %.4f (%.4f)" % (score.mean(), score.std()))

score = scores['test_r2']
print("R^2: %.4f (%.4f)" % (score.mean(), score.std()))

正如你所看到的,我可以很容易地使用 10 折交叉验证,方法是将我的数据分成 10 次打乱的折叠,并且非常容易地获得每个折叠的所有 MAE、MSE 和 r^2。

但是,我的大问题是如何专门为我的 SVR 回归模型获取 pvalue、r 和调整后的 r^2,就像我在其他 python 包中找到的一样,包括用于线性回归的statsmodels ?

我想我必须自己实现与 KFold 的交叉验证才能实现这一点,但我认为这不是一个大问题。问题是我不确定如何从 sklearn 的 SVR 实现中获得这些分数。

标签: pythonscikit-learnstatisticsnon-linear-regression

解决方案


推荐阅读