一、算法原理
逻辑回归(Logistic Regression)是一种广泛应用于分类任务的机器学习算法。它虽然名为回归,但实际上用于解决分类问题。逻辑回归的核心思想是将线性回归的输出结果通过一个函数转换成概率值,从而实现对样本的分类。
逻辑回归中,为了将线性回归的输出结果转换为概率值,通常采用 Sigmoid 函数。Sigmoid 函数可以将任何实数映射到 (0, 1) 区间内,其定义如下:
当使用 Sigmoid 函数时,逻辑回归模型的形式可以表示为:
其中,P(y=1|x)表示给定输入 x 时,输出 y=1 的概率;w 和 b 是模型的参数
逻辑回归算法的训练过程是寻找一组参数 w 和 b,使得预测的概率值与实际标签的差异最小。这里通常采用极大似然估计法进行优化。
二、使用方法
1.数据预处理:对数据进行归一化处理,将特征值缩放到一个相同的范围内。
2.构建逻辑回归模型:定义 Sigmoid 函数和损失函数。
3.训练模型:使用梯度下降法或其他优化算法优化损失函数,得到模型参数 w 和 b。
4.模型评估:通过计算准确率、召回率等评价指标,评估模型性能。
5.应用模型:将训练好的模型用于预测新的样本。
三、常用的使用场景
逻辑回归常用于以下场景:
1.二分类问题:如垃圾邮件分类、病人是否患病等。
2.多分类问题:通过 One-vs-All 或 One-vs-One 策略将逻辑回归扩展到多分类任务。
3.排序问题:将逻辑回归的输出概率作为排序依据。
4.概率预测:除了分类结果,逻辑回归还可以输出样本属于某一类别的概率值。
四、实例实现
# 导入所需库和鸢尾花数据集
from sklearn.datasets import load_iris
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
# 加载数据集并划分数据集
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
# 定义模型并训练
clf = LogisticRegression(random_state=0, max_iter=10000)
clf.fit(X_train, y_train)
# 预测测试集结果并评估模型
y_pred = clf.predict(X_test)
accuracy = clf.score(X_test, y_test)
# 输出结果
print("预测结果:", y_pred)
print("模型准确率:{:.2f}%".format(accuracy*100))
我们首先加载了鸢尾花数据集并将其划分为训练集和测试集。然后,我们定义了LogisticRegression模型,并使用训练集对其进行训练。接着,我们使用模型对测试集进行预测,并计算模型的准确率。