import pandas as pd import numpy as np from keras.models import load_model # 加载已经训练好的kerasBP模型 model = load_model('D://model.h5') # 读取Excel文件中的数据 data = pd.read_excel('D://数据1.xlsx', sheet_name='4') # 对数据进行预处理,使其符合模型的输入要求# 假设模型的输入是一个包含4个特征的向量# 需要将Excel中的数据转换成一个(n, 4)的二维数组 X = data[['A', 'B', 'C', 'D']].values # 使用模型进行预测 y_pred = model.predict(X) # 对预测结果进行反归一化 y_pred_int = scaler_y.inverse_transform(y_pred).round().astype(int) # 构建带有概率的预测结果 y_pred_prob = pd.DataFrame(y_pred_int, columns=data.columns[:4]) mse = ((y_test - y_pred) ** 2).mean(axis=None) y_pred_prob['Probability'] = 1 / (1 + mse - ((y_pred_int - y_test) ** 2).mean(axis=None)) # 过滤掉和值超过6或小于6的预测值 y_pred_filtered = y_pred_prob[(y_pred_prob.iloc[:, :4].sum(axis=1) == 6)] # 去除重复的行 y_pred_filtered = y_pred_filtered.drop_duplicates() # 重新计算低于1.2的 Probability 值 low_prob_indices = y_pred_filtered[y_pred_filtered['Probability'] < 1.5].index for i in low_prob_indices: y_pred_int_i = y_pred_int[i] y_test_i = y_test[i] mse_i = ((y_test_i - y_pred_int_i) ** 2).mean(axis=None) new_prob_i = 1 / (1 + mse_i - ((y_pred_int_i - y_test_i) ** 2).mean(axis=None)) y_pred_filtered.at[i, 'Probability'] = new_prob_i # 打印带有概率的预测结果 print('Predicted values with probabilities:') print(y_pred_filtered)

时间: 2024-02-12 10:04:06 浏览: 26
根据你的代码,似乎缺少了定义 y_test 的步骤,因此在计算 mse 时会出现错误。你需要先定义 y_test,再进行计算。另外,可能需要在代码中加入一些注释以便更好地理解代码的含义。以下是修改后的代码: ```python import pandas as pd import numpy as np from keras.models import load_model # 加载已经训练好的kerasBP模型 model = load_model('D://model.h5') # 读取Excel文件中的数据 data = pd.read_excel('D://数据1.xlsx', sheet_name='4') # 对数据进行预处理,使其符合模型的输入要求 # 假设模型的输入是一个包含4个特征的向量 # 需要将Excel中的数据转换成一个(n, 4)的二维数组 X = data[['A', 'B', 'C', 'D']].values # 使用模型进行预测 y_pred = model.predict(X) # 对预测结果进行反归一化 y_pred_int = scaler_y.inverse_transform(y_pred).round().astype(int) # 构建带有概率的预测结果 y_pred_prob = pd.DataFrame(y_pred_int, columns=data.columns[:4]) # 计算 mse y_test = data['y_true'].values mse = ((y_test - y_pred) ** 2).mean(axis=None) # 计算每个预测结果的概率并添加到 y_pred_prob 中 y_pred_prob['Probability'] = 1 / (1 + mse - ((y_pred_int - y_test) ** 2).mean(axis=None)) # 过滤掉和值超过6或小于6的预测值 y_pred_filtered = y_pred_prob[(y_pred_prob.iloc[:, :4].sum(axis=1) == 6)] # 去除重复的行 y_pred_filtered = y_pred_filtered.drop_duplicates() # 重新计算低于1.5的 Probability 值 low_prob_indices = y_pred_filtered[y_pred_filtered['Probability'] < 1.5].index for i in low_prob_indices: y_pred_int_i = y_pred_int[i] y_test_i = y_test[i] mse_i = ((y_test_i - y_pred_int_i) ** 2).mean(axis=None) new_prob_i = 1 / (1 + mse_i - ((y_pred_int_i - y_test_i) ** 2).mean(axis=None)) y_pred_filtered.at[i, 'Probability'] = new_prob_i # 打印带有概率的预测结果 print('Predicted values with probabilities:') print(y_pred_filtered) ```

相关推荐

import numpy as np import matplotlib.pyplot as plt import pickle as pkl import pandas as pd import tensorflow.keras from tensorflow.keras.models import Sequential, Model, load_model from tensorflow.keras.layers import LSTM, GRU, Dense, RepeatVector, TimeDistributed, Input, BatchNormalization, \ multiply, concatenate, Flatten, Activation, dot from sklearn.metrics import mean_squared_error,mean_absolute_error from tensorflow.keras.optimizers import Adam from tensorflow.python.keras.utils.vis_utils import plot_model from tensorflow.keras.callbacks import EarlyStopping from keras.callbacks import ReduceLROnPlateau df = pd.read_csv('lorenz.csv') signal = df['signal'].values.reshape(-1, 1) x_train_max = 128 signal_normalize = np.divide(signal, x_train_max) def truncate(x, train_len=100): in_, out_, lbl = [], [], [] for i in range(len(x) - train_len): in_.append(x[i:(i + train_len)].tolist()) out_.append(x[i + train_len]) lbl.append(i) return np.array(in_), np.array(out_), np.array(lbl) X_in, X_out, lbl = truncate(signal_normalize, train_len=50) X_input_train = X_in[np.where(lbl <= 9500)] X_output_train = X_out[np.where(lbl <= 9500)] X_input_test = X_in[np.where(lbl > 9500)] X_output_test = X_out[np.where(lbl > 9500)] # Load model model = load_model("model_forecasting_seq2seq_lstm_lorenz.h5") opt = Adam(lr=1e-5, clipnorm=1) model.compile(loss='mean_squared_error', optimizer=opt, metrics=['mae']) #plot_model(model, to_file='model_plot.png', show_shapes=True, show_layer_names=True) # Train model early_stop = EarlyStopping(monitor='val_loss', patience=20, verbose=1, mode='min', restore_best_weights=True) #reduce_lr = ReduceLROnPlateau(monitor='val_loss', factor=0.2, patience=9, verbose=1, mode='min', min_lr=1e-5) #history = model.fit(X_train, y_train, epochs=500, batch_size=128, validation_data=(X_test, y_test),callbacks=[early_stop]) #model.save("lstm_model_lorenz.h5") # 对测试集进行预测 train_pred = model.predict(X_input_train[:, :, :]) * x_train_max test_pred = model.predict(X_input_test[:, :, :]) * x_train_max train_true = X_output_train[:, :] * x_train_max test_true = X_output_test[:, :] * x_train_max # 计算预测指标 ith_timestep = 10 # Specify the number of recursive prediction steps # List to store the predicted steps pred_len =2 predicted_steps = [] for i in range(X_output_test.shape[0]-pred_len+1): YPred =[],temdata = X_input_test[i,:] for j in range(pred_len): Ypred.append (model.predict(temdata)) temdata = [X_input_test[i,j+1:-1],YPred] # Convert the predicted steps into numpy array predicted_steps = np.array(predicted_steps) # Plot the predicted steps #plt.plot(X_output_test[0:ith_timestep], label='True') plt.plot(predicted_steps, label='Predicted') plt.legend() plt.show()

import matplotlib.pyplot as plt import pandas as pd from keras.models import Sequential from keras import layers from keras import regularizers import os import keras import keras.backend as K import numpy as np from keras.callbacks import LearningRateScheduler data = "data.csv" df = pd.read_csv(data, header=0, index_col=0) df1 = df.drop(["y"], axis=1) lbls = df["y"].values - 1 wave = np.zeros((11500, 178)) z = 0 for index, row in df1.iterrows(): wave[z, :] = row z+=1 mean = wave.mean(axis=0) wave -= mean std = wave.std(axis=0) wave /= std def one_hot(y): lbl = np.zeros(5) lbl[y] = 1 return lbl target = [] for value in lbls: target.append(one_hot(value)) target = np.array(target) wave = np.expand_dims(wave, axis=-1) model = Sequential() model.add(layers.Conv1D(64, 15, strides=2, input_shape=(178, 1), use_bias=False)) model.add(layers.ReLU()) model.add(layers.Conv1D(64, 3)) model.add(layers.Conv1D(64, 3, strides=2)) model.add(layers.BatchNormalization()) model.add(layers.Dropout(0.5)) model.add(layers.Conv1D(64, 3)) model.add(layers.Conv1D(64, 3, strides=2)) model.add(layers.BatchNormalization()) model.add(layers.LSTM(64, dropout=0.5, return_sequences=True)) model.add(layers.LSTM(64, dropout=0.5, return_sequences=True)) model.add(layers.LSTM(32)) model.add(layers.Dropout(0.5)) model.add(layers.Dense(5, activation="softmax")) model.summary() save_path = './keras_model3.h5' if os.path.isfile(save_path): model.load_weights(save_path) print('reloaded.') adam = keras.optimizers.adam() model.compile(optimizer=adam, loss="categorical_crossentropy", metrics=["acc"]) # 计算学习率 def lr_scheduler(epoch): # 每隔100个epoch,学习率减小为原来的0.5 if epoch % 100 == 0 and epoch != 0: lr = K.get_value(model.optimizer.lr) K.set_value(model.optimizer.lr, lr * 0.5) print("lr changed to {}".format(lr * 0.5)) return K.get_value(model.optimizer.lr) lrate = LearningRateScheduler(lr_scheduler) history = model.fit(wave, target, epochs=400, batch_size=128, validation_split=0.2, verbose=2, callbacks=[lrate]) model.save_weights(save_path) print(history.history.keys()) # summarize history for accuracy plt.plot(history.history['acc']) plt.plot(history.history['val_acc']) plt.title('model accuracy') plt.ylabel('accuracy') plt.xlabel('epoch') plt.legend(['train', 'test'], loc='upper left') plt.show() # summarize history for loss plt.plot(history.history['loss']) plt.plot(history.history['val_loss']) plt.title('model loss') plt.ylabel('loss') plt.xlabel('epoch') plt.legend(['train', 'test'], loc='upper left') plt.show()

