通过向量回归、随机森林回归、线性回归和K-最近邻回归将预测结果绘制成图表进行展示

news2024/11/20 6:35:30

文章目录

  • 表格部分数据如下
  • 运行效果如下
  • 代码解析
  • 完整代码
  • 附件

表格部分数据如下

在这里插入图片描述
附件里会给出全部数据链接

运行效果如下

在这里插入图片描述
在这里插入图片描述

代码解析

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties

font = FontProperties(fname='PingFang Bold.ttf')

导入需要用到的Python库。pandas用于处理数据,numpy用于科学计算,matplotlib.pyplot用于绘图,FontProperties用于设置字体属性。在这里我们导入了中文字体PingFang Bold.ttf,以后进行绘图时就可以使用这个字体了。

df = pd.read_excel('中国各地现货棉花价格.xlsx')
df['指标名称'] = pd.to_datetime(df['指标名称'])
df.set_index('指标名称', inplace=True)
df.fillna(method='ffill', inplace=True)

打开了名为“中国各地现货棉花价格.xlsx”的Excel文件,并将数据存储到名为df的pandas DataFrame中。接下来,在DataFrame中执行以下操作:

  • 将“指标名称”列转换为datetime类型;
  • 将“指标名称”列设置为索引;
  • 使用前向填充(ffill)方法填充缺失值。
plt.figure(figsize=[15,8])
plt.plot(df['新疆:现货价:棉花'], label='新疆')
plt.plot(df['中国:现货价:平均价:棉花'], label='中国')
plt.plot(df['山东:现货价:棉花'], label='山东')
plt.plot(df['河南:现货价:棉花'], label='河南')
plt.plot(df['江苏:现货价:棉花'], label='江苏')
plt.plot(df['河北:现货价:棉花'], label='河北')
plt.plot(df['湖北:现货价:棉花'], label='湖北')
plt.plot(df['浙江:现货价:棉花'], label='浙江')
plt.plot(df['安徽:现货价:棉花'], label='安徽')
plt.plot(df['重庆:现货价:棉花'], label='重庆')
plt.plot(df['辽宁:现货价:棉花'], label='辽宁')
plt.plot(df['北京:现货价:棉花'], label='北京')
plt.plot(df['陕西:现货价:棉花'], label='陕西')
plt.plot(df['山西:现货价:棉花'], label='山西')
plt.plot(df['中国棉花价格指数:328'], label='中国棉花价格指数:328')
plt.plot(df['中国棉花价格指数:229'], label='中国棉花价格指数:229')
plt.plot(df['中国棉花价格指数:527'], label='中国棉花价格指数:527')
plt.legend(loc='upper left', prop=font)
plt.xlabel('时间', fontproperties=font)
plt.ylabel('价格', fontproperties=font)
plt.title('各地棉花现货价格趋势', fontproperties=font)
plt.show()

绘制了各个地区棉花现货价格趋势图。首先使用matplotlib.pyplot库的figure()函数创建一个大小为15*8的绘图空间,然后使用plot()函数将各地棉花现货价格数据绘制到同一张图表上,并为每个数据系列添加了标签和线条颜色。最后添加图例、横纵坐标标题和图表标题,并调用show()函数显示图表。

train = df.iloc[:-10, :]
test = df.iloc[-10:, :]

将读取的数据集拆分成前面的训练集和后面的测试集。这里将DataFrame对象转换为了numpy数组,并使用“最后10个数据”作为测试集,“除了最后10个数据以外的数据”作为训练集。

X_train = train.drop('中国棉花价格指数:527', axis=1)
y_train = train['中国棉花价格指数:527']
X_test = test.drop('中国棉花价格指数:527', axis=1)
y_test = test['中国棉花价格指数:527']

通过drop()函数删除’target’列,获取输入和输出数据。在这里输入数据由除了中国棉花价格指数:527以外的数据组成,而输出数据只包含中国棉花价格指数:527这一列。

svr = SVR(kernel='rbf', C=10, gamma='auto')
svr.fit(X_train, y_train)

rf = RandomForestRegressor(n_estimators=100, random_state=0, criterion='mse', max_depth=None,
                            min_samples_split=2, min_samples_leaf=1, max_features='auto',
                            bootstrap=True, n_jobs=-1)
rf.fit(X_train, y_train)

knn = KNeighborsRegressor(n_neighbors=5, weights='distance')
knn.fit(X_train, y_train)

lr = LinearRegression()
lr.fit(X_train, y_train)

定义了四个回归模型(支持向量回归、随机森林回归、线性回归和K-最近邻回归),并使用fit()函数基于训练集数据对这些模型进行训练。参数的设置需要根据实际情况和调参结果来进行调整。

svr_pred = svr.predict(X_test)
rf_pred = rf.predict(X_test)
knn_pred = knn.predict(X_test)
lr_pred = lr.predict(X_test)

使用 predict() 函数对测试集进行预测,得到四个回归模型的预测值。

plt.figure(figsize=[15,8])
plt.plot(test['中国棉花价格指数:527'].values, label='实际值')
plt.plot(svr_pred, label='支持向量回归')
plt.plot(rf_pred, label='随机森林回归')
plt.plot(knn_pred, label='K-最近邻回归')
plt.plot(lr_pred, label='线性回归')
plt.legend(loc='upper left', prop=font)
plt.xlabel('时间', fontproperties=font)
plt.ylabel('价格', fontproperties=font)
plt.title('不同算法的中国棉花价格指数预测', fontproperties=font)
plt.show()

将四种回归模型的预测结果与实际值一起绘制成图表,以便于对预测结果进行比较和评估。其中实际值来自测试集中的数据。

完整代码


# 导入必要的库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.font_manager import FontProperties
# 创建字体对象
font = FontProperties(fname='PingFang Bold.ttf')

# from matplotlib.font_manager import FontProperties
# pd.set_option('display.max_rows', None)  # 显示所有行
# pd.set_option('display.max_columns', None) # 显示所有列
# 读取数据
df = pd.read_excel('中国各地现货棉花价格.xlsx')

# 将时间戳字段转换为 datetime 类型
df['指标名称'] = pd.to_datetime(df['指标名称'])

# 设定时间戳为数据索引
df.set_index('指标名称', inplace=True)

# 使用缺失值前向填充方法填充缺失值
df.fillna(method='ffill', inplace=True)

# 查看数据框结构
# print(df)



# 绘制每个地区的棉花价格
plt.figure(figsize=[15,8])
plt.plot(df['新疆:现货价:棉花'], label='新疆')
plt.plot(df['中国:现货价:平均价:棉花'], label='中国')
plt.plot(df['山东:现货价:棉花'], label='山东')
plt.plot(df['河南:现货价:棉花'], label='河南')
plt.plot(df['江苏:现货价:棉花'], label='江苏')
plt.plot(df['河北:现货价:棉花'], label='河北')
plt.plot(df['湖北:现货价:棉花'], label='湖北')
plt.plot(df['浙江:现货价:棉花'], label='浙江')
plt.plot(df['安徽:现货价:棉花'], label='安徽')
plt.plot(df['重庆:现货价:棉花'], label='重庆')
plt.plot(df['辽宁:现货价:棉花'], label='辽宁')
plt.plot(df['北京:现货价:棉花'], label='北京')
plt.plot(df['陕西:现货价:棉花'], label='陕西')
plt.plot(df['山西:现货价:棉花'], label='山西')
plt.plot(df['中国棉花价格指数:328'], label='中国棉花价格指数:328')
plt.plot(df['中国棉花价格指数:229'], label='中国棉花价格指数:229')

plt.plot(df['中国棉花价格指数:527'], label='中国棉花价格指数:527')
plt.legend(loc='upper left', prop=font)
plt.xlabel('时间', fontproperties=font)
plt.ylabel('价格', fontproperties=font)
plt.title('各地棉花现货价格趋势', fontproperties=font)
plt.show()

# 划分数据集
train = df.iloc[:-10, :]
test = df.iloc[-10:, :]


# 支持向量回归
from sklearn.svm import SVR

X_train = train.drop('中国棉花价格指数:527', axis=1)
y_train = train['中国棉花价格指数:527']
X_test = test.drop('中国棉花价格指数:527', axis=1)
y_test = test['中国棉花价格指数:527']

# svr = SVR(kernel='poly', C=100, gamma='auto', degree=3, epsilon=.1, coef0=1)
# svr.fit(X_train, y_train)
#
# # # 随机森林回归
# from sklearn.ensemble import RandomForestRegressor
#
# rf = RandomForestRegressor(n_estimators=10, random_state=0)
# rf.fit(X_train, y_train)
#
# # 线性回归
from sklearn.linear_model import LinearRegression

