2024/10/27周报

该文章已生成可运行项目,

摘要

本周对南宁伶俐工业园区污水处理厂进行调研,了解了该污水处理厂的详细工艺。又基于UCI水处理数据集,使用深度学习方法构建了预测模型,对水处理单元的进出水水质进行预测分析。数据预处理包括数据清洗、PCA降维、滑动窗口数据增强等,以提升模型的计算效率和准确性。模型采用卷积神经网络(CNN)、长短期记忆网络(LSTM)及注意力机制结合的CLATT模型,通过多层卷积、LSTM层、多头注意力机制及残差块提取特征,并用全连接层输出水质预测值。训练过程中,使用均方误差作为损失函数,并设置学习率调度器及早停机制以优化模型性能。测试集评估表明模型预测效果良好。此外,还比对分析通过PCA和随机森林,识别出污水处理单元的关键特征差异,为不同单元的性能优化提供了科学依据,支持对低效单元进行调整,提升整体水处理效率。

Abstract

This week, I conducted research on the sewage treatment plant in Nanning Lingli Industrial Park and learned about its detailed process. Based on the UCI water treatment dataset, a prediction model was constructed using deep learning methods to predict and analyze the inlet and outlet water quality of water treatment units. Data preprocessing includes data cleaning, PCA dimensionality reduction, sliding window data augmentation, etc., to improve the computational efficiency and accuracy of the model. The model adopts a CLATT model that combines convolutional neural network (CNN), long short-term memory network (LSTM), and attention mechanism. It extracts features through multi-layer convolution, LSTM layers, multi head attention mechanism, and residual blocks, and outputs water quality prediction values through fully connected layers. During the training process, mean square error is used as the loss function, and a learning rate scheduler and early stopping mechanism are set up to optimize model performance. The evaluation of the test set shows that the model has good predictive performance. In addition, comparative analysis was conducted using PCA and random forest to identify key feature differences in sewage treatment units, providing a scientific basis for optimizing the performance of different units and supporting adjustments to inefficient units to improve overall water treatment efficiency.

深度学习

预测进出水水质

使用UCI机器学习库中的水处理数据集

以下代码主要实现了对水处理数据集的处理、模型构建、训练和评估。
数据集描述如下:

• 数据来源:UCI机器学习库中的水处理数据集。
• 数据结构:包含39个特征,记录了水处理过程中的多个测量值,如pH值、溶解氧量、悬浮物浓度等。

代码描述

  1. 导入库
    • 使用了 pandas 和 numpy 进行数据处理。
    • 使用 torch 和 torch.nn 进行深度学习模型的构建。
    • 使用 StandardScaler 标准化数据, train_test_split 划分数据集, PCA 进行降维。
    • matplotlib 用于可视化。
  2. 设置随机数种子
    为了确保实验的可重复性,使用 random.seed、np.random.seed 和 torch.manual_seed 设置随机数种子。
  3. 数据加载和预处理
    • 数据加载:从 UCI 网站下载水处理数据集。该数据集包含水处理过程中的39个变量。
    • 数据清洗:将 “?” 替换为 NaN,并用均值填补缺失值。转换数据类型为浮点数以便处理。
    • 降维:使用PCA将39维的输入特征降到15维,以减少模型的计算量。
    • 特征选择:选择进水和出水相关的特征进行预测。这里 in_features 为降维后的特征,out_features 选择了一些出水的指标(‘PH-S’、‘DBO-S’、‘DQO-S’、‘SS-S’)。
    • 标准化:对输入和输出特征使用 StandardScaler 进行标准化。
  4. 数据增强
    • 使用滑动窗口方法对数据进行增强,将时间序列特征封装成序列。create_sequences 函数生成时间步数为 time_steps=6 的序列,用于捕捉时间相关的特征。
  5. 数据集划分与转换
    • 将生成的序列划分为训练集和测试集,并转换为 PyTorch 张量格式,以供后续模型训练和评估使用。
  6. 模型构建
    创建了一个名为 CLATT 的神经网络模型,包含卷积层、LSTM、注意力机制、残差连接等模块。以下是模型结构:
    • 卷积层:两层卷积层提取输入特征的局部信息。
    • LSTM层:用于捕捉序列特征。
    • 多头注意力机制:MultiHeadAttention 层由多头注意力机制组成,每个 AttentionLayer 计算注意力权重,提取重要特征。
    • 残差块:ResidualBlock 在注意力机制后增加了残差连接,增强了模型的稳定性。
    • 全连接层:将最终特征映射到4个目标特征。
  7. 模型训练
    使用均方误差(MSE)作为损失函数。train_model 函数实现了模型训练,包括:
    • 梯度更新:使用Adam优化器更新模型参数。
    • 学习率调度器:每50个epoch减少学习率,以更好地收敛。
    • 早停机制:如果模型在若干epoch内未改进,早停以避免过拟合。
  8. 模型评估
    evaluate_model 函数在测试集上评估模型表现,并输出测试损失。
  9. 可视化预测结果
    最后部分绘制预测值与实际值对比的折线图(针对 PH-S),直观展示模型预测的效果。

