在 Python 中拟合阶跃函数
阶跃函数是带有看起来像一系列步骤的图形的方法。 它们由一系列中间有间隔的水平线段组成,也可以称为阶梯函数。
在任何给定的时间间隔内,阶跃函数都有一个常数值,在图形上创建一条水平线。 间隔使每个线段之间跳跃。
阶跃函数在生成离散图时很有用,并广泛用于 Python 中的矢量化绘图。 它们可以使用 numpy 在 Python 中实现。
本文给出了阶跃函数的简单演示。
在 Python 中拟合阶跃函数
对于此示例,将使用 Python 版本 3.10.6。 此外,我们需要安装所需的库,在我们的例子中,它是 numpy。
可以通过运行以下命令来安装 Numpy。
$ pip install numpy
现在我们需要 scipy 来优化数据并将其拟合到图表中。 可以使用下面的命令安装它。
$ pip install scipy
对于此示例,我们将使用数据集生成一个简单的阶跃函数。 开始,使用以下语句将 numpy 和 scipy 导入到环境中:
import numpy as np
import scipy
我们将在此示例中使用 numpy linspace 方法来生成一个小数据集。 下面的代码片段可以生成这个数据集:
x = np.linspace(0, 10, 101)
我们需要生成一个 heaviside 函数来展示楼梯绘图。 根据用例要求,它可以使用 numpy 或自定义方法生成。
要创建该函数,我们将在本示例中使用 numpy 方法 heaviside。
y = np.heaviside((x - 5), 0.)
此方法根据下图生成重赛值。
0 if x1 < 0
heaviside(x1, x2) = x2 if x1 == 0
1 if x1 > 0
我们将使用 scipy 库中的 curve_fit 来生成具有最佳数据点的参数。
curve_fit(sigmoid, x, y)
现在我们已经清理并理解了流程,最终脚本将如下所示:
import numpy as np
from scipy.special import expit
from scipy.optimize import curve_fit
x = np.linspace(0, 10, 101)
y = np.heaviside((x - 5), 0.)
def sigmoid(x, x0, b):
return expit((x - x0) * b)
args, cov = curve_fit(sigmoid, x, y)
print(args)
我们可以使用 matplotlib 监控此绘图的结果。 添加绘图片段和最终代码如下。
import matplotlib.pyplot as plt
import numpy as np
from scipy.special import expit
from scipy.optimize import curve_fit
x = np.linspace(0, 10, 101)
y = np.heaviside((x - 5), 0.)
def sigmoid(x, x0, b):
return expit((x - x0) * b)
args, cov = curve_fit(sigmoid, x, y)
plt.scatter(x, y)
plt.plot(x, sigmoid(x, *args))
plt.show()
print(args)
输出:
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串