lr = LinearRegression()
lr.fit(X_train, y_train)
#
# # K-最近邻回归
# from sklearn.neighbors import KNeighborsRegressor
#
# knn = KNeighborsRegressor(n_neighbors=2)
# knn.fit(X_train, y_train)


svr = SVR(kernel='rbf', C=10, gamma='auto')
svr.fit(X_train, y_train)

# 随机森林回归
from sklearn.ensemble import RandomForestRegressor

rf = RandomForestRegressor(n_estimators=100, random_state=0, criterion='friedman_mse', max_depth=None,
                            min_samples_split=2, min_samples_leaf=1, max_features='auto',
                            bootstrap=True, n_jobs=-1)
rf.fit(X_train, y_train)


# K-最近邻回归
from sklearn.neighbors import KNeighborsRegressor

knn = KNeighborsRegressor(n_neighbors=5, weights='distance')
knn.fit(X_train, y_train)
# 预测
svr_pred = svr.predict(X_test)
rf_pred = rf.predict(X_test)
lr_pred = lr.predict(X_test)
knn_pred = knn.predict(X_test)
# print(test['中国棉花价格指数:527'].values)

# 展示预测结果
plt.figure(figsize=[15,8])
plt.plot(test['中国棉花价格指数:527'].values, label='实际值')
plt.plot(svr_pred, label='支持向量回归')
plt.plot(rf_pred, label='随机森林回归')
plt.plot(lr_pred, label='线性回归')
plt.plot(knn_pred, label='K-最近邻回归')
plt.legend(loc='upper left', prop=font)
plt.xlabel('时间', fontproperties=font)
plt.ylabel('价格', fontproperties=font)
plt.title('不同算法的中国棉花价格指数预测', fontproperties=font)
plt.show()

附件

链接: https://pan.baidu.com/s/1qa99ntHsozgqB2xliVYd7A 提取码: sp9h
–来自百度网盘超级会员v6的分享

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/641026.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

webpack自动化打包webpack-dev-server

在前面的章节中我们每次改完要打包的资源文件,和配置文件都是是输入npx webpack命令手动打包的,那么有没有什么办法可以监听到我们代码的改动,在保存时就自动打包呢? 答案是当然有,不然哪些框架的脚手架是怎么实现保存…

Redis命令-数据结构String类型和Hash类型

1. String类型 字符串类型,Redis中最简单的存储类型 底层都是字节数组形式存储,只不过是编码方式不同; 字符串类型的最大空间不能超过512m; SET/GET/MSET/MGET使用示例: INCR使用示例: INCRBY自增并指定步长…

CSS粘性定位 - 它的真正工作原理!

本文首发于微信公众号:大迁世界, 我的微信:qq449245884,我会第一时间和你分享前端行业趋势,学习途径等等。 更多开源作品请看 GitHub https://github.com/qq449245884/xiaozhi ,包含一线大厂面试完整考点、资料以及我的…

STM32单片机蓝牙APP智能温控风扇红外热释电

