gpt4 book ai didi

python - 如何将非线性模型转换为线性模型?

转载 作者:太空宇宙 更新时间:2023-11-04 08:46:51 27 4
gpt4 key购买 nike

我正在分析一个数据集,我知道数据应该遵循幂模型:

y = a*x**b

我通过取对数将其转换为线性:

ln(y) = ln(a) + b* ln(x)

但是,在向图中添加趋势线时出现了问题

slope, intercept, r_value, p_value, std_err = scipy.stats.mstats.linregress(x_ln, y_ln)
yy = np.exp(intercept)*wetarea_x**slope
plt.scatter(wetarea_x, arcgis_wtrshd_x, color = 'blue')
plt.plot(wetarea_x, yy, color = 'green')

enter image description here

这就是我用这段代码得到的。如何修改代码,使图中的趋势线正确?

最佳答案

你的绿色奇怪图是你在 matplotlib 中绘制线图时得到的,x 值未排序。这是一个线图,但它通过 (x, y) 对左右跳跃的线连接(在您的特定情况下,它看起来像回到 x 原点附近)。这给出了这些奇怪的模式。

蓝色图没有这个问题,因为它是散点图。

尝试在根据第一个使用 numpy.argsort 的索引对两个数组进行排序后调用绘图, 说

wetarea_x[np.argsort(wetarea_x)]

yy[np.argsort(wetarea_x)]

关于python - 如何将非线性模型转换为线性模型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39645488/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com