#!/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 math import sqrt # 导入sqrt函数,用于计算平方根
from sklearn.metrics import mean_squared_error, mean_absolute_error, r2_score # 导入评估指标函数
import math # 导入math库
from numpy import concatenate # 导入concatenate函数,用于数组拼接
import lightgbm as lgb # 导入lightgbm库
from catboost import Pool, CatBoostRegressor # 导入catboost库的Pool和CatBoostRegressor模块
# In[2]:
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]:
gbm0 = lgb.LGBMRegressor(objective='regression', num_leaves=11, learning_rate=0.006,
n_estimators=2000) # 创建一个LightGBM回归模型对象,设置目标为回归,叶子节点数为11,学习率为0.006,估计器数量为2000
#更多模型咸鱼搜索机器学习之心,支持模型定制
gbm0.fit(X_train, y_train, eval_metric='rmse') # 使用训练数据X_train和标签y_train拟合模型,使用均方根误差(RMSE)作为评估指标
# In[7]:
#在训练集上的拟合结果
y_train_predict=gbm0.predict(X_train)
#在测试集上的预测
y_test_predict=gbm0.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[ ]:
机器学习之心
- 粉丝: 2w+
- 资源: 1070
最新资源
- python的uds诊断相关接口
- 视觉生成领域中的并行自回归模型加速研究
- 基于51单片机和DS18B20的温度检测和报警系统,可设置报警温度上下限,输出温度采用数码管显示
- 2020年山东省职业院校技能大赛网络搭建与应用赛题
- bp神经网络交叉验证算法和确定最佳隐含层节点个数matlab 程序,直接运行即可 数据excel格式,注释清楚,效果清晰,一步上手
- 基于51单片机设计的火灾报警器,传感器包括烟雾,光强,温度传感器,同时本工程包含了labview的上位机
- Python毕业设计-YOLOV5火灾火焰烟雾检测数据集+训练好的模型+标注好的数据+pyqt界面+源码
- Minecraft Python Console
- llvm cmake fsf fasdf der
- 445981218017804USB摄像头.apk
- Python毕业设计-YOLOV5火灾火焰烟雾检测数据集+模型+源码
- 预训练扩散变换器线性化优化方法:引入CLEAR机制加速图像生成
- 基于YOLOv5的神经网络训练用于检测火灾初期的火焰和烟雾模型源码+数据集
- Python毕业设计-基于YOLOv5的神经网络训练用于检测火灾初期的火焰和烟雾模型源码+数据集
- 基于PINN方法的热传导问题求解及结果输出
- Python基于YOLOv5的神经网络训练用于检测火灾初期的火焰和烟雾模型源码+数据集
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
- 1
- 2
前往页