Python实现sigmoid函数时无法将结果存入列表用于seaborn绘图
问题核心原因
- 列表
l是fsig函数的局部变量,函数执行完成后外部作用域无法直接访问,调用fsig(x)后没有接收返回的计算结果,所以创建DataFrame时找不到变量l - 缺少
pandas、seaborn的导入语句,可选补充绘图展示的matplotlib导入 - 现有代码的sigmoid公式写反,标准公式为$\frac{1}{1+e^{-x}}$,当前写法得到的是反向的sigmoid曲线
修复后可运行的完整代码
import pandas as pd import seaborn as sns import matplotlib.pyplot as plt # 生成x轴数值 x = list(range(-5, 6, 1)) print(x) def fsig(n): e = 2.718 l = [] for z in n: # 若要保留你原有的计算逻辑可去掉负号,改为e**z y = (1 / (1 + e**(-z))) Y = round(y, 3) l.append(Y) print(Y) # 新增返回计算结果的逻辑 return l # 接收函数返回的y值列表 l = fsig(x) # 创建DataFrame df = pd.DataFrame({'Eje X': x, 'Eje Y': l}) print(df) # 绘图并展示 sns.lineplot(x = 'Eje X', y = 'Eje Y', data=df) plt.show()
内容的提问来源于stack exchange,提问作者Oswaldo Ivann
相关产品推荐
相关产品推荐

