径流一致性检验——降雨径流双累积曲线图(附python代码)

双累计曲线法检验原理
双累积曲线法是目前用于水文气象要素一致性或长期演变趋势分析中最简单、最直观、最广泛的方法。在降水量与径流量双累积曲线中,累积降水量在有限时段中的变化是自然变化,人类活动对其影响相对较小;累积径流量受人类活动及降水量共同作用,因此,用累积降水量作为参考变量,通过双累积曲线可以分辨人类活动对天然径流的影响程度。公式如下[1]:
在这里插入图片描述
式中:Sri为流域玎年中前i年的累积径流深,mm;Spi为流域n年中前i年的累积降雨量,mm;n为流域第i年的径流深,mm;pi为流域第i年的降雨量,mm.
[1]孙楠. 天然径流系列一致性检验[J]. 山西水利科技, 2015, No.198(04):68-70.

**python代码:**
```#本文件使用降雨径流双累积曲线检验突变
import numpy as np 
import pandas as pd 
import matpl
  • 4
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是使用 LSTM 进行径流预测的 Python 代码: ```python import numpy as np import pandas as pd from keras.models import Sequential from keras.layers import LSTM, Dense, Dropout from sklearn.preprocessing import MinMaxScaler # 读取径流数据 data = pd.read_csv('runoff.csv', usecols=[1]) dataset = data.values dataset = dataset.astype('float32') # 数据归一化 scaler = MinMaxScaler(feature_range=(0, 1)) dataset = scaler.fit_transform(dataset) # 划分训练集和测试集 train_size = int(len(dataset) * 0.67) test_size = len(dataset) - train_size train, test = dataset[0:train_size, :], dataset[train_size:len(dataset), :] # 将时间序列数据转换为监督学习数据 def create_dataset(dataset, look_back=1): dataX, dataY = [], [] for i in range(len(dataset) - look_back - 1): a = dataset[i:(i + look_back), 0] dataX.append(a) dataY.append(dataset[i + look_back, 0]) return np.array(dataX), np.array(dataY) look_back = 5 trainX, trainY = create_dataset(train, look_back) testX, testY = create_dataset(test, look_back) # LSTM 模型 model = Sequential() model.add(LSTM(64, input_shape=(look_back, 1))) model.add(Dropout(0.2)) model.add(Dense(1)) model.compile(loss='mean_squared_error', optimizer='adam') model.fit(trainX, trainY, epochs=100, batch_size=32, verbose=2) # 预测 trainPredict = model.predict(trainX) testPredict = model.predict(testX) # 反归一化 trainPredict = scaler.inverse_transform(trainPredict) trainY = scaler.inverse_transform([trainY]) testPredict = scaler.inverse_transform(testPredict) testY = scaler.inverse_transform([testY]) # 计算误差 trainScore = np.sqrt(mean_squared_error(trainY[0], trainPredict[:, 0])) print('Train Score: %.2f RMSE' % (trainScore)) testScore = np.sqrt(mean_squared_error(testY[0], testPredict[:, 0])) print('Test Score: %.2f RMSE' % (testScore)) ``` 在上面的代码中,首先读取径流数据,然后使用 MinMaxScaler 进行数据归一化。接着,将时间序列数据转换为监督学习数据,其中 look_back 参数表示时间步长,即将 look_back 个时间步的数据作为输入,预测下一个时间步的径流数据。然后,定义 LSTM 模型,并训练模型。最后,使用模型进行预测,并计算预测误差。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值