Scikit - 学习套索路径

Machine LearningMachine LearningBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

本实验将演示如何使用 LARS 算法在糖尿病数据集上沿着正则化参数计算套索路径。套索路径是随着 L1 正则化参数增加的线性模型系数的曲线图。每种颜色代表系数向量的一个不同特征,并作为正则化参数的函数显示。

虚拟机提示

虚拟机启动完成后,点击左上角切换到“笔记本”标签以访问 Jupyter Notebook 进行练习。

有时,你可能需要等待几秒钟让 Jupyter Notebook 完成加载。由于 Jupyter Notebook 的限制,操作验证无法自动化。

如果你在学习过程中遇到问题,随时向 Labby 提问。课程结束后提供反馈,我们将立即为你解决问题。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL ml(("Machine Learning")) -.-> ml/FrameworkandSoftwareGroup(["Framework and Software"]) ml/FrameworkandSoftwareGroup -.-> ml/sklearn("scikit-learn") subgraph Lab Skills ml/sklearn -.-> lab-49191{{"Scikit - 学习套索路径"}} end

加载数据

第一步是从 Scikit-Learn 中加载糖尿病数据集。

from sklearn import datasets

X, y = datasets.load_diabetes(return_X_y=True)

计算套索路径

接下来,我们使用 LARS 算法计算套索路径。Scikit-Learn 的 linear_model 模块中的 lars_path 函数用于计算套索路径。该函数将输入特征、目标变量和方法作为参数。在这种情况下,我们使用 “lasso” 方法进行 L1 正则化。

from sklearn import linear_model

_, _, coefs = linear_model.lars_path(X, y, method="lasso", verbose=True)

绘制套索路径

计算出套索路径后,我们绘制结果。每个特征的系数作为正则化参数的函数进行绘制。

import numpy as np
import matplotlib.pyplot as plt

xx = np.sum(np.abs(coefs.T), axis=1)
xx /= xx[-1]

plt.plot(xx, coefs.T)
ymin, ymax = plt.ylim()
plt.vlines(xx, ymin, ymax, linestyle="dashed")
plt.xlabel("|coef| / max|coef|")
plt.ylabel("Coefficients")
plt.title("LASSO Path")
plt.axis("tight")
plt.show()

解释结果

生成的图表展示了糖尿病数据集的套索路径。每种颜色代表系数向量的一个不同特征,并作为正则化参数的函数显示。随着正则化参数的增加,一些特征的系数向零收缩,这表明这些特征对于预测目标变量的重要性较低。

总结

在本实验中,我们展示了如何使用 LARS 算法在糖尿病数据集上计算和绘制套索路径。套索路径是一种有用的可视化工具,用于理解 L1 正则化对线性模型系数的影响。