我对建模技术有点新,我试图比较SVR和线性回归。我用f(x)= 5x + 10的线性函数来生成训练和测试数据集。我已经写了下面的代码片段至今:建模支持向量回归(SVR)与线性回归
import csv
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
with open('test.csv', 'r') as f1:
train_dataframe = pd.read_csv(f1)
X_train = train_dataframe.iloc[:30,(0)]
y_train = train_dataframe.iloc[:30,(1)]
with open('test.csv','r') as f2:
test_dataframe = pd.read_csv(f2)
X_test = test_dataframe.iloc[30:,(0)]
y_test = test_dataframe.iloc[30:,(1)]
svr = svm.SVR(kernel="rbf", gamma=0.1)
log = LinearRegression()
svr.fit(X_train.reshape(-1,1),y_train)
log.fit(X_train.reshape(-1,1), y_train)
predSVR = svr.predict(X_test.reshape(-1,1))
predLog = log.predict(X_test.reshape(-1,1))
plt.plot(X_test, y_test, label='true data')
plt.plot(X_test, predSVR, 'co', label='SVR')
plt.plot(X_test, predLog, 'mo', label='LogReg')
plt.legend()
plt.show()
正如你可以在图片中看到,线性回归工作正常,但SVM具有较差的预测精度。
请让我知道,如果你的任何建议,以解决这一问题。
感谢
当我使用R(与包e1071这仅仅是一个结合LIBSVM)做同样的事情(即SVM回归与RBF内核)我得到合理的结果。我怀疑是因为python相关的原因,或者它与SVR和/或内核的超参数的默认设置(gamma,epsilon,cost C,...)有关...... –
@araz,did你设法解决它亲爱的?我坚持相同的问题,你可以在这里看到它(http://stackoverflow.com/questions/40529975/support-vector-regression-prediction-graph),我会很感激你的帮助。 – Mahsolid