导入
正则化(Lasso、Ridge)
探索Lasso和Ridge正则化的基本概念,为面试做好准备。
...
Lasso 与 Ridge 回归对比
表格
| 特性 | Lasso 回归 | Ridge 回归 |
|---|---|---|
| 正则化惩罚项 | L1(系数绝对值之和) | L2(系数平方值之和) |
| 特征选择能力 | 可将系数精确压缩至零,产生稀疏解 | 将系数向零收缩,但极少恰好为零 |
| 适用场景 | 适用于特征选择 | 适用于所有特征均有贡献的情况 |
| 解的唯一性 | 可能存在多个解 | 解始终唯一 |
1from sklearn.linear_model import LinearRegression 2from sklearn.datasets import load_diabetes 3from sklearn.model_selection import train_test_split 4from sklearn.metrics import mean_squared_error 5from sklearn.linear_model import Lasso 6import numpy as np 7 8# 加载数据 9X, y = load_diabetes(return_X_y=True) 10X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) 11 12lasso = Lasso(alpha=0.1) 13lasso.fit(X_train, y_train) 14lasso_preds = lasso.predict(X_test) 15 16print("\nLasso - 训练集得分:", lasso.score(X_train, y_train)) 17print("Lasso - 测试集得分:", lasso.score(X_test, y_test)) 18print("Lasso - 均方误差:", mean_squared_error(y_test, lasso_preds)) 19print("Lasso - 非零系数个数:", np.count_nonzero(lasso.coef_))
1from sklearn.linear_model import LinearRegression 2from sklearn.datasets import load_diabetes 3from sklearn.model_selection import train_test_split 4from sklearn.metrics import mean_squared_error 5from sklearn.linear_model import Ridge 6import numpy as np 7 8# 加载数据 9X, y = load_diabetes(return_X_y=True) 10X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42) 11 12ridge = Ridge(alpha=1.0) 13ridge.fit(X_train, y_train) 14ridge_preds = ridge.predict(X_test) 15 16print("\nRidge - 训练集得分:", ridge.score(X_train, y_train)) 17print("Ridge - 测试集得分:", ridge.score(X_test, y_test)) 18print("Ridge - 均方误差:", mean_squared_error(y_test, ridge_preds)) 19print("Ridge - 非零系数个数:", np.count_nonzero(ridge.coef_))