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

2024-10-01 04:57:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

所有的otehr示例似乎只有一个y值/x值。当我使用'from'时sklearn.linear_模型import LinearRegression'我得到的最佳拟合行数与每个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轴2是1d阵列,av rsq3是2d阵列。在


Tags: pt示例modelplotmatplotlib绘制线性数组
3条回答

如果你只想绘制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))])

{a1}

只需将这些具有匹配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()

产生graph
请注意,直线不适合我的示例数据,但我在编写它时没有考虑到这一点:)使用polyfit,您还可以更改拟合度,以及获得渐变*和偏移的误差裕度。在

*(或其他多项式系数)

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

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

你会得到这个的

^{pr2}$

相关问题 更多 >