需求如下:

需要先安装以下库:

# pip --default-timeout=1000 install numpy
# pip --default-timeout=1000 install scipy
# pip --default-timeout=1000 install matplotlib
# pip --default-timeout=1000 install scikit-learn
# pip --default-timeout=1000 install sklearn

这样安装可以设置超时时间,有的库安装时间比较长

运行结果截图:

实现代码如下:

# pip 导包如下:
# pip --default-timeout=1000 install numpy
# pip --default-timeout=1000 install scipy
# pip --default-timeout=1000 install matplotlib
# pip --default-timeout=1000 install scikit-learn
# pip --default-timeout=1000 install sklearnimport numpy as np
import sklearn
from sklearn import preprocessing
from sklearn.svm import SVR
import sklearn.model_selection as ms
import sklearn.svm as svm
import matplotlib.pyplot as plt
import sklearn.metrics as sm
from sklearn.model_selection import train_test_split
import warnings
warnings.filterwarnings("ignore")# 定义预测类
class Predictdata(object):# 初始化类def __init__(self):self.txt = 'traffic.txt' # 定义txt文件self.input_data = ['Tuesday', '13:35', 'San Francisco', 'yes']  # 列表定义预测样本self.random_state = 5 #初始化参数random_stateself.test_size = 0.25 #初始化参数test_sizeself.C = 10 # 初始化参数Cself.epsilon = 0.2 # 初始化参数epsilon# 读取数据 法一:def read_data(self):# 从traffic.txt文本加载数据, 指定数据类型位strX = np.loadtxt(self.txt, dtype=str, delimiter=',')# print('原始数据为', X)  # 打印加载出的数据# print("***"*15)return X  # 返回原始数据# # 读取数据 法二:# def read_data(self):#     input_file = 'traffic.txt'  # txt文件#     X = [] # 定义空列表#     count = 0  # 定义初始值#     with open(input_file, 'r') as f:  # 打开txt文件#         for line in f.readlines(): # 按行读取txt文件#             data = line[:-1].split(',') # 每行按,分割为列表#             X.append(data) # X追加data#     X = np.array(X)  # X列表转为数组#     print('原始数据为', X)  # 打印加载出的数据#     print("***"*15)#     return X  # 返回原始数据# 定义预测函数def predict(self, X, input_data):# 将数据标记编码label_encoder = []  # 定义空列表,存放LabelEncoderX_encoded = np.empty(X.shape)   # X.shape代表矩阵的形状,即几行几列,X_encoded存放转换后的数据集for i, item in enumerate(X[0]):  # 遍历X第一个元素及得到索引,i 索引, item 元素值if item.isdigit():  # 判断item元素是否只由数字组成X_encoded[:, i] = X[:, i]  # X_encoded第i个数据为X所有数组的第i个数据else:label_encoder.append(preprocessing.LabelEncoder())  # 需要为每个属性(分类)使用不同的标记编码器# X_encoded第i个数据为X所有数组的第i个数据经过最后一个标记编码器对应训练转化后的数据X_encoded[:, i] = label_encoder[-1].fit_transform(X[:, i])X = X_encoded[:, :-1].astype(int)   # 除了最后一个值外的所有值赋给Xy = X_encoded[:, -1].astype(int)    # 每一行最后一个值,也是流量大小,赋值给变量y# 随机划分训练集和测试集,训练集的特征值x_train 测试集的特征值x_test 训练集的目标值y_train 测试集的目标值y_test,x_train, x_test, y_train, y_test = train_test_split(X, y, random_state=self.random_state, test_size=self.test_size)# 指定测试集所占的比例为25%, 随机状态为5params = {'kernel': 'rbf', 'C': self.C, 'epsilon': self.epsilon} # 使用径向基函数,设置初始参数regressor = SVR(**params) # 建立SVRregressor.fit(x_train, y_train) # 训练集数据拟合模型regressor.fit(x_test, y_test) # 测试集数据拟合模型lw = 1x1 = np.arange(y_test.size)x2 = np.arange(y_train.size)y_pred_train = regressor.predict(x_train) # 对所有训练集样本x_train进行预测,交叉验证来检查回归器的性能:# print("Train Mean absolute error =", round(sm.mean_absolute_error(y_train, y_pred_train), 2)) # 输出训练集平均绝对值误差,精确到小数点后两位小数y_pred_test = regressor.predict(x_test) # 对所有测试集样本x_test进行预测,交叉验证来检查回归器的性能:# print("Test Mean absolute error =", round(sm.mean_absolute_error(y_test, y_pred_test), 2))  # 输出测试集平均绝对值误差,精确到小数点后两位小数'''训练集数据与预测数据'''plt.plot(x2, y_train, 'r.-', lw=lw, label='train')plt.plot(x2, y_pred_train, 'k.-', lw=lw, label='predict')plt.xlabel('data')plt.ylabel('target')plt.title('Support Vector Regression')plt.legend()plt.show()print('训练集平均绝对误差:{}'.format(round(sklearn.metrics.mean_absolute_error(y_pred_train, y_train), 2)))print('训练集均方误差MSE:{}'.format(round(sklearn.metrics.mean_squared_error(y_pred_train, y_train), 2)))print('训练集中位数绝对误差:{}'.format(round(sklearn.metrics.median_absolute_error(y_pred_train, y_train), 2)))print('训练集解释方差分:{}'.format(round(sklearn.metrics.explained_variance_score(y_pred_train, y_train), 2)))'''训练集误差'''fig = plt.figure()error_rbf = y_train - y_pred_trainerror_rbf = np.squeeze(error_rbf)plt.plot(x2, error_rbf, 'g.-', lw=lw, label='RBF model error')plt.xlabel('data')plt.ylabel('error')plt.title('The fitting error of each model')plt.legend()plt.show()R2_train = round(sklearn.metrics.r2_score(y_train, y_pred_train, sample_weight=None, multioutput='uniform_average'), 2) # 计算训练集R2得分print('*******训练集R2*******:', R2_train) # 输出训练集R2得分'''测试集数据与预测数据'''plt.plot(x1, y_test, 'r.-', lw=lw, label='test')plt.plot(x1, y_pred_test, 'k.-', lw=lw, label='predict')plt.xlabel('data')plt.ylabel('target')plt.title('Support Vector Regression')plt.legend()plt.show()print('测试集平均绝对误差:{}'.format(round(sklearn.metrics.mean_absolute_error(y_pred_test, y_test), 2)))print('测试集均方误差MSE:{}'.format(round(sklearn.metrics.mean_squared_error(y_pred_test, y_test), 2)))print('测试集中位数绝对误差:{}'.format(round(sklearn.metrics.median_absolute_error(y_pred_test, y_test), 2)))print('测试集解释方差分:{}'.format(round(sklearn.metrics.explained_variance_score(y_pred_test, y_test), 2)))'''测试集误差'''fig = plt.figure()error_rbf = y_test - y_pred_testerror_rbf = np.squeeze(error_rbf)plt.plot(x1, error_rbf, 'g.-', lw=lw, label='RBF model error')plt.xlabel('data')plt.ylabel('error')plt.title('The fitting error of each model')plt.legend()plt.show()R2_test = round(sklearn.metrics.r2_score(y_test, y_pred_test, sample_weight=None, multioutput='uniform_average'), 2) # 计算测试集R2得分print('*******测试集R2*******:', R2_test)  # 输出测试集R2得分input_data_encoded = [-1] * len(input_data) # 对样本数据示例进行编码测试count = 0  # 定义初始值# 对测试数据进行标记编码for i, item in enumerate(input_data):  # 遍历预测样本及得到索引,i 索引, item 样本元素值if item.isdigit():  # 判断item元素是否只由数字组成input_data_encoded[i] = int(input_data[i])  # input_data_encoded第i个数据为input_data第i个数据转换为intelse:input_data_encoded[i] = int(label_encoder[count].transform([input_data[i]]))# input_data_encoded第i个数据为input_data第i个数据经过第count个标记编码器对应转化后数据再转换为intcount = count + 1   # 初始值+1input_data_encoded = np.array(input_data_encoded)  # 把input_data_encoded由列表转化为数组input_data_encoded = input_data_encoded.reshape(1, len(input_data))  # 将input_data_encoded转化为1*len(input_data)的形状print("Predicted traffic:", int(regressor.predict(input_data_encoded)[0]))  # 为特定数据点预测并打印分类结果并保留预测结果的整数部分# 定义预测函数执行过程def process(self):X = self.read_data() # 执行读取数据函数self.predict(X, self.input_data) # 执行预测函数if __name__ == '__main__':predict = Predictdata()  # 实例化类Predictdatapredict.process()  # 执行预测函数

