我打算通过在 sklearn 附带的波士顿房价数据集 (sklearn.datasets.load_boston) 上运行 sklearn 支持向量回归包来测试我的实现。
在玩了一段时间之后(尝试不同的正则化和管参数,案例的随机化和交叉验证)并始终预测一条平坦的线,我现在不知所措我失败的地方。更引人注目的是,当我使用 sklearn.datasets 包 (load_diabetes) 附带的糖尿病数据集时,我得到了更好的预测。
这是复制的代码:
import numpy as np
from sklearn.svm import SVR
from matplotlib import pyplot as plt
from sklearn.datasets import load_boston
from sklearn.datasets import load_diabetes
from sklearn.linear_model import LinearRegression
# data = load_diabetes()
data = load_boston()
X = data.data
y = data.target
# prepare the training and testing data for the model
nCases = len(y)
nTrain = np.floor(nCases / 2)
trainX = X[:nTrain]
trainY = y[:nTrain]
testX = X[nTrain:]
testY = y[nTrain:]
svr = SVR(kernel='rbf', C=1000)
log = LinearRegression()
# train both models
svr.fit(trainX, trainY)
log.fit(trainX, trainY)
# predict test labels from both models
predLog = log.predict(testX)
predSvr = svr.predict(testX)
# show it on the plot
plt.plot(testY, testY, label='true data')
plt.plot(testY, predSvr, 'co', label='SVR')
plt.plot(testY, predLog, 'mo', label='LogReg')
plt.legend()
plt.show()
现在我的问题是:你们中是否有人成功地使用了这个数据集和支持向量回归模型,或者知道我做错了什么?我非常感谢您的建议!
下面是上面脚本这个结果的结果: