线性回归是统计学中一种预测分析方法,它通过建立一个或多个自变量与因变量之间的线性关系模型来预测结果。在本示例中,将通过一个二维图表来展示数据点,并尝试绘制一条最佳拟合直线,以最小化观测数据集的响应与线性近似预测响应之间的残差平方和。
在进行线性回归分析时,首先需要计算回归系数、残差平方和以及决定系数。这些统计量可以帮助评估模型的拟合程度和预测能力。例如,决定系数(R²)的值越接近1,表示模型的预测效果越好。
以下是使用Python语言和scikit-learn库进行线性回归分析的代码示例。首先,导入了必要的库,包括matplotlib用于绘图,numpy用于数值计算,以及scikit-learn中的datasets、linear_model和metrics模块用于数据加载、模型创建和评估。
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets, linear_model
from sklearn.metrics import mean_squared_error, r2_score
# 加载糖尿病数据集
diabetes_X, diabetes_y = datasets.load_diabetes(return_X_y=True)
# 仅使用一个特征
diabetes_X = diabetes_X[:, np.newaxis, 2]
# 将数据集分为训练集和测试集
diabetes_X_train = diabetes_X[:-20]
diabetes_X_test = diabetes_X[-20:]
# 将目标变量分为训练集和测试集
diabetes_y_train = diabetes_y[:-20]
diabetes_y_test = diabetes_y[-20:]
# 创建线性回归对象
regr = linear_model.LinearRegression()
# 使用训练集训练模型
regr.fit(diabetes_X_train, diabetes_y_train)
# 使用测试集进行预测
diabetes_y_pred = regr.predict(diabetes_X_test)
# 输出系数
print("系数:\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()
在上述代码中,首先加载了糖尿病数据集,并选择了其中一个特征进行分析。然后,将数据集分为训练集和测试集,分别用于模型的训练和评估。通过创建线性回归对象并使用训练集进行训练,得到了模型的系数。接着,使用测试集进行预测,并计算了均方误差和决定系数,以评估模型的性能。最后,使用matplotlib库绘制了测试数据点和预测结果,以直观地展示模型的拟合效果。
通过这个示例,可以看到线性回归模型在数据分析和预测中的应用。通过选择合适的特征和调整模型参数,可以提高模型的预测准确性。此外,通过评估模型的统计量,可以了解模型的拟合程度和预测能力,从而为实际问题提供更可靠的解决方案。