具体代码示例

import pandas as pd
import numpy as np
import torch
import torch.nn as nn
import torch.optim as optim
import random
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 设置随机数种子
seed = 42
random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
torch.cuda.manual_seed_all(seed)

# 1. 下载并加载数据
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/water-treatment/water-treatment.data'
data = pd.read_csv(url, header=None, sep=',')

# 更新列名以匹配数据集中的39列
data.columns = ['Date', 'Q-E', 'ZN-E', 'PH-E', 'DBO-E', 'DQO-E', 'SS-E', 'SSV-E', 'SED-E', 'COND-E',
                'PH-P', 'DBO-P', 'SS-P', 'SSV-P', 'SED-P', 'COND-P',
                'PH-D', 'DBO-D', 'DQO-D', 'SS-D', 'SSV-D', 'SED-D', 'COND-D',
                'PH-S', 'DBO-S', 'DQO-S', 'SS-S', 'SSV-S', 'SED-S', 'COND-S',
                'RD-DBO-P', 'RD-SS-P', 'RD-SED-P', 'RD-DBO-S', 'RD-DQO-S',
                'RD-DBO-G', 'RD-DQO-G', 'RD-SS-G', 'RD-SED-G']

# 删除日期列
data = data.drop('Date', axis=1)

# 将 "?" 替换为 NaN
data = data.replace('?', np.nan)

# 将数据类型转换为浮点数
data = data.astype(float)

# 填补缺失值(使用均值填补)
data = data.fillna(data.mean())

# 特征工程:使用PCA降维
pca = PCA(n_components=15)
data_pca = pca.fit_transform(data)

# 选择进水特征和出水特征
in_features = data_pca
out_features = data[['PH-S', 'DBO-S', 'DQO-S', 'SS-S']].values

# 数据标准化
scaler_in = StandardScaler()
scaler_out = StandardScaler()

X = scaler_in.fit_transform(in_features)
y = scaler_out.fit_transform(out_features)

# 数据增强:滑动窗口方法
def create_sequences(X, y, time_steps=6, step=1):
    Xs, ys = [], []
    for i in range(0, len(X) - time_steps, step):
        Xs.append(X[i:i + time_steps])
        ys.append(y[i + time_steps])
    return np.array(Xs), np.array(ys)

time_steps = 6
X_seq, y_seq = create_sequences(X, y, time_steps, step=1)

# 拆分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X_seq, y_seq, test_size=0.2, random_state=seed)

# 转换为PyTorch张量
X_train = torch.tensor(X_train, dtype=torch.float32)
y_train = torch.tensor(y_train, dtype=torch.float32)
X_test = torch.tensor(X_test, dtype=torch.float32)
y_test = torch.tensor(y_test, dtype=torch.float32)

