当前位置: 首页 > 知识库问答 >
问题:

PYTHON:每x值多个y值的最佳拟合行

宗政颖逸
2023-03-14

我在matplotlib中绘制一个1d数组(x轴)对一个2d数组(y轴),所以每个x值都有多个y值。我想绘制一条最佳拟合的直线(线性回归),而不仅仅是一条连接点的直线。我怎么能这么做???

所有otehr示例似乎每个x值只有一个y值。当我使用从sklearn.linear_model导入线性回归时,我得到的最佳拟合线与每个x值的y值一样多。

编辑:以下是我尝试过的代码:

model = LinearRegression()
x_axis2 = np.arange(0,len(av_rsq3))
x_axis2 = x_axis2.reshape(-1,1)
model.fit(x_axis2, av_rsq3)
pt.figure()
pt.plot(x_axis2,av_rsq3, 'rx')
pt.plot(x_axis2, model.predict(x_axis2))

注意:x_axis2是一个一维阵列,而av_rsq3是一个二维阵列。

共有3个答案

庾奇思
2023-03-14

如果只想绘制y值和它们之间的平均线,这是可能的。从另一个答案借用虚拟数据:

x = [1,2,3,4]

y = [4,6,2,7]
y1 = [2,3,6,8]

plt.scatter(x,y)
plt.scatter(x,y1)
plt.plot(x,[((y[i]+y1[i])/2) for i in range(len(y))])
松涵容
2023-03-14

您需要做的是提供一对一映射。点出现的顺序并不重要。如果你有这样的东西

X:  [1,2,3,4]
Y1: [4,6,2,7]
Y2: [2,3,6,8]

你会得到这个

X: [1,2,3,4,1,2,3,4]
Y: [4,6,2,7,2,3,6,8]
白志勇
2023-03-14

你只需要添加这些与x值匹配的点作为普通点,然后你可以添加一行最佳拟合如下:

import numpy as np
from numpy.polynomial.polynomial import polyfit
import matplotlib.pyplot as plt

x = np.array([1,2,3,4,5,6,6,6,7,7,8])
y = np.array([1,2,4,8,16,32,34,30,61,65,120])

# Fit with polyfit
b, m = polyfit(x, y, 1)

plt.plot(x, y, '.')
plt.plot(x, b + m * x, '-')
plt.show()

*(或其他多项式系数)

 类似资料:
  • 问题内容: 我需要在Seaborn distplot上绘制与某些X值相对应的点,以使它们落在密度曲线上或低于密度曲线。这是来自以下URL的distplot: 从Seaborn网站-distplot示例 因此,例如,在上面显示的曲线图中,我需要以编程方式确定与落在密度曲线上的X值0对应的Y轴值是多少。从图中看来,它大约在0.37左右。如何在我的程序中得到它? 假设可以做到,那么我如何在所示的图中显示

  • 问题内容: 我正在使用pythons mock.patch并想更改每个调用的返回值。请注意,正在修补的函数没有输入,因此无法基于输入更改返回值。 这是我的代码供参考。 我的测试代码: 只是“ input”的独立于平台的版本(python 2和3)。因此,最终我将尝试模拟用户的输入。我已经尝试过使用列表作为返回值,但这并不能正常工作。 您可以看到,如果返回值无效,那么我将在此处得到一个无限循环。因此

  • Python(x,y) 是一个免费的科学和工程开发包,提供数学计算、数据分析和可视化展示。   

  • 问题内容: 今天,我在登录表单后面添加了额外的安全检查,以减缓暴力攻击。我有多个登录表单,并提供了一个易于调用的函数,该函数可以进行所有检查,然后返回结果。 问题是结果不是单个值,结果包括: 为此,我创建了一个新类。这一切都很好。 但是我经常有方便的实用程序函数,这些函数会返回多个值,并开始发现每次为结果创建一个新类都有些烦人。 有没有更好的方法来返回多个值?还是我只是懒惰?:) 问题答案: 不,

  • 问题内容: 使用math.pow或**运算符哪个更有效?我什么时候应该使用另一个? 到目前为止,我知道可以返回一个或一个,如果您使用小数,该函数将返回一个浮点数 问题答案: 使用Power运算符将更快,因为它不会产生函数调用的开销。如果您反汇编Python代码,则可以看到以下内容: 请注意,我在这里使用变量作为指数,因为类似常数的表达式实际上是在编译时求值的。 现在,实际上,这种差异并不重要,正如

  • 我刚来爪哇。刚刚发现在表达式中,,y假设x的值,x变成+1。如果我听起来很蠢,请原谅,但根据优先顺序,赋值运算符在末尾。所以x++不是应该先发生,然后是赋值吗。提前道谢。