我在sklearn-diabetes数据集上实现了多种机器学习算法,除了SVR之外,所有算法在测试子集上的R^2值大约为0.45。然而,当我使用SVR时,在测试子集上得到的R^2值为0.16。我在想这是因为SVR对于这个数据集来说是一个不好的算法选择,还是因为我实现得有问题。我的程序如下:
回答:
首先,核函数的有效性取决于数据——这是内置多种选项的原因。当一种方法不奏效时,请随意尝试其他选项。例如,
svr_reg = SVR(kernel="sigmoid")
将test R^2
提高到0.35
,这与您之前的结果更为接近。
我认为程序没有问题,因为一个简单的线性回归得到了test R^2 = 0.058
。因此,来自径向基函数(rbf)核的test R^2 = 0.16
确实获得了一些额外的准确性。只是它恰巧不太适合数据特征。