# 基于糖尿病的数据集,基于Lasso计算特则的相关系数路径,Lasso中对L1正则项进行优化
# 图示中每一个颜色代表了一个特征值的相关系数向量
# 本例中使用Lasso模型基于数据集进行优化,得到不同超参数值的情况下,相关系数的解
# 例子中并没有输出对数据集拟合的结果,只输出参数相关信息
# 因为L1正则化容易产生稀疏解,也常用来做特征选择
import numpy as np
import matplotlib.pyplot as plt
from sklearn import linear_model
from sklearn import datasets
# 载入糖尿病数据集,用于回归模型,442个样本,10个特征值,特征值取值范围为(-2,2),目标值取值范围为(25,346)
diabetes = datasets.load_diabetes()
X = diabetes.data
y = diabetes.target
# linear_model模块下的函数,最小角回归计算lasso路径
# 参数method,与选择的优化对象有关,可选lar或lasso
# 参数max_iter,最大迭代次数
# 参数alpha_min,路径上最小相关系数值,与Lasso算法中正则化参数alpha相对应
# 参数method,选择返回模型类型,lar代表最小角回归,lasso代表Lasso
# 参数return_path,为真时返回完整路径上的值,否则只返回路径上最后一个点的值
# 参数positive,严格限制相关系数>=0,只限于lasso算法下
# 返回值alphas,数组,大小为n_alphas+1,返回每一次迭代的最大方差,n_alphas取max_iter或者路径上alpha大于alpha_min的个数,两者中较小的那个
# 返回值active,数组,大小为n_alphas,返回路径结束时活跃的变量索引
# 返回值coefs,数组,大小为(n_features,n_alphas+1),路径上的相关系数
alphas, active, coefs, n_iter = linear_model.lars_path(X, y, method='lasso', return_n_iter=True, ve