支持向量机回归SVR
线性、二次多项式、三次多项式
import matplotlib.pyplot as plt
import numpy as np
from sklearn import svm,datasets
diabetes = datasets.load_diabetes()
x_train = diabetes.data[:-20]
y_train = diabetes.target[:-20]
x_test = diabetes.data[-20:]
y_test = diabetes.target[-20:]
x0_test = x_test[:,2] #以第三项指标为数据
x0_train = x_train[:,2] #以第三项指标为数据
x0_test = x0_test[:,np.newaxis]
x0_train = x0_train[:,np.newaxis]
x0_test.sort(axis=0) #测试数据集必须按升序排列
x0_test = x0_test*100
x0_train = x0_train*100
svr = svm.SVR(kernel='linear',C=1000)
svr2 = svm.SVR(kernel='poly',C=1000,degree=2)
svr3 = svm.SVR(kernel='poly',C=1000,degree=3)
svr.fit(x0_train,y_train)
svr2.fit(x0_train,y_train)
svr3.fit(x0_train,y_train)
y = svr.predict(x0_test)
y2 = svr2.predict(x0_test)
y3 = svr3.predict(x0_test)
plt.scatter(x0_test,y_test,color='k')
plt.plot(x0_test,y,color='b')
plt.plot(x0_test,y2,color='r')
plt.plot(x0_test,y3,color='g')
plt.show()
参考:
法比奥·内利. Python数据分析实战:第2版.北京:人民邮电出版社, 2019.11.