Numpy / matplotlib-绘制线性回归会产生错误的斜率

问题描述 投票:1回答:2

我有一个csv文件中的简单x,y数据,我想绘制线性拟合。我按照这个问题的第一个答案中的示例进行操作:Linear regression with matplotlib / numpy

我的代码如下:

#!/usr/bin/env python
import matplotlib.axes as ax
import matplotlib.pyplot as plt
import numpy as np
import csv
import seaborn
from scipy import stats

 x = []
 y = []
 z = []

with open('Data.csv','r') as csvfile:
plots = csv.reader(csvfile, delimiter=',')
for row in plots:
    x.append(float(row[0]))
    y.append(float(row[2]))



xarray = np.array(x)  #Convert data from csv into arrays
yarray = np.array(y)

m,b = np.polyfit(xarray,yarray,1) 
plt.plot(xarray, yarray,'b+', m*xarray+b,'--k')
plt.plot(x,y,'ko')



 f = [28.45294177, 61.06207611, 85.51892687,115.21653136,143.7495239] #this is the array 
  resulting from m*x+b

 plt.plot(m*xarray+b)
 plt.plot(x,f, 'r+')
 plt.xlabel('Masse [kg]')
 plt.ylabel('Auslenkung[mm]')
 ax = plt.gca()
 ax.set_xlim([0,0.3])
 plt.title('')
 plt.grid(True, linestyle = '--') #enable Grid, dashed linestyle

 plt.show()

输出为:

“此图”“>

但是,所得图形(蓝线)根本不符合预期,斜率很小。当我得到m * x + b函数得出的数组的值并将其绘制时,这些值对应于预期的线性回归和实际的数据(红色加号)

老实说,我在这里机智。我似乎无法弄清楚我的错误在哪里,也不知道蓝线从何而来。

任何帮助将不胜感激

我有一个csv文件中的简单x,y数据,我想绘制线性拟合。我在此问题的第一个答案中遵循了该示例:使用matplotlib / numpy进行线性回归我的代码看起来...

python numpy matplotlib linear-regression
2个回答
1
投票

plt.plot(m*xarray+b)应为plt.plot(xarray, m*xarray+b)。否则,matplotlib将对X语法使用range(0, (m*xarray+b).size),如in the docs所述,位于第三行:


0
投票

我从您的地块中提取数据进行分析。这是一个图形化的Python多项式拟合器,它使用numpy.polyfit()进行拟合,并使用numpy.polyval()进行评估。您可以在代码顶部设置多项式顺序。这还将绘制回归误差的散点图。将示例中的硬编码数据替换为来自csv文件的xarray和yarray数据,您应该已完成。plot

© www.soinside.com 2019 - 2024. All rights reserved.