亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SciKit-Learn 糖尿病數據集上支持向量回歸的 R^2 得分較低

SciKit-Learn 糖尿病數據集上支持向量回歸的 R^2 得分較低

溫溫醬 2023-10-05 16:39:58
我在 sklearn-diabetes 數據集上實現了許多 ML 算法,除了 SVR 之外,所有這些算法在測試子集上的 R^2 約為 0.45。不過,當我進行 SVR 時,我在測試子集上得到的 R^2 分數為 0.16。我想知道這是否是因為 SVR 對于數據集來說是一個糟糕的算法選擇,或者是因為我錯誤地實現了它。我的程序如下:import pandas as pdimport numpy as npimport matplotlib as pltfrom sklearn import model_selectionfrom sklearn.linear_model import LinearRegressionfrom sklearn.linear_model import Ridgefrom sklearn.linear_model import RidgeCVfrom sklearn.linear_model import Lassofrom sklearn.linear_model import ElasticNetfrom sklearn.preprocessing import PolynomialFeaturesfrom sklearn.svm import SVRfrom sklearn.ensemble import RandomForestRegressorfrom sklearn.metrics import r2_scorefrom sklearn.model_selection import train_test_splitfrom sklearn.model_selection import GridSearchCVfrom sklearn.metrics import mean_squared_errorfrom math import sqrtfrom sklearn.datasets import load_diabetesdiabetes_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).valuestarget_df= data1['target'].valuesX_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))
查看完整描述

1 回答

?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

首先,內核的有效性取決于數據——這就是內置各種選項的原因。當一種選擇不起作用時,請隨意嘗試其他選擇。例如,

svr_reg = SVR(kernel="sigmoid")

提高test R^2to 0.35,這與您之前的結果更接近。

我相信該程序沒有出錯,因為樸素的線性回歸產生了test R^2 = 0.058。因此,test R^2 = 0.16徑向基函數(rbf)內核確實獲得了一些額外的精度。它只是碰巧不太適合數據特征。


查看完整回答
反對 回復 2023-10-05
  • 1 回答
  • 0 關注
  • 166 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號