好的,下面的svm函数有问题:
第二行
win = ...未使用,将导致错误。删除它。
def predict_win(X, y, x): win = np.reshape(X,(len(X), 1)) # <----This line svr_lin = SVR(kernel= 'linear', C= 1e3) svr_poly = SVR(kernel= 'poly', C= 1e3, degree= 2) svr_rbf = SVR(kernel= 'rbf', C= 1e3, gamma= 0.1) svr_rbf.fit(X, y) svr_lin.fit(X, y) svr_poly.fit(X, y) plt.scatter(X, y, color= 'black', label= 'Data') plt.plot(y, svr_rbf.predict(X), color= 'red', label= 'RBF model') plt.plot(y,svr_lin.predict(X), color= 'green', label= 'Linear model') plt.plot(y,svr_poly.predict(X), color= 'blue', label= 'Polynomial model') plt.xlabel('X, other features') plt.ylabel('win') plt.title('Support Vector Regression') plt.legend() plt.show() return svr_rbf.predict(x)[0], svr_lin.predict(x)[0], svr_poly.predict(x)[0]其次,我不知道为什么有读取CSV的完整功能。忽略它并使用熊猫。这是将起作用的示例代码:
from sklearn import svmimport pandas as pdimport numpy as npimport matplotlib.pyplot as pltdef predict_win(X,y,x): svr_lin = svm.SVR(kernel='linear',C=1e3) svr_poly = svm.SVR(kernel='poly',C=1e3, degree=2) svr_rbf = svm.SVR(kernel='rbf',C=1e3,gamma=0.1) svr_rbf.fit(X,y) svr_lin.fit(X,y) svr_poly.fit(X,y) plt.plot(y,svr_rbf.predict(X),color='red',label='RBF model') plt.plot(y,svr_lin.predict(X),color='green',label='Linear model') plt.plot(y,svr_poly.predict(X),color='blue', label='Polynomial model') plt.xlabel('X, other features') plt.ylabel('win') plt.title('Support Vector Regression') plt.legend() plt.show() return [svr_rbf.predict(x)[0],svr_lin.predict(x)[0],svr_poly.predict(x)[0]]df = pd.read_csv('data.csv')data_np_array = df.valuesy = np.ndarray.copy(data_np_array[:,6])Xleft = np.ndarray.copy(data_np_array[:,:6])Xright = np.ndarray.copy(data_np_array[:,7:])X = np.hstack((Xleft,Xright))x0 = np.ndarray.copy(X[0,:])xp = predict_win(X,y,x0)percent_off = [min(data_np_array[0,2],prediction)/max(data_np_array[0,2],prediction) for prediction in xp]在中间步骤中,您需要清理导入的数据,将其从数据帧转换为numpy数组,将第7列复制为适合的回归值,从训练数据中删除它,并重建新的数组,然后再拟合为SVR。
df = pd.read_csv('data.csv')data_np_array = df.valuesy = np.ndarray.copy(data_np_array[:,6])Xleft = np.ndarray.copy(data_np_array[:,:6])Xright = np.ndarray.copy(data_np_array[:,7:])X = np.hstack((Xleft,Xright))让我知道这些方法是否有效。我只是从上面的数据表中提取了几行。



