支持向量机是一类监督学习算法,实现二分类,其决策边界是对学习样本求解的最大边距超平面。
课程代码:
import numpy as np
my_seed = 2017
np.random.seed(my_seed)
import random
random.seed(my_seed)import matplotlib
import matplotlib.pyplot as plt
matplotlib.rcParams['font.family'] = 'SimHei'
data_set_name = "ec_data"
all_data = np.fromfile(data_set_name)/(1024 * 1024)
sequence_len = 10
X = []
Y = []
for i in range(len(all_data)-sequence_len):
X.append(all_data[i:i+sequence_len])
Y.append(all_data[i+sequence_len])
X = np.array(X)
Y = np.array(Y)
from sklearn.model_selection import train_test_split
默认shufft
X_train, X_test, Y_train, Y_test = train_test_split(X, Y, test_size=0.05)
from sklearn import svm
SVR = svm.SVR()
SVR.fit(X_train, Y_train)
Y_predict = SVR.predict(X_test)
预测的值
Y_test_predict = Y_predict
真实值
Y_test_real = Y_test
fig = plt.figure(figsize=(15, 6))
fig.suptitle(data_set_name)
x = np.arange(100, 150, 1)
plt.subplots_adjust(wspace =0, hspace =0.5)#调整子图间距
plt.subplot(2,1,1)
plt.plot(x,Y_test_predict[100:150],label="预测值")
plt.plot(x,Y_test_real[100:150],label="真实值")
plt.ylabel('流量大小(Mb)')
plt.legend(loc=1,ncol=1)
plt.subplot(2,1,2)
plt.ylabel('流量大小(Mb)')
plt.plot(Y_test_predict,label="预测值")
plt.plot(Y_test_real,label="真实值")
#指定图例位置,1右上角,2左上角,3右下角,4左下角,0自动适应图像
plt.legend(loc=0,ncol=1)
plt.legend(loc=1,ncol=1)
plt.savefig(data_set_name+"_svm_predict.png",dpi=400)