【scikit-learn】sklearn.linear_model 模块:线性模型(回归和分类)

sklearn.linear_model 模块

sklearn.linear_modelscikit-learn 提供的 线性模型 模块,包含 回归分类 任务的 线性方法,如 线性回归、岭回归、Lasso 回归、Logistic 回归等


1. sklearn.linear_model 主要模型

任务模型适用情况
回归LinearRegression经典线性回归
回归RidgeL2 正则化的岭回归
回归LassoL1 正则化的 Lasso 回归
回归ElasticNetL1 + 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) 结合 L1L2 正则化,兼顾 特征选择(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普通线性回归
回归RidgeL2 正则化(防止过拟合)
回归LassoL1 正则化(特征选择)
回归ElasticNetL1 + L2 结合
分类LogisticRegression逻辑回归(支持二分类、多分类)
分类Perceptron感知机(简单线性分类)

7. 结论

  • sklearn.linear_model 提供线性模型,适用于回归和分类任务,支持 L1/L2 正则化,避免过拟合,提升模型性能
  • 如果 数据是回归问题,可以使用 LinearRegressionRidgeLasso;如果 是分类问题,可以使用 LogisticRegression
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

彬彬侠

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值