天池(新人赛)工业蒸汽预测

本文介绍参与天池新人赛的工业蒸汽预测挑战,通过学习和交流,利用Python的Keras库构建深度神经网络模型,根据锅炉传感器数据预测蒸汽产量。涉及数据预处理、模型训练、学习率调整策略以及性能评估。
摘要由CSDN通过智能技术生成

20185109054天池(新人赛)工业蒸汽预测

学习使用交流借鉴
参赛链接

Windows

1.下载Anaconda


2.安装相应库:
pip install Keras


注意:

python 依赖:

- Keras - Numpy - Sklearn - Lightgbm - Pandas

赛题背景

火力发电的基本原理是:燃料在燃烧时加热水生成蒸汽,蒸汽压力推动汽轮机旋转,然后汽轮机带动发电机旋转,产生电能。在这一系列的能量转化中,影响发电效率的核心是锅炉的燃烧效率,即燃料燃烧加热水产生高温高压蒸汽。锅炉的燃烧效率的影响因素很多,包括锅炉的可调参数,如燃烧给量,一二次风,引风,返料风,给水水量;以及锅炉的工况,比如锅炉床温、床压,炉膛温度、压力,过热器的温度等。

赛题描述

经脱敏后的锅炉传感器采集的数据(采集频率是分钟级别),根据锅炉的工况,预测产生的蒸汽量。

算法流程

  • 导入库
# -*- coding: utf-8 -*-

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import PolynomialFeatures
# 交叉检验
from sklearn.model_selection import train_test_split, learning_curve, validation_curve, KFold, \
    ShuffleSplit, cross_val_score
from sklearn.decomposition import PCA
# 指标算法
from sklearn.linear_model import LinearRegression, BayesianRidge, RidgeCV, Lasso
from sklearn.ensemble import RandomForestRegressor  # 集成算法,随机森林
from sklearn.svm import SVR
import lightgbm as lgb
from keras.models import Sequential
from keras.layers import Dense, Activation
from keras.callbacks import ReduceLROnPlateau
  • 构建机器学习模型
    输入:训练数据的特征数据和标签数据
    输出:一个深度神经网络模型
def Model_1(train_x, train_y):

    model = Sequential()
    model.add(Dense(500, input_shape=(train_x.shape[1],)))
    model.add(Activation('sigmoid'))

    model.add(Dense(100))
    model.add(Activation('relu'))

    model.add(Dense(100))
    model.add(Activation('relu'))

    model.add(Dense(50))
    model.add(Activation('tanh'))

    # 输出层
    model.add(Dense(1))
    model.add(Activation('linear'))

    # 三种优化器:SGD Adam RMSprop
    # 用于配置训练模型
    model.compile(optimizer='sgd',
                  loss='mean_squared_error')

    reduce_lr = ReduceLROnPlateau(monitor='loss', factor=0.1,
                                  patience=10, verbose=0,
                                  mode='auto', min_delta=0.001,
                                  cooldown=0, min_lr=0)
    epochs = 50  # 迭代次数
    model.fit(train_x, train_y, epochs=epochs,
              batch_size=20, validation_split=0.0,
              callbacks=[reduce_lr],
              verbose=0)
    return model

参数:
ReduceLROnPlateau
monitor:被监测的数据
factor:学习速率被降低的因素。新的学习速率 = 学习速率 * 因数
patience:没有进步的训练轮数,在这之后训练速率会被降低。
verbose:整数。0:安静,1:更新信息。
mode: {auto, min, max} 其中之一。如果是 min 模式,学习速率会被降低如果被监测的数据已经停止下降;
在 max 模式,学习塑料会被降低如果被监测的数据已经停止上升;
在 auto 模式,方向会被从被监测的数据中自动推断出来
min_delta: 对于测量新的最优化的阀值,只关注巨大的改变。
cooldown:在学习速率被降低之后,重新恢复正常操作之前等待的训练轮数量。
min_lr:学习速率的下边界。

def kfold_loss(df_x, df_y):
    '''
    输入:特征数据,和标签数据(dataframe类型的)
    输出:利用交叉验证划分数据,得到mean_loss
    :param df_x:
    :param df_y
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值