用于 SVR 回归的 Scikit Learn 包问题
Issue with Scikit Learn Package for SVR Regression
我正在尝试使用 Scikit Learn Package 拟合 SVM 回归模型,但它没有像我预期的那样工作。
你能帮我找出错误吗?我想使用的代码是:
from sklearn.svm import SVR
import numpy as np
X = []
x = np.arange(0, 20)
y = [3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68]
X.append(x)
clf = SVR(verbose=1)
clf.fit(np.transpose(X), y)
print("Expecting Result:")
print(y)
print("Predicted Result:")
print(clf.predict(np.transpose(X)))
我的输出是:
[LibSVM]*
optimization finished, #iter = 10
obj = -421.488272, rho = -30.500000
nSV = 20, nBSV = 20
Expecting Result:
[3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68]
Predicted Result:
[ 29.1136814 28.74580196 28.72748632 28.72736291 28.7273628
28.7273628 28.72736302 28.72760984 28.76424112 29.5 31.5
32.23575888 32.27239016 32.27263698 32.2726372 32.2726372
32.27263709 32.27251368 32.25419804 31.8863186 ]
我们可以看到预测结果与训练数据相差甚远。
我怎样才能提高拟合度?
谢谢
大卫
这是一种边缘情况,其中 RBF(scikit-learn 上 SVM 的默认值)核不能很好地工作。
将 SVR 行更改为:
clf = SVR(verbose=1, kernel='linear')
你会看到更合理的结果。
[LibSVM]Expecting Result:
[3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68]
Predicted Result:
[ -6.9 -2.9 1.1 5.1 9.1 13.1 17.1 21.1 25.1 29.1 33.1 37.1
41.1 45.1 49.1 53.1 57.1 61.1 65.1 69.1]
我知道您只是想了解 SVM 的工作原理。查看 this 博客 post 了解 RBF 内核的工作原理。
我正在尝试使用 Scikit Learn Package 拟合 SVM 回归模型,但它没有像我预期的那样工作。
你能帮我找出错误吗?我想使用的代码是:
from sklearn.svm import SVR
import numpy as np
X = []
x = np.arange(0, 20)
y = [3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68]
X.append(x)
clf = SVR(verbose=1)
clf.fit(np.transpose(X), y)
print("Expecting Result:")
print(y)
print("Predicted Result:")
print(clf.predict(np.transpose(X)))
我的输出是:
[LibSVM]*
optimization finished, #iter = 10
obj = -421.488272, rho = -30.500000
nSV = 20, nBSV = 20
Expecting Result:
[3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68]
Predicted Result:
[ 29.1136814 28.74580196 28.72748632 28.72736291 28.7273628
28.7273628 28.72736302 28.72760984 28.76424112 29.5 31.5
32.23575888 32.27239016 32.27263698 32.2726372 32.2726372
32.27263709 32.27251368 32.25419804 31.8863186 ]
我们可以看到预测结果与训练数据相差甚远。 我怎样才能提高拟合度?
谢谢
大卫
这是一种边缘情况,其中 RBF(scikit-learn 上 SVM 的默认值)核不能很好地工作。
将 SVR 行更改为:
clf = SVR(verbose=1, kernel='linear')
你会看到更合理的结果。
[LibSVM]Expecting Result:
[3, 4, 8, 4, 6, 9, 8, 12, 15, 26, 35, 40, 45, 54, 49, 59, 60, 62, 63, 68]
Predicted Result:
[ -6.9 -2.9 1.1 5.1 9.1 13.1 17.1 21.1 25.1 29.1 33.1 37.1
41.1 45.1 49.1 53.1 57.1 61.1 65.1 69.1]
我知道您只是想了解 SVM 的工作原理。查看 this 博客 post 了解 RBF 内核的工作原理。