# 2. 模型构建
class CLATT(nn.Module):
    def __init__(self, time_steps, in_features, hidden_dim=256, out_features=4, num_heads=4, num_layers=3):
        super(CLATT, self).__init__()
        self.conv1 = nn.Conv1d(in_features, 64, kernel_size=3, padding=1)
        self.conv2 = nn.Conv1d(64, 64, kernel_size=3, padding=1)
        self.batch_norm = nn.BatchNorm1d(64)
        self.flatten = nn.Flatten()
        self.lstm = nn.LSTM(64 * time_steps, hidden_dim, num_layers=num_layers, batch_first=True, bidirectional=True)
        self.layer_norm1 = nn.LayerNorm(hidden_dim * 2)
        self.multi_head_attention = MultiHeadAttention(hidden_dim * 2, num_heads)
        self.layer_norm2 = nn.LayerNorm(hidden_dim * 2 * num_heads)
        self.residual_block = ResidualBlock(hidden_dim * 2 * num_heads, hidden_dim * 2)
        self.dropout = nn.Dropout(p=0.5)
        self.fc = nn.Linear(hidden_dim * 2 * num_heads, out_features)

    def forward(self, x):
        x = x.transpose(1, 2)
        x = torch.relu(self.conv1(x))
        x = torch.relu(self.conv2(x))
        x = self.batch_norm(x)
        x = self.flatten(x)
        x = x.unsqueeze(1)
        lstm_out, _ = self.lstm(x)
        lstm_out = self.layer_norm1(lstm_out)
        attention_out = self.multi_head_attention(lstm_out)
        attention_out = self.layer_norm2(attention_out)
        attention_out = self.residual_block(attention_out)
        attention_out = self.dropout(attention_out)
        out = self.fc(attention_out)
        return out

class MultiHeadAttention(nn.Module):
    def __init__(self, input_dim, num_heads):
        super(MultiHeadAttention, self).__init__()
        self.num_heads = num_heads
        self.attention_heads = nn.ModuleList([AttentionLayer(input_dim) for _ in range(num_heads)])

    def forward(self, inputs):
        attention_outputs = [head(inputs) for head in self.attention_heads]
        concat_attention = torch.cat(attention_outputs, dim=1)
        return concat_attention

class AttentionLayer(nn.Module):
    def __init__(self, input_dim):
        super(AttentionLayer, self).__init__()
        self.attn_weights = nn.Linear(input_dim, input_dim)

    def forward(self, inputs):
        scores = torch.tanh(self.attn_weights(inputs))
        attn_weights = torch.softmax(scores, dim=1)
        context_vector = torch.sum(attn_weights * inputs, dim=1)
        return context_vector

class ResidualBlock(nn.Module):
    def __init__(self, input_dim, hidden_dim):
        super(ResidualBlock, self).__init__()
        self.fc1 = nn.Linear(input_dim, hidden_dim)
        self.fc2 = nn.Linear(hidden_dim, input_dim)

    def forward(self, x):
        residual = x
        out = torch.relu(self.fc1(x))
        out = self.fc2(out)
        out += residual
        return torch.relu(out)

# 创建模型
model = CLATT(time_steps, in_features.shape[1], hidden_dim=256, out_features=4, num_heads=4, num_layers=3)
print(model)

# 3. 模型训练,加入学习率调度器和权重衰减
criterion = nn.MSELoss()
optimizer = optim.Adam(model.parameters(), lr=0.001, weight_decay=1e-5)
scheduler = optim.lr_scheduler.StepLR(optimizer, step_size=50, gamma=0.5)

def train_model(model, X_train, y_train, n_epochs=200, batch_size=64, patience=10):
    model.train()
    best_loss = float('inf')
    patience_counter = 0

    for epoch in range(n_epochs):
        for i in range(0, len(X_train), batch_size):
            X_batch = X_train[i:i + batch_size]
            y_batch = y_train[i:i + batch_size]
            y_pred = model(X_batch)
            loss = criterion(y_pred, y_batch)
            optimizer.zero_grad()
            loss.backward()
            optimizer.step()

        scheduler.step()  # 更新学习率
        if loss.item() < best_loss:
            best_loss = loss.item()
            patience_counter = 0
        else:
            patience_counter += 1

        if patience_counter >= patience:
            print(f"Early stopping at epoch {epoch + 1}")
            break

        if (epoch + 1) % 10 == 0:
            print(f'Epoch {epoch + 1}/{n_epochs}, Loss: {loss.item():.4f}')
            