使用模型进行预测... WARNING:tensorflow:Model was constructed with shape (None, 3989, 10) for input KerasTensor(type_spec=TensorSpec(shape=(None, 3989, 10), dtype=tf.float32, name='dense_input'), name='dense_input', description="created by layer 'dense_input'"), but it was called on an input with incompatible shape (None, 10). 1/1 [==============================] - 0s 36ms/step --------------------------------------------------------------------------- ValueError Traceback (most recent call last) Cell In[20], line 14 11 predicted = model.predict(unknown, verbose=1) 13 # 将预测结果保存到新的 CSV 文件中 ---> 14 result = pd.DataFrame(predicted, columns=['prediction']) 15 result.to_csv('predicted_result.csv', index=False) 16 print("输入的数据为: ") File ~\AppData\Roaming\Python\Python39\site-packages\pandas\core\frame.py:757, in DataFrame.__init__(self, data, index, columns, dtype, copy) 746 mgr = dict_to_mgr( 747 # error: Item "ndarray" of "Union[ndarray, Series, Index]" has no 748 # attribute "name" (...) 754 copy=_copy, 755 ) 756 else: --> 757 mgr = ndarray_to_mgr( 758 data, 759 index, 760 columns, 761 dtype=dtype, 762 copy=copy, 763 typ=manager, 764 ) 766 # For data is list-like, or Iterable (will consume into list) 767 elif is_list_like(data): File ~\AppData\Roaming\Python\Python39\site-packages\pandas\core\internals\construction.py:337, in ndarray_to_mgr(values, index, columns, dtype, copy, typ) 332 # _prep_ndarraylike ensures that values.ndim == 2 at this point 333 index, columns = _get_axes( 334 values.shape[0], values.shape[1], index=index, columns=columns 335 ) --> 337 _check_values_indices_shape_match(values, index, columns) 339 if typ == "array": 340 if issubclass(values.dtype.type, str): File ~\AppData\Roaming\Python\Python39\site-packages\pandas\core\internals\construction.py:408, in _check_values_indices_shape_match(values, index, columns) 406 passed = values.shape 407 implied = (len(index), len(columns)) --> 408 raise ValueError(f"Shape of passed values is {passed}, indices imply {implied}") ValueError: Shape of passed values is (1, 3), indices imply (1, 1)该怎么修改代码

最新推荐

recommend-type

关于__Federico Milano 的电力系统分析工具箱.zip

1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
recommend-type

mlab-upenn 研究小组的心脏模型模拟.zip

1.版本:matlab2014/2019a/2021a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。
recommend-type

RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz

REALTEK 8188FTV 8188eus 8188etv linux驱动程序稳定版本, 支持AP,STA 以及AP+STA 共存模式。 稳定支持linux4.0以上内核。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

:YOLO目标检测算法的挑战与机遇:数据质量、计算资源与算法优化,探索未来发展方向

