[p_train, ps_input] = mapminmax(data',0,1);%P_train(:,1:1000) Data=p_train';
时间: 2023-10-06 07:12:49 浏览: 111
这段代码是将一个数据集进行归一化处理,使用了MATLAB的mapminmax函数。其中,data是原始数据集,p_train是归一化后的数据集,ps_input是用于后续预测时进行归一化的参数。具体来说,0和1分别表示归一化后数据的最小值和最大值,data'是将data转置以便进行列归一化,最后将归一化后的结果转置回去得到p_train。
相关问题
% 导入数据 data_load=xlsread('data_load'); % 划分训练集和测试集 train_ratio = 0.8; % 训练集所占比例 train_size = round(size(data_load,1)*train_ratio); train_data = data_load(1:train_size,:); test_data = data_load(train_size+1:end,:); % 数据归一化 [train_data,train_settings] = mapminmax(train_data'); train_data = train_data'; test_data = mapminmax('apply',test_data',train_settings)'; test_data = test_data'; % 构造训练集和测试集的输入和输出 input_train = train_data(1:end-1,:); output_train = train_data(2:end,:); input_test = test_data(1:end-1,:); output_test = test_data(2:end,:);。 后面怎么进行lstm负荷预测
构造好训练集和测试集的输入和输出之后,接下来可以开始构建LSTM模型进行负荷预测。首先需要使用MATLAB中的`lstmLayer`函数创建一个LSTM层对象,然后使用`sequenceInputLayer`和`sequenceOutputLayer`函数创建输入和输出层对象。接着将这些层对象传入`layerGraph`函数中构建网络结构,最后使用`trainNetwork`函数进行训练。下面是一个简单的LSTM网络代码示例:
```matlab
numFeatures = size(input_train,2); % 特征数
numResponses = size(output_train,2); % 输出数
numHiddenUnits = 100; % 隐藏层神经元数
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits,'OutputMode','last')
fullyConnectedLayer(numResponses)
regressionLayer];
options = trainingOptions('adam', ...
'MaxEpochs',100, ...
'GradientThreshold',1, ...
'InitialLearnRate',0.01, ...
'LearnRateSchedule','piecewise', ...
'LearnRateDropFactor',0.1, ...
'LearnRateDropPeriod',20, ...
'MiniBatchSize',64, ...
'SequenceLength','longest', ...
'Shuffle','never', ...
'ValidationData',{input_test,output_test}, ...
'ValidationFrequency',10, ...
'Plots','training-progress');
net = trainNetwork(input_train',output_train',layers,options);
```
在训练完成后,可以使用`predict`函数对测试集数据进行预测:
```matlab
YPred = predict(net,input_test')';
```
最后,可以使用`mapminmax`函数将预测结果进行反归一化,以得到真实的负荷预测值。
% 载入数据 data = xlsread('补偿.xlsx'); input = data(1:20, 7:12)'; % 输入数据 output = data(1:20, 2:4)'; % 输出数据 % 分割训练集和测试集 input_train = input(:, 1:15); output_train = output(:, 1:15); input_test = input(:, 5:20); output_test = output(:, 5:20); % 归一化数据 [input_train_norm, input_ps] = mapminmax(input_train, -1, 1); [output_train_norm, output_ps] = mapminmax(output_train, -1, 1); % 构建BP神经网络 input_num = size(input_train_norm, 1); hidden_num = 10; output_num = size(output_train_norm, 1); net = newff(input_train_norm, output_train_norm, hidden_num, {'tansig', 'purelin'}, 'trainlm'); % 训练BP神经网络 net.trainParam.epochs = 2000; net.trainParam.lr = 0.0001; net.trainParam.goal = 0.001; net = train(net, input_train_norm, output_train_norm); % 测试BP神经网络 input_test_norm = mapminmax('apply', input_test, input_ps); output_test_norm = mapminmax('apply', output_test, output_ps); output_pred_norm = sim(net, input_test_norm); output_pred = mapminmax('reverse', output_pred_norm, output_ps); % 可视化结果 figure; plot(output_test(1,:), 'bo-'); hold on; plot(output_pred(1,:), 'r*-'); legend('真实结果', '预测结果'); xlabel('样本编号'); ylabel('输出值'); title('预测结果和真实结果');样本编号帮我改为1到20
% 载入数据
data = xlsread('补偿.xlsx');
input = data(1:20, 7:12)'; % 输入数据
output = data(1:20, 2:4)'; % 输出数据
% 分割训练集和测试集
input_train = input(:, 1:15);
output_train = output(:, 1:15);
input_test = input(:, 5:20);
output_test = output(:, 5:20);
% 归一化数据
[input_train_norm, input_ps] = mapminmax(input_train, -1, 1);
[output_train_norm, output_ps] = mapminmax(output_train, -1, 1);
% 构建BP神经网络
input_num = size(input_train_norm, 1);
hidden_num = 10;
output_num = size(output_train_norm, 1);
net = newff(input_train_norm, output_train_norm, hidden_num, {'tansig', 'purelin'}, 'trainlm');
% 训练BP神经网络
net.trainParam.epochs = 2000;
net.trainParam.lr = 0.0001;
net.trainParam.goal = 0.001;
net = train(net, input_train_norm, output_train_norm);
% 测试BP神经网络
input_test_norm = mapminmax('apply', input_test, input_ps);
output_test_norm = mapminmax('apply', output_test, output_ps);
output_pred_norm = sim(net, input_test_norm);
output_pred = mapminmax('reverse', output_pred_norm, output_ps);
% 可视化结果
figure;
plot(1:20, output_test(1,:), 'bo-');
hold on;
plot(1:20, output_pred(1,:), 'r*-');
legend('真实结果', '预测结果');
xlabel('样本编号');
ylabel('输出值');
title('预测结果和真实结果');
阅读全文