实践制作DIY- GC0144-蓝牙APP智能温控风扇 基于STM32单片机设计---蓝牙APP智能温控风扇 二、功能介绍: 硬件组成:STM32F103C最小系统板DS18B20温度湿度OLEDHC-05蓝牙模块SR602红外热释电人体检测5V直流风扇多个按键(开关键,下限减…

【WinForm项目】C#模拟交通信号灯|WinForm交通红绿灯

文章目录 前言一、运行效果二、界面设计三、代码:总结 前言 交通信号灯十字路口通行原理图。 实际上归类为四大类: 南北双向直行东西双向直行一对黑色粗线的左转一对红色粗线的左转。 状态逻辑图如下图所示:假定通行顺序为:南…

JavaWeb笔记(四)

前端基础 **提醒:**还没有申请到IDEA专业版本授权的同学要抓紧了,很快就需要用到。 经过前面基础内容的学习,现在我们就可以正式地进入Web开发的学习当中啦~ 本章节会讲解前端基础内容(如果已经学习过,可以直接跳到…

一文说透:低代码开发平台和零代码平台区别是什么?

低代码开发平台和零代码平台区别是什么? 一个简单的例子就可以解释清楚。 假设你想入住一套新房,回看住房变迁史: 最原始方式是:自己建造往后一点,交付“毛坯房”:开发商统一建小区,不需要自…

5本豆瓣高分Python技术书籍

Python的经典书籍有很多,推荐五本对初学者来说非常实用的入门书,豆瓣评分都在8以上。分别是: 《Python学习手册》,豆瓣8.2分《Python编程,从入门到实践》,豆瓣9.3分《Python Cookbook》,豆瓣9.…

如何优化ABAP程序

文章目录 1 Before code3 After code3 Performance4 Summary4.1 We don t use nested loop as possible as .4.2 We use useful data in the program .4.3 Take care history data . 1 Before code DATA:BEGIN OF LW_SZJE,ZJN TYPE P DECIMALS 1, "折旧年KANSW LIKE A…

从零玩转系列之微信支付实战PC端接口搭建

一、前言 halo各位大佬很久没更新了最近在搞微信支付,因商户号审核了我半个月和小程序认证也找了资料并且将商户号和小程序进行关联,至此微信支付Native支付完成.此篇文章过长我将分几个阶段的文章发布(项目源码都有,小程序和PC端) 在此之前已经更新了微信支付开篇、微信支付安…

阿里云+Nginx Proxy Manager 设置二级域名

这里我们以购买阿里云的域名为例 有域名的作用:当我们在浏览器上面访问主机的某一个端口时,必须输入主机ip端口号,这就会非常的麻烦,而且也会暴露出我们的主机名,很不安全,因此域名的好处就是可以将我们的主…

开关电源-FPC入门知识

01功率因数补偿和功率因数校正 功率因数补偿:在上世纪五十年代,已经针对具有感性负载的交流用电器具的电压和电流不同相(图1)从而引起的供电效率低下提出了改进方法(由于感性负载的电流滞后所加电压,由于电…

JavaWeb笔记(二)

数据库基础 数据库是学习JavaWeb的一个前置,只有了解了数据库的操作和使用,我们才能更好地组织和管理网站应用产生的数据。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IJ1neG69-1686619058026)(null)] 什么是数据库 数…

2023中国纸业碳中和与可持续峰会,九月来袭!

制浆与造纸是资源密集型产业,具有高污染、高能耗的特点。“双碳”目标提出后,造纸行业同时面临需求和产能增长的生产现状与实现“双碳”目标的考验。如何在未来保证产量增长,还能实现节能减排和降耗,成为了所有制浆造纸及上下游产…

docker容器启动的问题 - docker容器和虚拟机的比较 - docker的底层隔离机制

目录 一、docker容器启动的问题? 二、什么是docker仓库? 三、虚拟机和docker容器的区别: docker的优势: docker的缺点: 对比: 四、docker的底层隔离机制 参考文献:LXC linux容器简介——…

前端项目架构怎么搭

前端项目架构 文章目录 **前端项目架构** **框架选型标准****异常处理****自动化构建** **(打包)****基础组件****公共方法封装****目录结构分配原则** 框架选型标准 ​ 框架的选型需要考虑很多因素,如该技术能否可以满足业务需求、浏览器支…

《大卫科波菲尔》社会网络分析

《大卫科波菲尔》社会网络分析 1.简介1.1数据集介绍1.2社会网络分析简介1.3《大卫科波菲尔》介绍 2.描述性统计3.网络概述4.社区发现5.好句摘抄6.总结和不足 1.简介 1.1数据集介绍 Newman教授的个人数据网站 网址:http://www-personal.umich.edu/~mejn/netdata/ 从…

网络设备容量测试该如何进行?

网络设备容量测试该如何进行? 网络设备容量测试是现代IT运维管理中的重要内容之一。随着企业对网络带宽需求的不断增加,为了更好地满足用户需求和提升网络性能,进行网络设备容量测试显得尤为重要。那么,网络设备容量测试该如何进行呢? 首先…

转行大数据该怎么学

大数据分析主要面向于离线计算。负责数据分析、报表统计等工作,重于数据价值的体现;数据的ETL调度,即E抽取、T转换、L加载,着重于离线数据的流转。虽然工作形式比较单一,但日常需求比较多,尤其是节假日的数…

UE特效案例 —— 武器附魔

一,环境配置 创建默认地形Landscape,如给地形上材质需确定比例;添加环境主光源DirectionalLight,设置相应的强度和颜色;PostProcessVolume设置曝光,设置Min/Max Brightness为1; 与关闭Game Sett…