#!/usr/bin/env python
# coding: utf-8
# In[1]:
import numpy as np # 导入numpy库
import matplotlib.pyplot as plt # 导入matplotlib库,用于绘图
import pandas as pd # 导入pandas库,用于数据处理和分析
from sklearn import preprocessing # 导入preprocessing模块,用于数据预处理
from sklearn.metrics import mean_squared_error # 导入均方根误差函数
from math import sqrt # 导入sqrt函数,用于计算平方根
from sklearn.neural_network import MLPRegressor # 导入MLPRegressor类,用于多层感知器回归模型
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score # 导入评估指标函数
import math # 导入math库
from numpy import concatenate # 导入concatenate函数,用于数组拼接
# In[3]:
feanum = 1 # 特征数量
window = 5 # 窗口大小
Ra = 0.8 # 训练集所占比例
#更多模型咸鱼搜索机器学习之心,支持模型定制
df1 = pd.read_csv('焦作.csv', usecols=[1]) # 从CSV文件中读取数据,仅使用第二列数据
train_d, test_d = df1[0:int(len(df1)*Ra)], df1[int(len(df1)*Ra):] # 将数据集划分为训练集和测试集
#更多模型咸鱼搜索机器学习之心,支持模型定制
# In[3]:
min_max_scaler = preprocessing.MinMaxScaler() # 创建MinMaxScaler对象
df0 = min_max_scaler.fit_transform(df1) # 对df1进行归一化处理
df = pd.DataFrame(df0, columns=df1.columns) # 将归一化后的数据转换为DataFrame,列名与df1保持一致
#更多模型咸鱼搜索机器学习之心,支持模型定制
# In[4]:
stock = df # 将归一化后的DataFrame赋值给stock
seq_len = window # 设置序列长度为window
amount_of_features = len(stock.columns) # 获取列数,即特征数量
data = stock.values # 将DataFrame转换为矩阵,即将stock的值提取出来
sequence_length = seq_len + 1 # 序列长度加1
result = []
for index in range(len(data) - sequence_length): # 循环 len(data) - sequence_length 次
result.append(data[index: index + sequence_length]) # 将每个窗口大小为sequence_length的数据段添加到result中
result = np.array(result) # 将result转换为NumPy数组
#更多模型咸鱼搜索机器学习之心,支持模型定制
cut = len(test_d) # 定义切割点,即测试集的长度
train = result[:-cut, :] # 切割训练集,取前面的部分作为训练集
x_train = train[:, :-1] # 训练集的特征部分,即除最后一列外的所有列
y_train = train[:, -1][:, -1] # 训练集的目标值,即最后一列的最后一个元素
x_test = result[-cut:, :-1] # 测试集的特征部分,即除最后一列外的所有列
y_test = result[-cut:, -1][:, -1] # 测试集的目标值,即最后一列的最后一个元素
X_train = np.reshape(x_train, (x_train.shape[0], x_train.shape[1], amount_of_features)) # 将x_train的形状调整为(样本数量, 时间步长, 特征数量)
X_test = np.reshape(x_test, (x_test.shape[0], x_test.shape[1], amount_of_features)) # 将x_test的形状调整为(样本数量, 时间步长, 特征数量)
# In[5]:
X_train = X_train.reshape(len(X_train), window) # 将X_train的形状调整为(样本数量, 窗口大小)
y_train = y_train.reshape(len(X_train)) # 将y_train的形状调整为(样本数量,)
X_test = X_test.reshape(cut, window) # 将X_test的形状调整为(样本数量, 窗口大小)
y_test = y_test.reshape(cut) # 将y_test的形状调整为(样本数量,)
# In[6]:
clf = MLPRegressor(max_iter=100, hidden_layer_sizes=(150)) # 创建一个MLPRegressor对象,设置最大迭代次数为100,隐藏层大小为150
#更多模型咸鱼搜索机器学习之心,支持模型定制
model = clf.fit(X_train, y_train) # 使用训练数据X_train和标签y_train拟合模型
#更多模型咸鱼搜索机器学习之心,支持模型定制
# In[7]:
#在训练集上的拟合结果
y_train_predict=model.predict(X_train)
#在测试集上的预测
y_test_predict=model.predict(X_test)
# In[8]:
X = pd.DataFrame(y_test) # 将y_test转换为DataFrame,并将其赋值给变量X
Y = pd.DataFrame(y_test_predict) # 将y_test_predict转换为DataFrame,并将其赋值给变量Y
X = min_max_scaler.inverse_transform(X) # 使用min_max_scaler对X进行逆标准化
Y = min_max_scaler.inverse_transform(Y) # 使用min_max_scaler对Y进行逆标准化
# In[9]:
testScore = math.sqrt(mean_squared_error(X, Y)) # 计算X和Y之间的均方根误差(RMSE)
print('RMSE为:%.3f ' %(testScore)) # 打印RMSE的值
#更多模型咸鱼搜索机器学习之心,支持模型定制
testScore = mean_absolute_error(X, Y) # 计算X和Y之间的平均绝对误差(MAE)
print('MAE为:%.3f ' %(testScore)) # 打印MAE的值
testScore = r2_score(X, Y) # 计算X和Y之间的R平方值(R2)
print('R2为:%.3f ' %(testScore)) # 打印R2的值
# In[10]:
plt.figure(figsize=(10, 4), dpi=150) # 创建一个图形窗口,设置图形的尺寸为宽度10英寸,高度4英寸,dpi为150
plt.plot(X, label="Actual", color='red', linewidth=4) # 绘制实际值曲线,设置线条颜色为红色,线宽为4
plt.plot(Y, color='blue', label='Prediction', linewidth=2.5, linestyle="--") # 绘制预测值曲线,设置线条颜色为蓝色,线宽为2.5,线型为虚线
plt.title('Prediction', size=15) # 设置图表的标题为'Prediction',字体大小为15
plt.ylabel('AQI', size=15) # 设置y轴的标签为'AQI',字体大小为15
plt.xlabel('time/day', size=15) # 设置x轴的标签为'time/day',字体大小为15
plt.legend() # 显示图例
plt.show() # 显示图形
# In[ ]:
没有合适的资源?快使用搜索试试~ 我知道了~
Python实现MLP时间序列预测(完整源码和数据)
共3个文件
csv:2个
py:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 1 下载量 171 浏览量
2024-04-19
08:41:29
上传
评论 1
收藏 46KB ZIP 举报
温馨提示
1.Python实现MLP时间序列预测(完整源码和数据) anaconda + pycharm + python +Tensorflow 注意事项:保姆级注释,几乎一行一注释,方便小白入门学习! 2.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 3.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。 4.作者介绍:某大厂资深算法工程师,从事Matlab、Python算法仿真工作8年;擅长智能优化算法、神经网络预测、信号处理、元胞自动机等多种领域的算法仿真实验,更多仿真源码、数据集定制私信+
资源推荐
资源详情
资源评论
收起资源包目录
MLP.zip (3个子文件)
MLP.py 6KB
焦作.csv 62KB
焦作全.csv 112KB
共 3 条
- 1
资源评论
- SanqianY2024-12-11资源很受用,资源主总结的很全面,内容与描述一致,解决了我当下的问题。
机器学习之心
- 粉丝: 2w+
- 资源: 1070
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功