基础概念
- 线性回归是很常见的一种回归,线性回归可以用来预测或者分类,主要解决线性问题。
- 线性回归过程主要解决的就是如何通过样本来获取最佳的拟合线。最常用的方法便是最小二乘法,它是一种数学优化技术,它通过最小化误差的平方和寻找数据的最佳函数匹配。
- “最小二乘法”的核心就是保证所有数据偏差的平方和最小。(“平方”的在古时侯的称谓为“二乘”)
“最小二乘法”数学推导
数据集
这里的数据采用Scikit-Learn库中的糖尿病数据集.
代码实现
1) 模块导入
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
2) 加载数据
diabetes = datasets.load_diabetes()
3) 取数据集中第一个特征
diabetes_X = diabetes.data[:, np.newaxis, 2]
4) 把数据分为测试数据和训练数据
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
5) 将标签分为训练/测试集合
diabetes_y_train = diabetes.target[:-20]
diabetes_y_test = diabetes.target[-20:]
6) 创建一个线性回归模型
regr = linear_model.LinearRegression()
7) 训练模型
regr.fit(diabetes_X_train, diabetes_y_train)
8) 对测试数据进行测试
diabetes_y_pred = regr.predict(diabetes_X_test)
9) 打印结果信息
#系数
print('Coefficients: \n', regr.coef_)
#均方差
print("均方差: %.2f"
% mean_squared_error(diabetes_y_test, diabetes_y_pred))
#预测
print('方差得分: %.2f' % r2_score(diabetes_y_test, diabetes_y_pred))
#绘制图形
plt.scatter(diabetes_X_test, diabetes_y_test, color='black')
plt.plot(diabetes_X_test, diabetes_y_pred, color='blue', linewidth=3)
plt.xticks(())
plt.yticks(())
plt.show()
打印结果
系数:
[938.23786125]
均方差: 2548.07
方差得分: 0.47
绘制结果
图中可以看到直线,显示线性回归如何尝试绘制一条直线,以便最大程度地减小数据集中观察到的响应与线性逼近预测的响应之间的残差平方和。