gpt4 book ai didi

Python 线性回归误差

转载 作者:太空宇宙 更新时间:2023-11-04 03:11:42 26 4
gpt4 key购买 nike

我有两个具有以下值的数组:

>>> x = [24.0, 13.0, 12.0, 22.0, 21.0, 10.0, 9.0, 12.0, 7.0, 14.0, 18.0,
... 1.0, 18.0, 15.0, 13.0, 13.0, 12.0, 19.0, 13.0]

>>> y = [10.0, 9.0, 22.0, 7.0, 4.0, 7.0, 56.0, 5.0, 24.0, 25.0, 11.0, 2.0,
... 9.0, 1.0, 9.0, 12.0, 9.0, 4.0, 2.0]

我使用 scipy 库来计算 r 平方:

>>> from scipy.interpolate import polyfit
>>> p1 = polyfit(x, y, 1)

当我运行下面的代码时:

>>> yfit = p1[0] * x + p1[1]
>>> yfit
array([], dtype=float64)

yfit 数组为空。我不明白为什么。

最佳答案

问题是您正在执行 scalar addition有一个空的 list

list 为空的原因是因为您尝试使用 python 列表而不是 numpy.array 执行标量乘法.标量转换为整数 0,并创建一个零长度 list

我们将在下面探讨这个问题,但要修复它,您只需要将数据放在 numpy 数组中而不是列表中。要么最初创建它,要么将列表转换为数组:

>>> x = numpy.array([24.0, 13.0, 12.0, 22.0, 21.0, 10.0, 9.0, 12.0, 7.0, 14.0,
... 18.0, 1.0, 18.0, 15.0, 13.0, 13.0, 12.0, 19.0, 13.0]

对发生的事情的解释如下:

让我们解压表达式 yfit = p1[0] * x + p1[1]

组成部分是:

>>> p1[0]
-0.58791208791208893

p1[0] 不是 float ,而是 numpy 数据类型:

>>> type(p1[0])
<class 'numpy.float64'>

x 如上所示。

>>> p1[1]
20.230769230769241

p1[0]类似,p1[1]的类型也是numpy.float64:

>>> type(p1[0])
<class 'numpy.float64'>

将列表乘以非整数会将数字插入为整数,因此 p1[0]-0.58791208791208893 变为 0:

>>> p1[0] * x
[]

作为

>>> 0 * [1, 2, 3]
[]

最后,您将空列表添加到 p[1],这是一个 numpy.float64

这不会尝试将值附加到空列表。它执行 scalar addition ,即它向列表中的每个条目添加 20.230769230769241

但是,由于列表是空的,所以没有任何效果,除了它返回一个空的 numpy array 类型为 numpy.float64 :

>>> [] + p1[1]
array([], dtype=float64)

有影响的标量加法示例:

>>> [10, 20, 30] + p1[1]
array([ 30.23076923, 40.23076923, 50.23076923])

关于Python 线性回归误差,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37832994/

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