sklearn.linear_model.Lasso
函数是 scikit-learn 库中的一个线性回归算法,它使用 L1 正则化来避免过拟合。Lasso 可以用于特征选择和回归。在回归中,Lasso 优化的目标函数为:
min 1/(2*n_samples) * ||y - Xw||^2_2 + alpha * ||w||_1
其中,n_samples
表示样本数目,y
是真实值,X
是样本特征矩阵,w
是模型的权重,alpha
是正则化参数。||w||_1
表示 L1 范数,即权重向量绝对值之和。
L1 正则化有一个很好的特点,可以将许多无关的特征直接设置为零。这个特性可以用于特征选择。同时,L1 正则化还有助于防止过拟合的问题。
参数说明
sklearn.linear_model.Lasso
函数的主要参数有:
alpha
:正则化参数,默认为 1.0。fit_intercept
:是否计算截距,默认为 True。normalize
:是否归一化,使特征矩阵的每个特征都有单位方差。默认为 False。max_iter
:最大迭代次数,默认为 1000。tol
:迭代收敛的容差,默认为 1e-4。
使用方法说明
下面是 sklearn.linear_model.Lasso
函数的使用方法:
from sklearn.linear_model import Lasso
# 加载数据
X, y = load_data()
# 定义模型
lasso_model = Lasso(alpha=0.1, max_iter=1000)
# 拟合模型
lasso_model.fit(X, y)
# 预测模型
y_predict = lasso_model.predict(X)
以上代码中,首先加载了数据,然后定义了一个 Lasso 模型,使用 fit
函数对模型进行了拟合。
下面给出两个实例说明。
实例一:使用 Lasso 进行特征选择
以下示例展示如何使用 Lasso 进行特征选择。我们使用 scikit-learn 提供的波士顿房价数据集。这个数据集包括 13 个数值特征和一个目标变量(房价)。
from sklearn.datasets import load_boston
from sklearn.linear_model import Lasso
# 加载数据
boston = load_boston()
X = boston.data
y = boston.target
# 定义模型
lasso_model = Lasso(alpha=0.1, max_iter=10000)
# 拟合模型
lasso_model.fit(X, y)
# 输出系数不为0的特征名称
feature_names = boston.feature_names
selected_features = feature_names[lasso_model.coef_ != 0]
print(selected_features)
执行上述代码,输出的结果为:
['CRIM' 'CHAS' 'NOX' 'RM' 'DIS' 'PTRATIO' 'B' 'LSTAT']
这意味着在这个数据集中,Lasso 模型选择了这 8 个特征。
实例二:使用 Lasso 进行回归预测
以下示例展示如何使用 Lasso 进行回归预测。我们使用 scikit-learn 提供的糖尿病数据集,该数据集包括 442 个病人的 10 个生理学指标和一个目标变量(1 年后疾病进展的定量测量指标)。
from sklearn.datasets import load_diabetes
from sklearn.linear_model import Lasso
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
# 加载数据
diabetes = load_diabetes()
X = diabetes.data
y = diabetes.target
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# 定义模型
lasso_model = Lasso(alpha=0.1, max_iter=1000)
# 拟合模型
lasso_model.fit(X_train, y_train)
# 预测模型并计算均方误差
y_predict = lasso_model.predict(X_test)
mse = mean_squared_error(y_test, y_predict)
print("MSE:", mse)
结果输出:
MSE: 3292.046338031839
这就是使用 Lasso 进行回归预测的相关实例。