岭回归是一种常用的线性回归方法,它在处理多重共线性问题时能够取得比普通最小二乘回归更好的结果,同时也可以用于特征选择。
Python是一门强大的编程语言,使用Python进行岭回归分析非常方便。本文将通过一个实例来介绍如何使用Python进行岭回归分析。
首先,我们需要导入需要的库,如下所示:
import pandas as pd import numpy as np from sklearn.linear_model import Ridge from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error
本实例使用的数据是Boston房价数据,该数据集包含了1970年代波士顿地区房屋的13个不同特征及其价格的信息。我们可以通过pandas库中的read_csv函数将数据读取进来,如下所示:
data = pd.read_csv('Boston.csv')
接着,我们需要将数据集分为训练集和测试集。这可以使用scikit-learn库中的train_test_split函数实现,如下所示:
X = data.iloc[:, :-1].values y = data.iloc[:, -1].values X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
在训练岭回归模型之前,我们需要对数据进行标准化处理,以保证在不同特征取值范围差异很大的情况下能够比较他们对目标变量的影响。我们可以使用scikit-learn库中的StandardScaler函数进行标准化处理,代码如下所示:
from sklearn.preprocessing import StandardScaler sc_X = StandardScaler() X_train = sc_X.fit_transform(X_train) X_test = sc_X.transform(X_test)
然后我们可以定义一个岭回归模型,将其放入我们的训练数据集中进行训练,代码如下所示:
ridge = Ridge(alpha=0.1) ridge.fit(X_train, y_train)
其中alpha值是超参数,需要通过调参来优化模型。我们可以通过在训练集和测试集上评估预测结果来选择最优的超参数。在本实例中,我们选择针对alpha值进行交叉验证来选择最优的超参数,代码如下所示:
from sklearn.model_selection import GridSearchCV ridge_params = {'alpha': [0.001, 0.01, 0.1, 1, 10]} ridge_grid = GridSearchCV(estimator=Ridge(), param_grid=ridge_params, cv=10, scoring='neg_mean_squared_error') ridge_grid.fit(X_train, y_train) print("Best alpha:", ridge_grid.best_params_['alpha'])
通过交叉验证,我们选择最优的alpha值为0.1。
接下来,我们可以在测试集上进行预测,并评估预测结果。我们可以使用scikit-learn库中的mean_squared_error函数计算均方误差,代码如下所示:
y_pred = ridge.predict(X_test) mse = mean_squared_error(y_test, y_pred) print("Mean Squared Error:", mse)
最后,我们可以使用matplotlib库来绘制预测值和真实值的散点图,以便更好地了解模型的预测效果。代码如下所示:
import matplotlib.pyplot as plt plt.scatter(y_test, y_pred) plt.xlabel("True Values") plt.ylabel("Predictions") plt.show()
总之,Python中的岭回归分析非常方便,使用scikit-learn库的函数能够帮助我们轻松实现预测结果的评估和可视化。
【转自:香港高防 http://www.558idc.com/stgf.html转载请说明出处】