![:YOLO目标检测算法的挑战与机遇:数据质量、计算资源与算法优化,探索未来发展方向](https://img-blog.csdnimg.cn/7e3d12895feb4651b9748135c91e0f1a.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5rKJ6YaJ77yM5LqO6aOO5Lit,size_20,color_FFFFFF,t_70,g_se,x_16) # 1. YOLO目标检测算法简介 YOLO(You Only Look Once)是一种
recommend-type

def ObjFun(x,y,beta): # 目标函数 """ Logistic regression loss function :param beta: model parameter vector :param x: feature matrix :param y: label vector :return: loss value """ n = x.shape[0] p = x.shape[1] pred = 1 / (1 + np.exp(-np.dot(x, beta))) pred = np.clip(pred, 1e-15, 1 - 1e-15) # 将预测值限制在一个很小的区间内 ObjVal = -np.sum(y * np.log(pred) + (1 - y) * np.log(1 - pred)) / n return ObjVal

好的,根据上面的目标函数,我们可以推导出其对应的梯度向量函数,如下所示: def gradient(x, y, beta): """ Compute gradient of the logistic regression loss function :param beta: model parameter vector :param x: feature matrix :param y: label vector :return: gradient vector """ n = x.shape[0] pred = 1 /
recommend-type

c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf

校园超市商品信息管理系统课程设计旨在帮助学生深入理解程序设计的基础知识,同时锻炼他们的实际操作能力。通过设计和实现一个校园超市商品信息管理系统,学生掌握了如何利用计算机科学与技术知识解决实际问题的能力。在课程设计过程中,学生需要对超市商品和销售员的关系进行有效管理,使系统功能更全面、实用,从而提高用户体验和便利性。 学生在课程设计过程中展现了积极的学习态度和纪律,没有缺勤情况,演示过程流畅且作品具有很强的使用价值。设计报告完整详细,展现了对问题的深入思考和解决能力。在答辩环节中,学生能够自信地回答问题,展示出扎实的专业知识和逻辑思维能力。教师对学生的表现予以肯定,认为学生在课程设计中表现出色,值得称赞。 整个课程设计过程包括平时成绩、报告成绩和演示与答辩成绩三个部分,其中平时表现占比20%,报告成绩占比40%,演示与答辩成绩占比40%。通过这三个部分的综合评定,最终为学生总成绩提供参考。总评分以百分制计算,全面评估学生在课程设计中的各项表现,最终为学生提供综合评价和反馈意见。 通过校园超市商品信息管理系统课程设计,学生不仅提升了对程序设计基础知识的理解与应用能力,同时也增强了团队协作和沟通能力。这一过程旨在培养学生综合运用技术解决问题的能力,为其未来的专业发展打下坚实基础。学生在进行校园超市商品信息管理系统课程设计过程中,不仅获得了理论知识的提升,同时也锻炼了实践能力和创新思维,为其未来的职业发展奠定了坚实基础。 校园超市商品信息管理系统课程设计的目的在于促进学生对程序设计基础知识的深入理解与掌握,同时培养学生解决实际问题的能力。通过对系统功能和用户需求的全面考量,学生设计了一个实用、高效的校园超市商品信息管理系统,为用户提供了更便捷、更高效的管理和使用体验。 综上所述,校园超市商品信息管理系统课程设计是一项旨在提升学生综合能力和实践技能的重要教学活动。通过此次设计,学生不仅深化了对程序设计基础知识的理解,还培养了解决实际问题的能力和团队合作精神。这一过程将为学生未来的专业发展提供坚实基础,使其在实际工作中能够胜任更多挑战。
recommend-type

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依
recommend-type

:YOLO目标检测算法的最佳实践:模型训练、超参数调优与部署优化,打造高性能目标检测系统

![:YOLO目标检测算法的最佳实践:模型训练、超参数调优与部署优化,打造高性能目标检测系统](https://img-blog.csdnimg.cn/20201024153508415.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1NNRjA1MDQ=,size_16,color_FFFFFF,t_70) # 1. YOLO目标检测算法概述 **1.1 YOLO算法简介** YOLO(You Only Look Once)是一种
recommend-type

pecl-memcache-php7 下载

你可以通过以下步骤来下载 pecl-memcache-php7: 1. 打开终端或命令行工具。 2. 输入以下命令:`git clone https://github.com/websupport-sk/pecl-memcache.git` 3. 进入下载的目录:`cd pecl-memcache` 4. 切换到 php7 分支:`git checkout php7` 5. 构建和安装扩展:`phpize && ./configure && make && sudo make install` 注意:在执行第5步之前,你需要确保已经安装了 PHP 和相应的开发工具。