[ PROMPT_NODE_27360 ]
supervised_learning
[ SKILL_DOCUMENTATION ]
# 监督学习参考
## 概述
监督学习算法通过带标签的训练数据进行学习,从而对新数据进行预测。Scikit-learn 为分类和回归任务提供了全面的实现。
## 线性模型
### 回归
**线性回归 (`sklearn.linear_model.LinearRegression`)**
- 普通最小二乘回归
- 速度快,可解释性强,无超参数
- 使用场景:线性关系,注重可解释性
- 示例:
python
from sklearn.linear_model import LinearRegression
model = LinearRegression()
model.fit(X_train, y_train)
predictions = model.predict(X_test)
**岭回归 (`sklearn.linear_model.Ridge`)**
- L2 正则化以防止过拟合
- 关键参数:`alpha`(正则化强度,默认=1.0)
- 使用场景:存在多重共线性,需要正则化
- 示例:
python
from sklearn.linear_model import Ridge
model = Ridge(alpha=1.0)
model.fit(X_train, y_train)
**Lasso 回归 (`sklearn.linear_model.Lasso`)**
- 带有特征选择的 L1 正则化
- 关键参数:`alpha`(正则化强度)
- 使用场景:需要稀疏模型,进行特征选择
- 可以将某些系数精确降为零
- 示例:
python
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1)
model.fit(X_train, y_train)
# 检查选择了哪些特征
print(f"非零系数数量: {sum(model.coef_ != 0)}")
**弹性网络 (`sklearn.linear_model.ElasticNet`)**
- 结合了 L1 和 L2 正则化
- 关键参数:`alpha`, `l1_ratio` (0=岭回归, 1=Lasso)
- 使用场景:同时需要特征选择和正则化
- 示例:
python
from sklearn.linear_model import ElasticNet
model = ElasticNet(alpha=0.1, l1_ratio=0.5)
model.fit(X_train, y_train)
### 分类
**逻辑回归 (`sklearn.linear_model.LogisticRegression`)**
- 二分类和多分类
- 关键参数:`C`(正则化强度的倒数),`penalty` ('l1', 'l2', 'elasticnet')
- 返回概率估计
- 使用场景:需要概率预测,可解释性
- 示例:
python
from sklearn.linear_model import LogisticRegression
model = LogisticRegression(C=1.0, max_iter=1000)
model.fit(X_train, y_train)
probas = model.predict_proba(X_test)
**随机梯度下降 (SGD)**
- `SGDClassifier`, `SGDRegressor`
- 大规模学习效率高
- 关键参数:`loss`, `penalty`, `alpha`, `learning_rate`
- 使用场景:超大规模数据集 (>10^4 样本)
- 示例: