D:\PyCharm\learning\1\BP.py:22: RuntimeWarning: overflow encountered in exp return 1 / (1 + np.exp(-x)) Traceback (most recent call last): File "D:\anaconda\envs\mytest\lib\site-packages\pandas\core\indexes\base.py", line 3081, in get_loc return self._engine.get_loc(casted_key) File "pandas\_libs\index.pyx", line 70, in pandas._libs.index.IndexEngine.get_loc File "pandas\_libs\index.pyx", line 101, in pandas._libs.index.IndexEngine.get_loc File "pandas\_libs\hashtable_class_helper.pxi", line 975, in pandas._libs.hashtable.Float64HashTable.get_item File "pandas\_libs\hashtable_class_helper.pxi", line 982, in pandas._libs.hashtable.Float64HashTable.get_item KeyError: 0.0 The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\PyCharm\learning\1\BPmain.py", line 19, in <module> y_pred = nn.predict(test_input) File "D:\PyCharm\learning\1\BP.py", line 66, in predict output[i] = self.forward_propagation(input_data[i]) File "D:\anaconda\envs\mytest\lib\site-packages\pandas\core\frame.py", line 3024, in __getitem__ indexer = self.columns.get_loc(key) File "D:\anaconda\envs\mytest\lib\site-packages\pandas\core\indexes\numeric.py", line 395, in get_loc return super().get_loc(key, method=method, tolerance=tolerance) File "D:\anaconda\envs\mytest\lib\site-packages\pandas\core\indexes\base.py", line 3083, in get_loc raise KeyError(key) from err KeyError: 0
时间: 2023-07-21 11:08:46 浏览: 147
PyCharm2020.1.2社区版安装,配置及使用教程详解(Windows)
根据你提供的错误信息,首先出现了一个行时警告(RuntimeWarning),警告信息是在 "D:\PyCharm\learning\1\BP.py" 文件的第 22 行,即在 `sigmoid` 函数中遇到了溢出。
接着出现了一个键错误(KeyError),错误信息显示了以下关键行号:
1. 第一个错误是在 "pandas\core\indexes\base.py" 文件的第 3081 行,即在获取索引位置时发生错误。
2. 第二个错误是在 "D:\PyCharm\learning\1\BP.py" 文件的第 66 行,即在 `predict` 函数中的 `output[i] = self.forward_propagation(input_data[i])` 调用处。
根据错误信息,`input_data` 是一个 Pandas DataFrame 对象,而不是一个数组或矩阵。因此,你无法通过索引方式访问 DataFrame 的行。
要解决此问题,你可以使用 `input_data.iloc[i]` 或 `input_data.loc[i]` 来访问 DataFrame 中的第 `i` 行数据。
请参考以下示例代码:
```python
output[i] = self.forward_propagation(input_data.iloc[i]) # 使用 iloc
# 或
output[i] = self.forward_propagation(input_data.loc[i]) # 使用 loc
```
这样应该能够解决你遇到的键错误问题。
另外,关于 sigmoid 函数的溢出警告,你可以尝试使用 `np.clip` 函数对输入进行截断,以避免溢出。例如:
```python
def sigmoid(x):
x = np.clip(x, -500, 500) # 截断输入,避免溢出
return 1 / (1 + np.exp(-x))
```
通过将输入 `x` 限制在一个较小的范围内,可以避免溢出的问题。
如果你还有其他问题,请随时提问。
阅读全文