逻辑回归教程:从入门到实践
2024/9/13 21:02:32
本文主要是介绍逻辑回归教程:从入门到实践,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
逻辑回归是一种用于解决分类问题的统计方法。它的核心思想是通过建立一个函数来预测事件发生的概率。在逻辑回归中,我们使用逻辑函数(sigmoid函数)进行概率转换,从而将线性回归的输出映射到0到1之间的概率值。本文旨在构建逻辑回归模型,解决分类问题,通过概率转换实现事件预测。从概率论回顾、逻辑函数应用,到模型构建、优化与评估,提供Python代码实现,全方位指导逻辑回归从入门到精通。
逻辑回归基础理解逻辑回归是一种用于解决二分类问题的统计方法。它的核心思想是通过建立一个函数来预测事件发生的概率。逻辑回归通过逻辑函数(sigmoid函数)进行概率转换,将线性回归的输出映射到0到1之间的概率值。下面我们回顾概率论的基本概念,包括概率、条件概率、独立事件和随机变量等。
示例代码:sigmoid 函数实现
import numpy as np def sigmoid(z): return 1 / (1 + np.exp(-z))
逻辑函数与 sigmoid 函数
逻辑函数是逻辑回归的关键部分,它通过将输入转换为一个在0到1之间的值来表示概率。sigmoid函数是逻辑回归中常用的逻辑函数,其数学表达式为:
σ(z) = \frac{1}{1 + e^{-z}}
sigmoid函数的特性:
- 当
z
为正数时,函数值接近于1,表示事件发生的概率高; - 当
z
为负数时,函数值接近于0,表示事件发生的概率低; - 当
z
为0时,函数值等于0.5,表示事件发生的概率为50%。
示例代码:sigmoid 函数实现
import numpy as np def sigmoid(z): return 1 / (1 + np.exp(-z))逻辑回归模型构建
逻辑回归模型旨在找到一组参数,使得预测概率与实际结果尽可能匹配。我们通过最小化损失函数来调整这些参数,达到最佳拟合目的。
线性回归与逻辑回归的区别
线性回归用于预测连续值,而逻辑回归用于解决二分类问题。逻辑回归通过将线性回归的输出通过一个连续的函数(如sigmoid函数)转换为概率。
示例代码:逻辑回归模型实现
class LogisticRegression: def __init__(self, learning_rate=0.01, num_iterations=1000): self.learning_rate = learning_rate self.num_iterations = num_iterations def fit(self, X, y): m, n = X.shape self.w = np.zeros(n) self.b = 0 for _ in range(self.num_iterations): z = np.dot(X, self.w) + self.b p = sigmoid(z) gradient_w = (1 / m) * np.dot(X.T, (p - y)) gradient_b = (1 / m) * np.sum(p - y) self.w -= self.learning_rate * gradient_w self.b -= self.learning_rate * gradient_b def predict(self, X): z = np.dot(X, self.w) + self.b return sigmoid(z)数据准备与预处理
数据预处理是机器学习模型构建过程中的关键步骤。它涉及特征选择、特征工程、数据清洗和标准化等过程。
示例代码:数据预处理
from sklearn.preprocessing import StandardScaler # 加载数据 data = pd.read_csv('data.csv') X = data.drop('target', axis=1) y = data['target'] # 数据预处理 scaler = StandardScaler() X = scaler.fit_transform(X)
示例代码:特征选择与工程
from sklearn.feature_selection import SelectKBest from sklearn.feature_selection import f_classif selector = SelectKBest(score_func=f_classif, k=10) X_new = selector.fit_transform(X, y)逻辑回归模型训练
逻辑回归模型的训练涉及最小化损失函数,最常用的是交叉熵损失函数,通过梯度下降法或其他优化算法更新参数。
示例代码:逻辑回归模型训练
from sklearn.datasets import make_classification from sklearn.model_selection import train_test_split X, y = make_classification(n_samples=100, n_features=2, 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) predictions = model.predict(X_test)模型评估与优化
模型评估是衡量模型性能的关键步骤,涉及使用准确率、召回率、F1分数、ROC曲线和AUC值等指标。
示例代码:模型评估与优化
from sklearn.metrics import accuracy_score, recall_score, f1_score, roc_auc_score def evaluate_model(model, X_test, y_test): y_pred = model.predict(X_test) acc = accuracy_score(y_test, y_pred) recall = recall_score(y_test, y_pred) f1 = f1_score(y_test, y_pred) roc_auc = roc_auc_score(y_test, model.predict_proba(X_test)[:, 1]) return acc, recall, f1, roc_auc acc, recall, f1, roc_auc = evaluate_model(model, X_test, y_test)实战案例与代码实现
使用 Python 与 Scikit-learn 库
from sklearn.linear_model import LogisticRegression from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV from sklearn.preprocessing import StandardScaler from sklearn.metrics import roc_auc_score # 加载数据 data = pd.read_csv('data.csv') X = data.drop('target', axis=1) y = data['target'] # 数据预处理 scaler = StandardScaler() X = scaler.fit_transform(X) # 划分训练集和测试集 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) # 超参数调优 param_grid = {'C': [0.01, 0.1, 1, 10, 100], 'penalty': ['l1', 'l2']} grid_search = GridSearchCV(model, param_grid, cv=5) grid_search.fit(X_train, y_train) # 模型评估 predictions = model.predict(X_test) roc_auc_score(y_test, model.predict_proba(X_test)[:, 1])
通过上述步骤,我们可以从逻辑回归的基础理解到实现完整的实战案例,包括数据预处理、模型训练、评估与优化,最终完成一个逻辑回归模型的构建与应用。
这篇关于逻辑回归教程:从入门到实践的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22程序员出海做 AI 工具:如何用 similarweb 找到最佳流量渠道?
- 2024-12-20自建AI入门:生成模型介绍——GAN和VAE浅析
- 2024-12-20游戏引擎的进化史——从手工编码到超真实画面和人工智能
- 2024-12-20利用大型语言模型构建文本中的知识图谱:从文本到结构化数据的转换指南
- 2024-12-20揭秘百年人工智能:从深度学习到可解释AI
- 2024-12-20复杂RAG(检索增强生成)的入门介绍
- 2024-12-20基于大型语言模型的积木堆叠任务研究
- 2024-12-20从原型到生产:提升大型语言模型准确性的实战经验
- 2024-12-20啥是大模型1
- 2024-12-20英特尔的 Lunar Lake 计划:一场未竟的承诺