统计学补充概念-13-逻辑回归

概念

逻辑回归(Logistic Regression)实际上是一种用于解决分类问题的统计学习方法,尽管其名称中带有"回归"一词,但它主要用于处理分类任务。逻辑回归用于预测一个事件发生的概率,并将其映射到一个特定的输出类别。

逻辑回归的基本思想是,通过一个线性组合的方式将输入特征与权重相乘,然后通过一个称为"逻辑函数"或"Sigmoid函数"的激活函数将结果映射到一个0到1之间的概率值。这个概率值可以被解释为样本属于某个类别的概率。Sigmoid函数的公式为:

在训练逻辑回归模型时,通常使用的是最大似然估计方法。模型会尝试寻找一组权重

w,使得观测数据中样本被正确分类的概率最大化。这可以通过最小化损失函数来实现,常用的损失函数是"交叉熵损失"(Cross-Entropy Loss)。

逻辑回归在广泛的领域中应用,如医学、金融、自然语言处理等。它可以用于二分类问题(如判断邮件是否为垃圾邮件)和多分类问题(如图像分类)。虽然逻辑回归是一个线性模型,但它也可以通过特征工程、多项式特征、正则化等技术来应对复杂的分类任务。

需要注意的是,尽管逻辑回归在名称上与线性回归类似,但它们是不同的方法。线性回归用于解决回归问题,旨在预测连续数值输出,而逻辑回归用于分类问题,预测的是概率或离散的类别输出。

代码实现

python 复制代码
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score

# 生成虚拟数据集
np.random.seed(42)
X = np.random.randn(100, 2)  # 100个样本,每个样本有2个特征
y = (X[:, 0] + X[:, 1] > 0).astype(int)  # 标签,根据特征和阈值生成

# 划分数据集为训练集和测试集
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:.2f}")

# 可视化决策边界
plt.figure(figsize=(10, 6))
plt.scatter(X[:, 0], X[:, 1], c=y, cmap=plt.cm.Paired)
plt.xlabel('Feature 1')
plt.ylabel('Feature 2')

# 生成决策边界
coef = model.coef_
intercept = model.intercept_
x_boundary = np.linspace(X[:, 0].min(), X[:, 0].max(), 100)
y_boundary = -(coef[0, 0] * x_boundary + intercept) / coef[0, 1]
plt.plot(x_boundary, y_boundary, 'k--')

plt.title("Decision Boundary")
plt.show()
相关推荐
查理零世22 分钟前
【算法】经典博弈论问题——巴什博弈 python
开发语言·python·算法
神探阿航27 分钟前
第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组
java·算法·蓝桥杯
皮肤科大白1 小时前
如何在data.table中处理缺失值
学习·算法·机器学习
汤姆和佩琦1 小时前
2025-1-21-sklearn学习(43) 使用 scikit-learn 介绍机器学习 楼上阑干横斗柄,寒露人远鸡相应。
人工智能·python·学习·机器学习·scikit-learn·sklearn
HyperAI超神经1 小时前
【TVM教程】为 ARM CPU 自动调优卷积网络
arm开发·人工智能·python·深度学习·机器学习·tvm·编译器
Luzem03192 小时前
使用scikit-learn中的KNN包实现对鸢尾花数据集的预测
人工智能·深度学习·机器学习
缺的不是资料,是学习的心2 小时前
使用qwen作为基座训练分类大模型
python·机器学习·分类
不能只会打代码2 小时前
蓝桥杯例题一
算法·蓝桥杯
OKkankan3 小时前
实现二叉树_堆
c语言·数据结构·c++·算法
Zda天天爱打卡3 小时前
【机器学习实战中阶】使用Python和OpenCV进行手语识别
人工智能·python·深度学习·opencv·机器学习