在Python中编写最佳拟合线函数

时间:2017-03-30 13:08:39

标签: python python-2.7 scikit-learn

我正在使用python和scikitlearn进行线性回归和可视化目的。

我不需要使用linear_model.LinearRegression()中的sklearn,而是需要创建自己的函数来返回渐变和最佳拟合线y截距。

  

m =(μ(x)*μ(y) - μ(x * y))/((μ(x))2 - μ(x2))

     

b =μ(y) - m *μ(x)

其中μ是平均函数

我在python中努力做到这一点。

非常感谢任何协助。

import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model


diabetes = datasets.load_diabetes()



diabetes_X = diabetes.data[:, np.newaxis, 2]


diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]


diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]


regr = linear_model.LinearRegression()


regr.fit(diabetes_X_train, diabetes_y_train)


print('Coefficients: \n', regr.coef_)

print("Mean squared error: %.2f"
      % np.mean((regr.predict(diabetes_X_test) - diabetes_y_test) ** 2))

print('Variance score: %.2f' % regr.score(diabetes_X_test, diabetes_y_test))


plt.scatter(diabetes_X_test,  diabetes_y_test,  color='green', label="Test")
plt.scatter(diabetes_X_train,  diabetes_y_train,  color='red', label ='Training')
plt.plot(diabetes_X_test, regr.predict(diabetes_X_test), color='blue',
     linewidth=3, label='Best fit line')

plt.xticks(())
plt.yticks(())
plt.legend()

plt.show()

1 个答案:

答案 0 :(得分:0)

你可以用numpy计算平均值......

import numpy as np

m = (np.mean(x) * np.mean(y) − np.mean(x * y))/((np.mean(x))**2 − np.mean(x**2))
b = np.mean(y) − m * np.mean(x)

但是发送一些代码来获得更具体的帮助!