IIWAB logisticRegression介绍 - IIWAB

logisticRegression介绍

IIWAB 1月前 ⋅ 77 阅读

LogisticRegressionscikit-learn 库中用于实现逻辑回归算法的类。逻辑回归虽然名为“回归”,但实际上是一种广泛应用于分类问题的统计学习方法,尤其是二分类问题,不过也可以扩展到多分类问题。以下是关于 LogisticRegression 的详细介绍:

基本原理

逻辑回归的核心是使用逻辑函数(也称为 Sigmoid 函数)将线性回归的输出映射到一个概率值(范围在 0 到 1 之间)。对于二分类问题,这个概率值可以用来判断样本属于某个类别的可能性。Sigmoid 函数的公式为:

sigma(z) = {1}\{1 + e^{-z}}

其中 (z) 是线性回归的输出,即 (z = theta_0 + theta_1x_1 + theta_2x_2 + ... + theta_nx_n),(theta_i) 是模型的参数,(x_i) 是特征值。

类原型

sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0,
                                        fit_intercept=True, intercept_scaling=1, 
                                        class_weight=None, random_state=None, 
                                        solver='lbfgs', max_iter=100, multi_class='auto', 
                                        verbose=0, warm_start=False, n_jobs=None, l1_ratio=None)

参数解释

  • penalty:指定正则化的类型,可选值为 'l1''l2''elasticnet''none'。默认是 'l2',即使用 L2 正则化。正则化有助于防止模型过拟合。
  • dual:布尔值,默认 False。仅在使用 'liblinear' 求解器且 penalty='l2' 时有效。当样本数大于特征数时,通常设为 False
  • tol:浮点型,默认 0.0001。用于判断迭代收敛的阈值。
  • C:浮点型,默认 1.0。它是正则化强度的倒数,值越小表示正则化越强。
  • fit_intercept:布尔值,默认 True。表示是否计算模型的截距项。
  • intercept_scaling:浮点型,默认 1。仅在使用 'liblinear' 求解器时有效。
  • class_weight:字典、'balanced'None,默认 None。用于处理不平衡数据集。如果设置为 'balanced',则会自动调整类权重,使得每个类别的权重与该类别的样本数成反比。
  • random_state:整数、RandomState 实例或 None,默认 None。用于随机数生成器的种子,确保结果的可重复性。
  • solver:字符串,指定求解优化问题的算法,可选值有 'newton-cg''lbfgs''liblinear''sag''saga'。不同的求解器适用于不同的情况,例如 'liblinear' 适用于小数据集,而 'sag''saga' 适用于大数据集。
  • max_iter:整数,默认 100。指定求解器的最大迭代次数。
  • multi_class:字符串,指定处理多分类问题的策略,可选值为 'auto''ovr'(一对多)和 'multinomial'(多项式逻辑回归)。默认是 'auto',会根据数据和求解器自动选择合适的策略。
  • verbose:整数,默认 0。控制求解器的详细输出信息。
  • warm_start:布尔值,默认 False。如果设置为 True,则会使用上一次训练的结果作为初始化,加快训练速度。
  • n_jobs:整数或 None,默认 None。指定并行计算时使用的 CPU 核心数。None 表示使用单核心,-1 表示使用所有可用的核心。
  • l1_ratio:浮点型或 None,默认 None。仅在 penalty='elasticnet' 时有效,用于指定 L1 和 L2 正则化的混合比例。

常用方法

  • fit(X, y):用于训练模型,X 是特征矩阵,y 是目标标签。
  • predict(X):根据训练好的模型对输入的样本 X 进行预测,返回预测的类别标签。
  • predict_proba(X):返回样本属于每个类别的概率。
  • score(X, y):计算模型在给定样本 X 和标签 y 上的准确率。

示例代码

下面是一个简单的二分类示例,展示如何使用 LogisticRegression 进行模型训练和预测:

from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 生成一个二分类数据集
X, y = make_classification(n_samples=1000, n_features=10, n_informative=5, n_redundant=0, random_state=42)

# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 创建逻辑回归模型
model = LogisticRegression()

# 训练模型
model.fit(X_train, y_train)

# 进行预测
y_pred = model.predict(X_test)

# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print(f"Accuracy: {accuracy}")

在这个示例中,首先使用 make_classification 生成一个二分类数据集,然后将数据集划分为训练集和测试集。接着创建了一个 LogisticRegression 模型并使用训练集进行训练。最后,使用测试集进行预测,并计算模型的准确率。


全部评论: 0

    我有话说: