LogisticRegression
是 scikit-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
模型并使用训练集进行训练。最后,使用测试集进行预测,并计算模型的准确率。
注意:本文归作者所有,未经作者允许,不得转载