我在MaMattLIB中针对一维数组(y轴)绘制一维数组(x轴),因此对于每个x值存在多个y值。我想画一条最适合的直线(线性回归),而不仅仅是一条连接点的直线。我该怎么做???
所有的otehr示例似乎只有一个y值/x值。当我使用“from sklearn.linear_model 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))
注意:XAXISS2是一维数组,AVYRSQ3是2D数组。
最佳答案
只需将这些具有匹配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()
会产生。
注意,一条直线不适合我的示例数据,但我在编写它时没有考虑到这一点:)使用polyfit,您还可以更改拟合程度,以及获取渐变*和偏移中的误差边缘。
*(或其他多项式系数)