sklearn.linear_model
模块
sklearn.linear_model
是 scikit-learn
提供的 线性模型 模块,包含 回归 和 分类 任务的 线性方法,如 线性回归、岭回归、Lasso 回归、Logistic 回归等。
1. sklearn.linear_model
主要模型
任务 | 模型 | 适用情况 |
---|---|---|
回归 | LinearRegression | 经典线性回归 |
回归 | Ridge | 带 L2 正则化的岭回归 |
回归 | Lasso | 带 L1 正则化的 Lasso 回归 |
回归 | ElasticNet | L1 + L2 结合的回归 |
分类 | LogisticRegression | 逻辑回归(广义线性模型) |
分类 | Perceptron | 感知机(最简单的线性分类模型) |
2. 线性回归
(1) LinearRegression
(线性回归)
from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
# 生成数据
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)
# 训练线性回归模型
model = LinearRegression()
model.fit(X, y)
# 输出回归系数
print("权重:", model.coef_)
print("截距:", model.intercept_)
解释
LinearRegression()
适用于 普通线性回归,无正则化项。fit()
训练模型,coef_
获取权重,intercept_
获取截距。
3. 正则化回归
(2) Ridge
(岭回归,L2 正则化)
from sklearn.linear_model import Ridge
model = Ridge(alpha=1.0) # 设置正则化强度 alpha
model.fit(X, y)
print("权重:", model.coef_)
解释
Ridge(alpha=1.0)
在 线性回归基础上添加L2
正则化,防止过拟合。- 适用于多重共线性问题(特征相关性强)。
(3) Lasso
(L1 正则化)
from sklearn.linear_model import Lasso
model = Lasso(alpha=0.1) # 设置 L1 正则化强度
model.fit(X, y)
print("权重:", model.coef_)
解释
Lasso(alpha=0.1)
在 线性回归基础上添加L1
正则化,可以 自动进行特征选择。- 权重可能被压缩到
0
,有助于降维。
(4) ElasticNet
(L1 + L2 结合)
from sklearn.linear_model import ElasticNet
model = ElasticNet(alpha=0.1, l1_ratio=0.5) # L1 与 L2 组合
model.fit(X, y)
print("权重:", model.coef_)
解释
ElasticNet(alpha=0.1, l1_ratio=0.5)
结合L1
和L2
正则化,兼顾 特征选择(L1)和防止过拟合(L2)。
4. 逻辑回归(分类任务)
(5) LogisticRegression
(逻辑回归)
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
# 加载数据
iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)
# 训练逻辑回归
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# 预测
y_pred = model.predict(X_test)
# 评估准确率
accuracy = model.score(X_test, y_test)
print("准确率:", accuracy)
解释
LogisticRegression()
适用于 二分类和多分类任务。max_iter=200
迭代次数,防止收敛问题。predict()
进行分类预测,score()
计算准确率。
5. 感知机(Perceptron)
(6) Perceptron
(简单线性分类器)
from sklearn.linear_model import Perceptron
model = Perceptron()
model.fit(X_train, y_train)
accuracy = model.score(X_test, y_test)
print("准确率:", accuracy)
解释
- 感知机是最简单的线性分类模型,适用于 可线性分割数据。
- 不适用于复杂分类任务,容易受噪声影响。
6. sklearn.linear_model
总结
任务 | 模型 | 适用情况 |
---|---|---|
回归 | LinearRegression | 普通线性回归 |
回归 | Ridge | L2 正则化(防止过拟合) |
回归 | Lasso | L1 正则化(特征选择) |
回归 | ElasticNet | L1 + L2 结合 |
分类 | LogisticRegression | 逻辑回归(支持二分类、多分类) |
分类 | Perceptron | 感知机(简单线性分类) |
7. 结论
sklearn.linear_model
提供线性模型,适用于回归和分类任务,支持 L1/L2 正则化,避免过拟合,提升模型性能。- 如果 数据是回归问题,可以使用
LinearRegression
、Ridge
、Lasso
;如果 是分类问题,可以使用LogisticRegression
。