python作业——SVM预测交通流量相关推荐

  1. 机器学习(四)SVM之根据相关数据预测交通流量

    根据相关数据预测交通流量 实验内容 准备工作 详细步骤 实验结果 实验内容 我们将建立一个SVM来根据相关数据预测交通流量. 准备工作 我们将要使用的数据集可以在https://archive.ics ...

  2. 深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Encoder-Decoder LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM是一种时间递归神经网络,适合于处理和预测时间序列中间隔和延迟相对较长的重要 ...

  3. 深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:LSTM算法构建时间序列多变量模型预测交通流量+代码实战 LSTM(Long Short Term Memory Network)长短时记忆网络,是一种改进之后的循环神经网 ...

  4. 深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:Bi-LSTM算法构建时间序列多变量模型预测交通流量+代码实战 人类并不是每时每刻都从一片空白的大脑开始他们的思考.在你阅读这篇文章时候,你都是基于自己已经拥有的对先前所见 ...

  5. 深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:卷积神经网络(CNN)算法构建时间序列多变量模型预测交通流量+代码实战 卷积神经网络,听起来像是计算机科学.生物学和数学的诡异组合,但它们已经成为计算机视觉领域中最具影响力 ...

  6. 深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战

    深度学习多变量时间序列预测:GRU算法构建时间序列多变量模型预测交通流量+代码实战 GRU是LSTM网络的一种效果很好的变体,它较LSTM网络的结构更加简单,而且效果也很好,因此也是当前非常流形的一种 ...

  7. 【文献阅读】ST-GDN——图神经网络预测交通流量(Xiyue Zhang等人,ArXiv,2021)

    一.背景 文章题目:<Traffic Flow Forecasting with Spatial-Temporal Graph Diffusion Network> 文献下载地址:2110 ...

  8. 机器学习作业-交通流量预测综述

    文章目录 Graph Neural Network for Traffic Forecasting: A Survey 摘要 1.相关介绍 2.交通流量预测的问题 3.图神经网络在交通预测上的应用 4 ...

  9. python sklearn Rideg岭回归--交通流量预测实例

    岭回归 岭回归为线性回归的优化 对于一般线性回归问题 参数的求解采用的是最小二乘法,其目标函数:argmin||Xw-y||^2 参数w的求解,也可以使用如下矩阵方法进行:w=(XTX)-1*XTy ...

