【问题标题】:wrong order in (matplotlib.pyplot) scatter plot axis [duplicate](matplotlib.pyplot)散点图轴中的错误顺序[重复]
【发布时间】:2018-04-28 19:49:50
【问题描述】:

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

预期:

我的结果:

缩放以查看轴:

代码:

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()

brain_body.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,我认为某些模块的安装有问题,但我不知道。

【问题讨论】:

  • 请发布您的代码。
  • 如果问题仅在您使用brain_body.txt 时出现,您需要提供此文件。如果问题不依赖于brain_body.txt 的使用,则提供一个不带它的minimal reproducible example
  • 我放了一个指向文件的链接,但我知道问题不在代码中,因为它在教师的计算机 (OSX) 中有效,但在我的计算机 (Windows) 中无效。我认为它应该是一些模块,但我不知道如何检查它们。我得到一个退出代码 0,没有堆栈跟踪。
  • 为什么这个被关闭为重复?它有一个重要的区别。 Y 轴上的数字不按顺序排列 - 我今天遇到的问题相同。据称重复的问题并没有显示出这种奇怪之处。
  • 我在 Y 轴上遇到了奇怪值的完全相同的问题,而不是按顺序排列。但我没有使用 Pandas 或进行线条拟合。只是绘制 x,y 值。追了几个小时大雁,终于发现了罪魁祸首:从文本文件中读取的值从来没有转换成浮点数,即x = float(linefromfile.split[0])。哦!一旦我放入 float() 转换,情节就很好了。避免使用弱类型语言的另一个原因!

标签: python matplotlib plot scatter-plot


【解决方案1】:

您想要绘制值,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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-10
    • 2016-07-27
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2016-10-16
    相关资源
    最近更新 更多