我想使用支持向量回归(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 < / em>进行线性回归?
我想我必须自己使用KFold进行交叉验证才能实现此目的,但是我认为这不是一个大问题。问题是我不确定如何从sklearn的SVR实施中获得这些分数。