简介:主成分回归(Principal Component Regression, PCR)是一种在回归分析中常用的降维技术。通过将多个自变量转化为少数几个主成分,PCR可以简化模型的复杂度并提高预测精度。在本文中,我们将通过一个Python实例来展示如何使用主成分回归进行数据分析。
主成分回归(Principal Component Regression, PCR)是一种在回归分析中常用的降维技术。PCR的主要思想是通过将多个自变量转化为少数几个主成分,简化模型的复杂度并提高预测精度。在Python中,我们可以使用scikit-learn库来实现主成分回归。
首先,我们需要导入必要的库和数据集。在这个例子中,我们将使用scikit-learn库中的波士顿房价数据集。这个数据集包含了506个样本,每个样本有13个特征,包括犯罪率、学区数量、平均房间平方英尺等。我们的目标是预测房价的中位数。
import numpy as npimport pandas as pdfrom sklearn.datasets import load_bostonfrom sklearn.model_selection import train_test_splitfrom sklearn.preprocessing import StandardScalerfrom sklearn.linear_model import LinearRegressionfrom sklearn.decomposition import PCA
接下来,我们将数据集分为训练集和测试集。我们将使用80%的数据作为训练集,剩下的20%作为测试集。
boston = load_boston()X = pd.DataFrame(boston.data, columns=boston.feature_names)y = boston.targetX_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
为了进行主成分回归,我们需要对数据进行标准化处理,使每个特征具有零均值和单位方差。这是因为在PCR中,特征的尺度会影响主成分的解释方差。
scaler = StandardScaler()X_train = scaler.fit_transform(X_train)X_test = scaler.transform(X_test)
接下来,我们将使用PCA来提取主成分。在这个例子中,我们将保留前两个主成分,因为它们可以解释数据中超过90%的方差。
pca = PCA(n_components=2)X_train_pca = pca.fit_transform(X_train)X_test_pca = pca.transform(X_test)
现在,我们可以使用线性回归模型来拟合主成分和目标变量之间的关系。我们将使用训练数据来训练模型,并在测试数据上进行评估。
lr = LinearRegression()lr.fit(X_train_pca, y_train)y_pred = lr.predict(X_test_pca)
最后,我们可以计算模型的性能指标,如均方误差(MSE)和R方值。MSE越小,说明模型预测的准确性越高;R方值越接近1,说明模型对数据的拟合度越高。
mse = np.mean((y_test - y_pred) ** 2)r2 = lr.score(X_test_pca, y_test)print(f'Mean Squared Error: {mse}')print(f'R-squared: {r2}')