python - (matplotlib.pyplot) 散点图轴中的错误顺序

标签 python matplotlib plot scatter-plot

<分区>

我正在关注 this linear regression example但我的结果与应该的不同。问题出在绘图轴上,它们没有按顺序排列。

预期:

enter image description here

我的结果:

enter image description here

缩放以查看轴:

enter image description here

代码:

import pandas as pd
from sklearn import linear_model
import matplotlib.pyplot as plt

#read data
dataframe = pd.read_fwf('brain_body.txt')
x_values = dataframe[['Brain']]
y_values = dataframe[['Body']]

#train model on data
body_reg = linear_model.LinearRegression()
body_reg.fit(x_values, y_values)

#visualize results
plt.scatter(x_values, y_values)
plt.plot(x_values, body_reg.predict(x_values))
plt.show()

脑体.txt

Brain        Body
    3.385    44.500
    0.480    15.500
    1.350     8.100
  465.000   423.000
   36.330   119.500
   27.660   115.000
   14.830    98.200
    1.040     5.500
    4.190    58.000
    0.425     6.400
    0.101     4.000
    0.920     5.700
    1.000     6.600
    0.005     0.140
    0.060     1.000
    3.500    10.800
    2.000    12.300
    1.700     6.300
 2547.000  4603.000
    0.023     0.300
  187.100   419.000
  521.000   655.000
    0.785     3.500
   10.000   115.000
    3.300    25.600
    0.200     5.000
    1.410    17.500
  529.000   680.000
  207.000   406.000
   85.000   325.000
    0.750    12.300
   62.000  1320.000
 6654.000  5712.000
    3.500     3.900
    6.800   179.000
   35.000    56.000
    4.050    17.000
    0.120     1.000
    0.023     0.400
    0.010     0.250
    1.400    12.500
  250.000   490.000
    2.500    12.100
   55.500   175.000
  100.000   157.000
   52.160   440.000
   10.550   179.500
    0.550     2.400
   60.000    81.000
    3.600    21.000
    4.288    39.200
    0.280     1.900
    0.075     1.200
    0.122     3.000
    0.048     0.330
  192.000   180.000
    3.000    25.000
  160.000   169.000
    0.900     2.600
    1.620    11.400
    0.104     2.500
    4.235    50.400

这是我第一次使用 python,我认为某些模块的安装有问题,但我没有任何线索。

最佳答案

您想绘制值,plt.scatter(x_values.values, y_values.values)。对数据进行排序以获得平滑的线也是有意义的。

import numpy as np
import pandas as pd
from sklearn import linear_model
import matplotlib.pyplot as plt

#read data
dataframe = pd.read_fwf('data/brainbody.txt')
x_values = dataframe[['Brain']]
y_values = dataframe[['Body']]

#train model on data
body_reg = linear_model.LinearRegression()
body_reg.fit(x_values, y_values)

#visualize results
plt.scatter(x_values.values, y_values.values)

x = np.sort(x_values.values.flatten())
plt.plot(x, body_reg.predict(x[:,np.newaxis]))

plt.show()

enter image description here

关于python - (matplotlib.pyplot) 散点图轴中的错误顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47309918/

相关文章:

python - 当 Pandas 图中的重叠条具有不同的宽度时,它们并不完全居中

python - Matplotlib:子图之间的中心刻度标签

R:如何标记绘图上的某些点

python - Python Flask 的 reqparse.RequestParser() 中的特殊字符

python - 如何从Python脚本在默认编辑器中打开python文件

python - numpy,scipy,在函数、模块之间轻松传递大量变量

python - Matplotlib 线条连接不顺畅,Python

matlab - 绘制数据向量

python - 一种热编码 - 将多列编码为一列

python - 什么是半径 x 的圆中整数坐标的更快解决方案