我正在关注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中,我认为某些模块的安装存在问题,但我没有线索。
答案 0 :(得分:4)
您想要绘制值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()