我在 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))
慕村9548890
相关分类