python - 当 x 值为日期时间时,如何使用 polyfit 获得最佳拟合曲线?

标签 python numpy datetime scipy curve-fitting

概述: 我有一个 Django 网站,我在其中绘制数据图表。我需要生成最佳拟合的多项式曲线,但图形的 x 值要么是日期,要么是日期时间。我在 numpy 数组上使用 polyfit。当我尝试使用 datetime_object.timestamp() 将日期时间转换为整数或 float 时,我得到了非常奇怪的系数值,并且图表与数据根本不匹配。有什么方法可以将 polyfit 方法与日期时间(或日期)结合使用来获得更适合数据的正态系数值?

milliseconds = []
for i in pricingDateTimes:
    dt_obj = datetime.strptime(i, '%Y-%m-%d %H:%M:%S')
    milliseconds.append(dt_obj.timestamp() * 1000)  # I have also tried division by powers of 10 to get more reasonable coefficients
    x = array(milliseconds)
    y = array(pricingMetricData)
    quadratic = polyfit(x, y, 2)

那么有没有办法使用 polyfit 和日期或日期时间作为 x 值来获取有效的数据系数? 是否有另一种方法可以获取与日期时间或日期最适合的曲线的系数?

谢谢!

最佳答案

您可以找到每个时间条目之间的时间差并计算累积和。 然后将其用作 x 值。

>>> timeval
[datetime.datetime(2019, 11, 29, 18, 23, 25, 123830), datetime.datetime(2019, 11, 29, 18, 23, 34, 123830), datetime.datetime(2019, 11, 29, 18, 23, 40, 123830), datetime.datetime(2019, 11, 29, 18, 23, 49, 123830), datetime.datetime(2019, 11, 29, 18, 23, 53, 123830), datetime.datetime(2019, 11, 29, 18, 23, 58, 123830), datetime.datetime(2019, 11, 29, 18, 23, 58, 123830), datetime.datetime(2019, 11, 29, 18, 24, 6, 123830), datetime.datetime(2019, 11, 29, 18, 24, 11, 123830), datetime.datetime(2019, 11, 29, 18, 24, 12, 123830), datetime.datetime(2019, 11, 29, 18, 24, 21, 123830), datetime.datetime(2019, 11, 29, 18, 24, 29, 123830), datetime.datetime(2019, 11, 29, 18, 24, 29, 123830), datetime.datetime(2019, 11, 29, 18, 24, 29, 123830), datetime.datetime(2019, 11, 29, 18, 24, 38, 123830), datetime.datetime(2019, 11, 29, 18, 24, 41, 123830), datetime.datetime(2019, 11, 29, 18, 24, 41, 123830), datetime.datetime(2019, 11, 29, 18, 24, 49, 123830), datetime.datetime(2019, 11, 29, 18, 24, 58, 123830), datetime.datetime(2019, 11, 29, 18, 24, 59, 123830)]
>>> x = np.array([x.seconds for x in np.diff(np.array(timeval))]).cumsum()
>>> x
array([ 9, 15, 24, 28, 33, 33, 41, 46, 47, 56, 64, 64, 64, 73, 76, 76, 84,
       93, 94], dtype=int32)

关于python - 当 x 值为日期时间时,如何使用 polyfit 获得最佳拟合曲线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59108577/

相关文章:

python - 将 Python 字典导出到 Geojson - 从 'coordinates' 值中删除双引号

python - 如何使用 Orange 离散化存储在 numpy 数组中的数据?

python - 有没有像 Python 的 HtmlAgilityPack (.NET) 这样好的 html 解析器?

python - 相邻元素之间的 Numpy 差异

python-3.x - 在时间序列中找到阶梯(或尖峰)形状的pythonic方法是什么?

php - 日期时间变量比较返回空白

python - 绘制悬停数据和悬停文本

python - TF/KERAS : passing a list as loss for single output

Python-Fitting 二维高斯到数据集

Python:让所有月份都在范围内?