我希望找到点和预测线之间的距离。理想情况下,我希望结果显示在一个包含距离的新列中,称为“距离”。
我的进口:
import os.path
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import preprocessing
from sklearn.linear_model import LinearRegression
%matplotlib inline
我的数据样本:
idx Exam Results Hours Studied
0 93 8.232795
1 94 7.879095
2 92 6.972698
3 88 6.854017
4 91 6.043066
5 87 5.510013
6 89 5.509297
到目前为止我的代码:
x = df['Hours Studied'].values[:,np.newaxis]
y = df['Exam Results'].values
model = LinearRegression()
model.fit(x, y)
plt.scatter(x, y,color='r')
plt.plot(x, model.predict(x),color='k')
plt.show()
非常感谢任何帮助。感谢
答案 0 :(得分:8)
您只需将y
和model.predict(x)
之间的差异分配给新列(如果只是想要差异,则取绝对值):
#df["Distance"] = abs(y - model.predict(x)) # if you only want magnitude
df["Distance"] = y - model.predict(x)
print(df)
# Exam Results Hours Studied Distance
#0 93 8.232795 -0.478739
#1 94 7.879095 1.198511
#2 92 6.972698 0.934043
#3 88 6.854017 -2.838712
#4 91 6.043066 1.714063
#5 87 5.510013 -1.265269
#6 89 5.509297 0.736102
这是因为您的模型为每个自变量(y
)预测x
(因变量)。 x
坐标是相同的,因此y
中的差异是您想要的值。