寻找 SVR 回归模型的 pvalue、r 和调整后的 r^2

问题描述 投票:0回答:1

我想使用支持向量回归(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 实现本身获得这些分数。

python scikit-learn statistics non-linear-regression
1个回答
0
投票

我认为 p 值在这里没有任何关系。通常科学家会使用 0.95 的 p 值,但这完全取决于变量的随机性和自由度。如果您想对模型进行统计测试,我建议您研究卡方检验或学生 F 检验。 R 值更倾向于输出的准确性和相关性,这可以在 Pearson 相关性测试中看到。

我目前正在读高中,正在对机器学习模型进行类似的统计测试,以尝试拒绝我的零假设。如果您只想计算误差,我建议重点关注损失函数和优化。如果您有备择假设/原假设,并且担心数据的频率和噪声偏移,请查看 p 值。

© www.soinside.com 2019 - 2024. All rights reserved.