train_model(model, X_train, y_train)

# 4. 模型评估
def evaluate_model(model, X_test, y_test):
    model.eval()
    with torch.no_grad():
        y_pred = model(X_test)
        loss = criterion(y_pred, y_test)
        print(f'Test Loss: {loss.item():.4f}')
    return y_pred


y_pred = evaluate_model(model, X_test, y_test)

# 反标准化结果
y_test_inv = scaler_out.inverse_transform(y_test.numpy())
y_pred_inv = scaler_out.inverse_transform(y_pred.numpy())

# 结果可视化
plt.figure(figsize=(10, 6))
plt.plot(y_test_inv[:100, 0], label='实际值 (PH-S)')
plt.plot(y_pred_inv[:100, 0], label='预测值 (PH-S)')
plt.legend()
plt.show()

实验结果

在这里插入图片描述

智能比对示例

为了更直观地理解污水处理单元的比对过程,下面提供一个完整的示例,假设我们有四个处理单元的数据集,数据指标包括化学需氧量(COD)去除效率、总氮(TN)去除效率、总磷(TP)去除效率、处理流量和pH值。我们将通过主成分分析(PCA)降维,并使用随机森林模型进行单元间的比对分析。

数据示例

假设我们有以下污水处理单元数据(单位:处理效率以百分比表示,流量以m³/h表示,pH值为无量纲):
在这里插入图片描述

比对步骤

  1. 数据预处理
    标准化:为消除不同指标间的量纲差异,先对数据进行标准化处理,将各指标缩放至相同的范围(例如0到1之间)。
  2. 主成分分析(PCA)
    降维:使用PCA将五个特征降维到两个主要成分,以减少数据复杂度并突出关键影响因素。
    解释性:通过PCA,我们可以得到各主成分对原始指标的解释度。假设我们发现降维后的两个主成分分别解释了70%和20%的数据变异,总共解释了90%,说明大部分信息被保留。
  3. 使用随机森林进行比对
    特征重要性分析:在随机森林模型中,通过分析每个特征在模型中的重要性,识别出影响不同单元效率差异的关键因素。假设结果显示,COD去除效率和TN去除效率对单元性能差异影响最大。
    比对分析:基于随机森林的分类结果,我们可以得到各单元的性能评分或分类,例如识别“高效单元”和“低效单元”。
  4. 结果解读与应用
    结果解读:通过PCA和随机森林分析,我们得出单元C的处理效率最高,而单元B和D相对较低。此结论可以引导进一步的操作,例如为单元B和D提供优化建议。

优化方案:基于比对结果,可以针对COD和TN去除效率较低的单元(如单元B和D)提出改进措施,例如增加曝气量或调整药剂投加量。

Python 代码示例

以下是一个基于上述流程的Python代码实现。

import pandas as pd
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
from sklearn.ensemble import RandomForestClassifier
import numpy as np

# 数据准备
data = {
    'Unit': ['A', 'B', 'C', 'D'],
    'COD Efficiency': [85, 80, 90, 78],
    'TN Efficiency': [70, 65, 80, 75],
    'TP Efficiency': [65, 75, 70, 68],
    'Flow Rate': [120, 150, 100, 110],
    'pH': [7.0, 6.8, 7.2, 7.1]
}

df = pd.DataFrame(data)
features = df.drop(columns=['Unit'])

# 标准化数据
scaler = StandardScaler()
scaled_features = scaler.fit_transform(features)

# PCA降维
pca = PCA(n_components=2)
principal_components = pca.fit_transform(scaled_features)
pca_df = pd.DataFrame(data=principal_components, columns=['PC1', 'PC2'])
pca_df['Unit'] = df['Unit']

# 假设高效单元标签
labels = np.array([1 if unit in ['C'] else 0 for unit in df['Unit']])

# 随机森林比对模型
rf = RandomForestClassifier()
rf.fit(scaled_features, labels)
importances = rf.feature_importances_

# 输出特征重要性
for feature, importance in zip(features.columns, importances):
    print(f"Feature: {feature}, Importance: {importance:.4f}")

# 输出PCA后的数据
print("\nPCA Result:\n", pca_df)

