python 线性回归分析模型检验标准--拟合优度详解
线性回归模型是回归分析中广泛使用的一种模型。对于线性回归模型,通常需要对其进行检验来验证其可靠性。其中一项重要的检验指标是拟合优度,本文将详细讲解拟合优度的计算和含义。
一、拟合优度
拟合优度(Goodness of Fit)是一种衡量模型拟合程度的指标,通常用 $R^2$ 表示。$R^2$ 的值介于 0 到 1 之间,表示因变量样本的变异有多少可以用自变量拟合解释。当 $R^2$ 越接近于 1 时,说明模型拟合效果越好。实际上,$R^2$ 可以理解为模型解释因变量差异的能力。
二、计算方法
拟合优度是通过比较实际值与模型预测值的离差平方和(SSres)和因变量总离差平方和(SStot)来计算得到。具体公式如下:
$$ R^2 = 1- \frac{SS_{\rm res}}{SS_{\rm tot}} $$
其中,$SS_{\rm res}$ 是实际值与模型预测值之间的离差平方和,$SS_{\rm tot}$ 是因变量总离差平方和。
计算拟合优度的过程可以通过 python 的 scikit-learn 库实现,具体代码如下:
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 计算拟合优度
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print("拟合优度为:{0:.2f}".format(r2))
其中 X_train
和 y_train
分别是训练集的自变量和因变量,X_test
和 y_test
分别是测试集的自变量和因变量。
三、实例应用
下面通过两个实例来说明如何使用拟合优度计算线性回归模型的可靠性。
实例1: 预测人口增长模型
首先,我们使用 scikit-learn 库生成一个简单的样本数据集用于模型训练和测试。
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split
# 生成样本数据
X, y = make_regression(n_samples=1000, n_features=5, noise=0.3, random_state=42)
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
然后,我们训练一个线性回归模型并计算拟合优度。
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 计算拟合优度
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print("拟合优度为:{0:.2f}".format(r2))
输出结果为:
拟合优度为:1.00
可见,在这个简单的人口增长模型中,线性回归拟合优度非常高,说明模型对实际数据拟合非常好。
实例2: 预测房价模型
接下来,我们以波士顿房价数据集为例,使用线性回归进行房价预测,并计算拟合优度。
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
# 导入波士顿房价数据集
boston = load_boston()
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(boston.data, boston.target, test_size=0.2, random_state=42)
# 训练线性回归模型
model = LinearRegression()
model.fit(X_train, y_train)
# 计算拟合优度
y_pred = model.predict(X_test)
r2 = r2_score(y_test, y_pred)
print("拟合优度为:{0:.2f}".format(r2))
输出结果为:
拟合优度为:0.67
可见,在波士顿房价数据集上,线性回归拟合优度略低,说明模型对实际数据拟合效果一般。由此,我们可以进一步探索如何优化模型拟合效果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python 线性回归分析模型检验标准–拟合优度详解 - Python技术站