SciKit-Learn 糖尿病数据集上支持向量回归的 R^2 得分较低

我在 sklearn-diabetes 数据集上实现了许多 ML 算法,除了 SVR 之外,所有这些算法在测试子集上的 R^2 约为 0.45。不过,当我进行 SVR 时,我在测试子集上得到的 R^2 分数为 0.16。我想知道这是否是因为 SVR 对于数据集来说是一个糟糕的算法选择,或者是因为我错误地实现了它。我的程序如下:


import pandas as pd

import numpy as np

import matplotlib as plt

from sklearn import model_selection

from sklearn.linear_model import LinearRegression

from sklearn.linear_model import Ridge

from sklearn.linear_model import RidgeCV

from sklearn.linear_model import Lasso

from sklearn.linear_model import ElasticNet

from sklearn.preprocessing import PolynomialFeatures

from sklearn.svm import SVR

from sklearn.ensemble import RandomForestRegressor

from sklearn.metrics import r2_score

from sklearn.model_selection import train_test_split

from sklearn.model_selection import GridSearchCV

from sklearn.metrics import mean_squared_error

from math import sqrt

from sklearn.datasets import load_diabetes


diabetes_data= load_diabetes()

#print (diabetes_data.keys())

data1 = pd.DataFrame(data= np.c_[diabetes_data['data'], diabetes_data['target']],

                     columns= diabetes_data['feature_names'] + ['target'])

predictors= data1.drop('target', axis=1).values

target_df= data1['target'].values

X_train, X_test, y_train, y_test= train_test_split(predictors, target_df,test_size=0.30, random_state=42)


svr_reg = SVR(kernel = "rbf")

svr_reg.fit(X_train, y_train)


svr_reg_train= svr_reg.predict(X_train)

print("SVR Train RMSE: %.2f"

      % np.sqrt(mean_squared_error(y_train, svr_reg_train)))


print("SVR Train R^2 Score: %.2f"

      % r2_score(y_train, svr_reg_train))


svr_reg_test= svr_reg.predict(X_test)

print("SVR Test RMSE: %.2f"

      % np.sqrt(mean_squared_error(y_test, svr_reg_test)))


print("SVR Test R^2 Score: %.2f"

      % r2_score(y_test, svr_reg_test))


温温酱
浏览 127回答 1
1回答

慕村9548890

首先,内核的有效性取决于数据——这就是内置各种选项的原因。当一种选择不起作用时,请随意尝试其他选择。例如,svr_reg = SVR(kernel="sigmoid")提高test R^2to 0.35,这与您之前的结果更接近。我相信该程序没有出错,因为朴素的线性回归产生了test R^2 = 0.058。因此,test R^2 = 0.16径向基函数(rbf)内核确实获得了一些额外的精度。它只是碰巧不太适合数据特征。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python