结果解读

在这里插入图片描述

特征重要性:代码输出会显示每个指标的特征重要性。例如,COD去除效率和TN去除效率可能会被认为对比对结果影响最大。
PCA结果:PCA降维后的结果可以在二维平面中可视化展示,显示各单元之间的相似性或差异性。

应用场景

根据比对结果,可以对比单元的相对效率并生成优化方案。例如,针对COD和TN效率较低的单元B和D,可以制定改进计划以提升这些指标。这种分析为后续的智能化优化和管理提供了数据支持。

总结

在上述污水处理水质预测和单元比对分析工作中,已有的成果为污水处理过程的优化和智能管理提供了重要基础,但还有一些方面可以进一步总结和改进,以提升模型的表现和应用价值。
数据处理全面且充分:通过数据清洗、标准化、降维等一系列预处理步骤,确保了模型的输入数据质量,并通过滑动窗口法增强时间序列特征。
模型架构融合多种技术:模型结构包括卷积层、LSTM层和多头注意力机制,通过深度特征提取有效捕捉了水质变化的时空特征,增强了模型的预测能力。
多模型联合比对分析:PCA与随机森林结合,识别了关键影响指标,为处理单元的性能优化提供了依据,有助于明确处理薄弱环节并制定针对性的改进方案。

改进建议

数据集扩展与细化:目前使用的UCI水处理数据集可能未完全覆盖实际污水处理中的复杂情况。可以引入更多现场数据(如不同季节、不同污染源的水质数据)进行模型训练,以提升模型的适用性。

1.模型参数优化与自动化调整:
通过自动化调参方法(如贝叶斯优化、网格搜索等),寻找最优的模型参数组合,从而提升模型性能。
引入自适应学习率优化器(如AdaBelief、Ranger)代替Adam优化器,提升模型的收敛速度与稳定性。

2.模型结构的改进:
在模型中加入图神经网络(GNN),模拟水质指标间的相互关系,有助于捕捉污染物的传播和扩散特征,尤其适用于流域或多水体的分析。
使用Transformer架构替代LSTM来处理时间序列特征,有望提升长时间序列数据的建模能力和性能。
引入实时数据处理:实现实时数据接入与模型预测,使系统能够在处理单元出现异常时快速响应,建议采用流处理技术(如Apache Kafka、Spark Streaming)对数据进行动态监控。

3.增加模型解释性:为了便于实际应用中的决策,可以引入SHAP值(SHapley Additive exPlanations)等解释性方法,使得每个预测结果可以追溯到关键指标的贡献程度,从而增强模型的透明性。

4.强化性能评估与验证:
增加模型评估指标,如R²、平均绝对误差(MAE)等,以提供更全面的模型评估。
通过交叉验证、留一验证等多种验证方法,确保模型的泛化性能,避免在特定数据集上的过拟合。

这些改进措施将进一步增强模型的预测准确性、稳定性及适用性,使得系统能够更好地应对实际应用中的复杂场景,为污水处理的智能化管理提供更强大的技术支持。