最新文章

  1. 大盘过4000,注意风险~
  2. python numpy使用
  3. 你的电脑上的应用需要使用以下window功能.NET Framework3.5(包括.NET2.0和3.0)——解决方案
  4. 启动oracle的三过程
  5. symfony api 错误响应_如何设计一个牛逼的 API 接口
  6. Eureka出现Root name ‘timestamp‘ does not match expected (‘instance‘) for type xxx的错误,如何解决?
  7. 毕业后才认清的15个道理
  8. [翻译]当SA帐号丢失时怎么办
  9. Ubuntu ssh 登陆问题
  10. begin.lydsy 入门OJ题库:1104:那些N位数
  11. dbForge Schema Compare for MySQL入门教程:预览架构同步脚本和同步架构
  12. 微软WIP漏洞奖励计划新增基于攻击场景的奖励类别,最高$10万
  13. Cocos2dx游戏开发系列笔记8:开搞一个射击游戏《战神传说》//就个打飞机的
  14. ArcEngine中放大、缩小、移动等功能实现的方法
  15. 【论文阅读笔记】FCOS代码结合论文阅读
  16. 怎么用python画椭圆_python画椭圆
  17. 秒级去重:ClickHouse在腾讯海量游戏营销活动分析中的应用
  18. php 数字上下选取,选择性粘贴数值快捷键是什么
  19. 动画练习-360度旋转-animation
  20. D语言/DLang 2.085.1 发布,修复性迭代

热门文章

  1. 算法导论(三)--分治法
  2. 各大手机厂商开发者文档网址
  3. STI解读A:STI测量方法
  4. Win10深度学习环境配置(CUDA+cuDNN+TensorFlow-gpu+Keras)
  5. ora-28040解决方法
  6. 为 Kubernetes 提供 CI/CD 服务 Jenkins X
  7. Java EXCEL 表格导入导出(带下拉选-带VLOOKUP函数封装)
  8. java如何实排班表时间算法_安卓自定义View-日历型排班表-CalendarScheduleView
  9. 智能运维之告警聚合技术介绍
  10. 信号signal ---带数据的信号的发送及安装