from BP import BPNeuralNetwork import numpy as np import pandas as pd # 读取 Excel 文件并划分数据集 train_input=pd.read_excel('test.xlsx', nrows=100, usecols=[0,1, 2, 3, 4, 5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21, 22, 23, 24, 25, 26,27,28,29,30,31, 32, 33, 34]) test_input=pd.read_excel('test.xlsx', skiprows=99, nrows=50, usecols=[0,1, 2, 3, 4, 5, 6,7,8,9,10,11,12,13,14,15, 16,17,18,19,20,21, 22, 23, 24, 25, 26,27,28,29,30,31, 32, 33, 34]) train_output=pd.read_excel('result.xlsx', nrows=100, usecols=[0]) test_output=pd.read_excel('result.xlsx', skiprows=99, nrows=50, usecols=[0]) print(train_input.shape, test_input.shape) print(train_output.shape, test_output.shape) # 构建神经网络模型并训练 nn = BPNeuralNetwork(num_input=train_input.shape[1], num_hidden=3, num_output=train_output.shape[1], learning_rate=0.1) nn.train(train_input, train_output, num_epochs=500) # 在测试集上进行预测并计算准确率 y_pred = nn.predict(test_input) #print(test_output.shape, y_pred.shape)02 right = 0 if not test_output.empty: # 进行您的操作 for i in range(test_output.shape[0]): if test_output[i] == y_pred[i]: right += 1 accuracy = right / test_output.shape[0] print("Accuracy: {:.2f}%".format(accuracy * 100)) else: # DataFrame 为空的处理逻辑 print("test_output DataFrame为空")
时间: 2023-09-22 16:05:50 浏览: 322
根据您提供的代码,我注意到您正在使用BPNeuralNetwork类构建一个神经网络模型,并使用train_input和train_output来训练模型。然后,您使用test_input来进行预测,并将预测结果与test_output进行比较以计算准确率。
在代码中,我还看到您在循环中使用索引来访问test_output和y_pred的元素。但是,请注意,pandas DataFrame中的列需要使用列名或loc方法来进行访问,而不是使用索引。
修改您的代码如下:
```python
right = 0
if not test_output.empty:
# 进行您的操作
for i in range(test_output.shape[0]):
if test_output.loc[i, 0] == y_pred[i, 0]:
right += 1
accuracy = right / test_output.shape[0]
print("Accuracy: {:.2f}%".format(accuracy * 100))
else:
# DataFrame 为空的处理逻辑
print("test_output DataFrame为空")
```
这样,您将能够通过使用loc方法来访问test_output DataFrame中的元素,并计算准确率。
请确保在使用索引访问DataFrame时使用正确的列名或loc方法,并确保DataFrame的形状和索引与预期一致。如果问题仍然存在,请提供更多的代码和数据细节,以便我能够更好地帮助您解决问题。
阅读全文