本文章已经生成可运行项目
2024/1/1 123.75 141.44978233067818 2024/1/7 168.571428571429 164.58807061400717 2024/1/7 168.571428571429 88.90894227150248 2024/1/14 205 149.4715770893992 2024/1/16 52.5 136.41907987248615 2024/1/17 38.75 48.555230155374 2024/1/28 88.75 98.74711815669839 2024/2/2 32.857142857142904 50.54266038039505 2024/2/2 32.857142857142904 51.77056225639738 2024/2/5 82.5 97.3466728624111 2024/2/6 95 77.28656265637308 2024/2/7 110 82.90365797321212 2024/2/8 120 107.29023222927522 2024/2/10 151.428571428571 112.40124095463952 2024/2/11 116.25 121.88067651092562 2024/2/18 47.99999999999999 56.003677776515694 2024/2/19 67.5 55.847826096774526 2024/2/20 26.5 74.12894162493086 2024/2/22 47.1428571428572 50.037483558704345 2024/2/23 57.5 58.72629260822178 2024/2/23 57.5 59.90278324034665 2024/2/25 85 71.33576752872008 2024/2/28 122.5 108.9989900963616 2024/3/11 85 84.32848045698128 2024/3/16 100 75.57018610879334 2024/3/22 65 64.63852076852191 2024/3/24 36 62.39492082209007 2024/3/25 41 45.1101102285979 2024/3/28 56.6666666666667 66.59210042370242 2024/3/31 87.5 85.55500914218962 2024/4/1 54.16666666666671 51.4276556700062 2024/4/3 75 36.78731342930887 2024/4/3 75 73.76915442987828 2024/4/6 49.49999999999999 57.76058767045256 2024/4/7 56.25 59.90187152601827 2024/4/10 50.83333333333331 57.4928560934163 2024/4/11 63.75 51.59536811040737 2024/4/14 66.6666666666667 74.62430391378464 2024/4/16 44 49.86779586148121 2024/4/21 91.6666666666667 80.99920808671243 2024/4/25 94 95.1916784497183 2024/4/25 94 101.6468276165237 2024/4/26 123.636363636364 101.54226255724868 2024/5/1 47.1428571428572 58.50932702270208 2024/5/2 68.3333333333333 64.01621832767732 2024/5/4 40.5 53.42829426027681 2024/5/11 63 79.31938023373458 2024/5/13 123.636363636364 109.90295137443077 2024/5/14 121.818181818182 103.38721464003619 2024/5/22 50.83333333333331 55.79412608640662 2024/5/23 77.5 80.42939479500879 2024/5/27 73.3333333333333 71.32283060586244 2024/6/3 96.6666666666667 88.01209786222385 2024/6/9 68.3333333333333 108.56864781513396 2024/6/11 83.3333333333333 48.55482492203493 2024/6/13 110 88.15962441453412 2024/6/14 122.727272727273 107.61549578817458 2024/6/27 46.50000000000001 44.078713021115306 2024/6/29 33 26.44193350991658 2024/7/1 42 52.59867325205077 2024/7/3 44.5 89.82048738852457 2024/7/4 39 52.19653144726541 2024/7/5 47.99999999999999 48.08958368353323 2024/7/9 49 57.59646598524163 2024/7/9 49 53.60283014788386 2024/7/11 63.3333333333333 66.97868019503072 2024/7/17 53.3333333333333 63.34636274774507 2024/7/19 41.5 42.89947272348277 2024/7/21 64.1666666666667 66.09878524599225 2024/7/22 66.6666666666667 65.00890057786901 2024/7/26 45.00000000000001 71.21665897622492 2024/7/28 40.5 44.13470403198099 2024/8/1 44.5 47.583181504691126 2024/8/2 45.00000000000001 47.583181504691126 2024/8/2 45.00000000000001 46.9087841595428 2024/8/3 51.6666666666667 45.23014594969053 2024/8/4 55.8333333333333 58.65054857410897 2024/8/6 68.3333333333333 54.60578952020746 2024/8/9 62.5 65.85809400034259 2024/8/10 75.8333333333333 71.9206795742283 2024/8/11 94.1666666666667 70.96740036589514 2024/8/15 90 80.34604289750527 2024/8/18 90 94.47656346062271 2024/8/22 81.6666666666667 86.53461449155253 2024/8/22 81.6666666666667 108.27781523932805 2024/8/23 65.8333333333333 82.53817106629121 2024/9/3 88.3333333333333 113.16247944014161 2024/9/3 88.3333333333333 88.23748357200765 2024/9/8 108.181818181818 101.89782847813537 2024/9/9 115.454545454545 96.45857559537323 2024/9/13 44 50.29448003948117 2024/9/18 80 83.8067648044246 2024/9/28 75 72.56515720406895 2024/9/29 100 70.64652960614046 2024/10/2 74.1666666666667 60.570719215034764 2024/10/5 102.727272727273 93.99401752385478 2024/10/11 130.909090909091 91.43861631520019 2024/10/11 130.909090909091 107.36748520058795 2024/10/13 63.75 70.11378396004059 2024/10/15 86.6666666666667 85.31855469197326 2024/10/16 71.6666666666667 67.85859636969488 2024/10/17 35.5 40.568489434724526 2024/10/22 37.5 41.13715300481026 2024/10/24 75.8333333333333 75.07703363794025 2024/10/26 56.6666666666667 59.31423576916348 2024/10/27 67.5 77.72187997314686 2024/10/30 78.3333333333333 74.72658701406004 2024/11/1 71.6666666666667 74.32719194724612 2024/11/1 71.6666666666667 78.99471579045824 2024/11/3 107.5 96.12724021398316 2024/11/5 55 88.70741079334934 2024/11/5 55 63.17230961245132 2024/11/7 70.8333333333333 69.40951088280127 2024/11/8 52.5 70.58982172647461 2024/11/9 50.5 65.39850926077335 2024/11/11 61.6666666666667 67.08648185133565 2024/11/13 66.6666666666667 67.06290561067581 2024/11/14 69.1666666666667 74.92724767621056 2024/11/16 62.5 67.72309837940713 2024/11/20 31.25 39.791267230677306 2024/11/21 56.25 53.09328772113596 2024/11/21 56.25 45.96954038585586 2024/11/22 67.5 55.89475640940251 2024/11/22 67.5 72.07171621764438 2024/11/29 60 63.75168781309595 2024/12/3 121.25 123.51751061089429 2024/12/3 121.25 85.35092998366582 2024/12/4 78.75 118.96571575050625 2024/12/5 48.5714285714286 77.23522342869911 2024/12/5 48.5714285714286 56.760071551348034 2024/12/6 50.00000000000001 55.67542260586588 2024/12/9 63.75 77.29555462085865 2024/12/11 90 91.88546031226497 2024/12/11 90 87.43060672017323 2024/12/12 105 89.23105190131274 2024/12/12 105 83.14521582557892 2024/12/28 44 51.14349839579385 2024/12/29 73.75 70.82581380052193 2024/12/31 145 113.7323729139217 2025/1/2 174.285714285714 158.40406690058774 2025/1/3 204 168.67990876026008 2025/1/4 157.142857142857 131.7945723625761 2025/1/5 75 92.88837622077833 2025/1/6 77.5 90.9308700022185 2025/1/10 44.28571428571429 53.946620996090516 2025/1/10 44.28571428571429 49.57827863490396 2025/1/11 78.75 78.29644384995049 2025/1/12 81.25 73.87610905688891 2025/1/13 106.25 80.38639509127034 2025/1/20 151.428571428571 136.6081186621433 2025/1/21 133.75 129.94744729140956 2025/1/22 135 130.24655227366316 2025/1/24 91.25 146.3767752344893 2025/1/27 55 71.46727057951108 2025/1/28 62.5 66.31463541778702 2025/2/1 67.5 71.37098161035166 2025/2/2 58.75 66.17426845 2025/2/5 58.75 88.75667212785046 2025/2/8 39 77.88252871091174 2025/2/9 45.7142857142857 52.18881850959389 2025/2/15 86.25 82.4133355641056 2025/2/16 82.5 80.27288373068554 2025/2/19 63.75 77.16937696990621 2025/2/23 116.25 86.76096912509652 2025/2/24 120 100.18931943988112 2025/2/28 76.25 62.27437528664383 2025/3/3 28 49.49588667705353 2025/3/4 42.857142857142904 31.204205454247344 2025/3/5 48.5714285714286 57.89927257633713 2025/3/6 72.5 63.413358717767835 2025/3/7 80 78.92374488524504 2025/3/9 80 74.84065901246376 2025/3/9 80 86.94889436125919 2025/3/11 65 68.96484811264284 2025/3/15 42.5 47.68307768671133 2025/3/17 54.16666666666671 54.844184083948534 2025/3/19 70 71.32317723530358 2025/3/21 75.8333333333333 76.9746305766928 2025/3/24 70 74.65521786082064 2025/3/29 70 77.40180710328875 2025/4/1 71 80.57870505575087 2025/4/2 81.6666666666667 81.99531424941331 2025/4/5 84.1666666666667 78.8368811413689 2025/4/6 97.5 94.72271732958869 2025/4/7 84.1666666666667 89.88488096255729 2025/4/14 98 95.67823824552184 2025/4/21 42 111.53290689851633 2025/4/23 81.6666666666667 57.141737161191365 2025/4/24 61.5 83.99447487776038 2025/4/26 91.6666666666667 84.24149848760464 2025/4/27 58.3333333333333 62.870282372247104 2025/4/28 95 59.83136943842301 2025/4/30 68.3333333333333 73.1449341049362 2025/5/1 80.8333333333333 82.50448713333525 2025/5/2 86.6666666666667 83.55990976104009 2025/5/3 80.8333333333333 87.13972460673028 2025/5/4 103.636363636364 98.5090122230891 2025/5/7 135.5 94.65732498676186 2025/5/7 135.5 118.08517354632647 2025/5/10 50.00000000000001 56.534837994279506 2025/5/15 50.83333333333331 55.91271636914875 2025/5/19 80 80.8946332197781 2025/5/21 55.8333333333333 57.6135692788171 2025/5/22 38.5 42.75042106739687 2025/5/22 38.5 63.47590727436925 2025/5/24 80.8333333333333 73.64128586482872 2025/5/25 123.636363636364 79.50115966335561 2025/5/27 97.5 106.27753198307643 2025/5/28 64.1666666666667 69.30680223618985 2025/5/31 33.5 70.81933813357111 2025/5/31 33.5 34.34381152519421 2025/6/1 43 38.11541438169796 2025/6/11 65.8333333333333 40.703264716877996 2025/6/14 44.5 71.8059471813712 2025/6/15 67.5 47.3519258804609 2025/6/16 80.8333333333333 76.75751861199961 2025/6/18 40.5 56.99724051629258 2025/6/21 52.5 50.91048391171709 2025/6/24 67.5 70.32261502977192 2025/6/25 85.8333333333333 83.64395823861886 2025/6/26 47.99999999999999 47.11187595527804 2025/6/26 47.99999999999999 82.26586779001731 2025/6/27 27.5 32.61973525719978 2025/6/29 33 38.471384454153934 2025/7/2 40.5 41.8137903149492 2025/7/3 41.5 41.55174601833187 2025/7/4 62.5 42.555910187138494 2025/7/6 89.1666666666667 67.94355289605272 2025/7/10 47.99999999999999 50.420961530730615 2025/7/12 38.5 53.933623933134314 2025/7/13 61.6666666666667 68.87604276458451 2025/7/14 57.5 75.07816532 2025/7/15 63.3333333333333 61.27539132564982 2025/7/16 61.6666666666667 61.2199272323314 2025/7/18 89.1666666666667 85.1940043760954 2025/7/19 109.090909090909 85.80104582479294 2025/7/21 44.5 51.048631974115125 2025/7/23 47 68.68200192813825 2025/7/24 70.8333333333333 72.70514810854169 2025/7/24 70.8333333333333 66.72884559566981 2025/7/28 41.5 44.24787044978878 2025/7/31 68.3333333333333 68.10199967482542 2025/8/1 58.3333333333333 57.21891596330586 2025/8/2 66.6666666666667 73.0065068273534 2025/8/2 66.6666666666667 59.566026288096104 2025/8/3 85 83.71691559565357 2025/8/3 85 79.21006390845372 2025/8/8 47.99999999999999 60.629516790631705 2025/8/17 67.5 46.08474692761816 2025/8/18 55 71.73300540615286 2025/8/21 43.5 42.74603613157312 2025/8/26 95 96.662891741162 2025/8/27 80 96.21714056534087 2025/8/28 85 72.027393057495 2025/9/1 60 47.6061644310276 2025/9/3 74.1666666666667 68.11991657351632 2025/9/4 68.3333333333333 70.02119887103083 2025/9/5 73.3333333333333 70.02119887103083 2025/9/5 73.3333333333333 70.89262161791024 2025/9/21 32 35.474220745225495 2025/9/23 29.5 47.931426661999886 2025/9/25 25.5 33.93622542134888 2025/9/25 25.5 36.402784316544256 2025/9/29 32.5 37.61827081824134 列名依次为时间、真实值、预测值,对以上预测结果进行分析
11-26
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值