我正在使用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()
答案 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)
但是发送一些代码来获得更具体的帮助!