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

时间:2018-10-29 16:16:44

标签: python matplotlib linear-regression best-fit-curve

我正在matplotlib中相对于2d数组(y轴)绘制1d数组(x轴),因此每个x值都有多个y值。我想绘制一条最适合的straigt线(线性回归),而不仅仅是连接这些点的线。我该怎么办??

所有样本示例似乎每个x值都只有一个y值。当我使用'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))

注意:x_axis2是一个1d数组,而av_rsq3是2d数组。

3 个答案:

答案 0 :(得分:1)

您只需要添加具有匹配x值的这些点作为普通点,然后可以添加一条最合适的线,如下所示:

void FuncThatDoesSomething(T1 arg1, T2 arg2,...)
{
  // do it
}

// function has to match the event handler signature 
void FuncThatIsBoundInXaml(object sender, RoutedEventArgs e)
{
  var vm = sender.DataContext as YourViewModelType;
  // call method with required args
  FuncThatDoesSomething(vm.SomeProperty, 42);
}

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

*(或其他多项式系数)

答案 1 :(得分:0)

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

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]

答案 2 :(得分:0)

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

enter image description here