Nginx详解
Nginx详解与部署流程在项目初期,如果并发量较小,用户数量有限,通常只需通过一个jar包启动应用,内部由自带的Tomcat处理请求即可满足需求。但随着用户量和并发量的提升,单一应用实例可能无法承载全部流量,这时就需要引入Nginx进行负载均衡和反向代理,提升系统的可用性和扩展性。 为什么选择NginxNginx(engine...
service_manager
1. 程序整体架构分析核心设计模式:单例模式 + 命令模式123456789101112131415161718service_manager.py├── 配置层 (Configuration Layer)│ ├── 服务定义 (services字典)│ ├── 环境配置 (conda环境路径)│ └── 日志配置 (logging配置)├── 管理层 (Management Layer)│ ├── ServiceManager类│ ├── 进程管理 (PID文件持久化)│ └── 状态监控 (进程状态检查)├── 操作层 (Operation Layer)│ ├── 启动服务 (start_service)│ ├── 停止服务 (stop_service)│ ├── 重启服务 (restart_service)│ └── 状态查看 (status)└── 接口层 (Interface Layer) ├── 命令行参数解析 ├── 信号处理 └── 用户交互 2. 核心组件详解2.1 配置层设计12345678910#...
机器学习之SVM
支持向量机 (SVM) - 机器学习中的强大分类器什么是SVM?支持向量机(Support Vector Machine, SVM)是一种强大的监督学习算法,主要用于分类问题,也可以用于回归分析。它的核心思想是找到一个最优的超平面来分隔不同类别的数据。 核心概念1. 支持向量 (Support Vectors)支持向量是数据集中位置特殊的关键点,它们决定了分类超平面的位置。这些点距离分类边界最近,对模型的性能起着决定性作用。 2. 最大间隔 (Maximum Margin)SVM的核心目标是找到能够最大化分类间隔的超平面,这样可以提高模型的泛化能力。 3. 分隔超平面 (Separating Hyperplane) 对于线性可分数据,可以通过一条直线(二维)或超平面(高维)将不同类别的数据完全分开 这条分隔线称为分隔超平面 数学原理拉格朗日乘子法SVM通过拉格朗日乘子法 (Method of Lagrange Multiplier)...
机器学习之回归
Logistic回归Logistic回归是一种用于二分类问题的统计学习方法。它通过对输入特征的线性组合结果应用Sigmoid函数,将输出映射到0和1之间,从而预测某个事件发生的概率。与线性回归不同,逻辑回归的输出是概率值,常用于分类任务。 基础概念Sigmoid函数Sigmoid函数是一种常用的激活函数,定义为: $$\sigma(z) = \frac{1}{1 + e^{-z}}$$ 它的输出范围在0到1之间,适合用于概率预测。 单位阶跃函数与Sigmoid函数在二分类问题中,我们希望模型能够根据输入预测类别(0或1)。理想情况下,可以使用单位阶跃函数(Heaviside step function)来实现: $$f(x) = \begin{cases}1, & x \geq 0 \0, & x <...
机器学习之集成学习
机器学习之集成学习概述集成学习(Ensemble Learning)是机器学习中一种重要的方法,它通过组合多个基础学习器来构建一个更强大的学习器。这种方法的核心思想是”三个臭皮匠,胜过一个诸葛亮”,通过多个模型的集体智慧来提高预测的准确性和稳定性。 集成学习的基本概念什么是集成学习?集成学习是一种机器学习范式,它通过构建并结合多个学习器来完成学习任务。这些学习器可以是同类型的(如多个决策树),也可以是不同类型的(如决策树、神经网络、支持向量机等)。 集成学习的优势 提高预测准确性:多个模型的组合通常比单个模型表现更好 增强泛化能力:减少过拟合风险,提高模型对新数据的适应能力 提高稳定性:降低单个模型的不稳定性影响 处理复杂问题:能够处理单个模型难以解决的复杂问题 主要的集成方法1. Bagging(Bootstrap...
机器学习之朴素贝叶斯详解
目录 朴素贝叶斯概述 数学基础 朴素贝叶斯分类器 实际应用 优缺点分析 总结 朴素贝叶斯概述朴素贝叶斯(Naive Bayes)是一种基于贝叶斯定理的概率分类算法,属于监督学习中的生成模型。它以其简单、高效和在某些场景下的优秀表现而闻名。 核心思想朴素贝叶斯的核心假设是特征条件独立性,即假设所有特征之间相互独立。虽然这个假设在现实中往往不成立,但正是这种”朴素”的假设使得算法计算简单且效果良好。 分类原理利用贝叶斯公式根据特征的先验概率计算出其后验概率,然后选择具有最大后验概率的类作为该特征所属的类: $$P(C|X) = \frac{P(X|C) \cdot P(C)}{P(X)}$$ 其中: $P(C|X)$ 是后验概率 $P(X|C)$ 是似然概率 $P(C)$ 是先验概率 $P(X)$ 是证据因子 数学基础条件概率条件概率是指在事件B发生的情况下,事件A发生的概率,记作 $P(A|B)$: $$P(A|B) = \frac{P(A \cap B)}{P(B)}$$ 全概率公式如果事件 $A_1, A_2, …, A_n$...
机器学习之决策树详解:从原理到实践
引言决策树(Decision Tree)是机器学习中最基础且最实用的算法之一,广泛应用于分类和回归问题。它以其直观的树形结构、易于理解和解释的特点,成为数据挖掘和机器学习领域的经典算法。 什么是决策树?决策树是一种树形结构的预测模型,通过一系列的问题(特征判断)来对数据进行分类或预测。每个内部节点代表一个特征测试,每个分支代表测试的一个可能结果,每个叶节点代表一个预测结果。 决策树的基本结构12345根节点 (Root Node) → 特征判断 ├── 分支1 → 内部节点 → 特征判断 │ ├── 分支1.1 → 叶节点 (预测结果1) │ └── 分支1.2 → 叶节点 (预测结果2) └── 分支2 → 叶节点 (预测结果3) 核心概念详解1. 信息熵 (Information Entropy)信息熵是衡量数据集不确定性的重要指标,由香农(Shannon)提出。 定义: 对于数据集D,其熵定义为: 1H(D) = -Σ(pi *...
机器学习之KNN算法详解
什么是K-近邻算法?K-近邻(K-Nearest Neighbor, KNN)是一种监督学习算法,属于基于实例的学习或懒惰学习方法。它的核心思想是:物以类聚,即相似的对象应该属于同一类别。 算法基本概念 输入:样本的特征向量(在特征空间中的点) 输出:样本的类别标签 核心假设:相似的样本具有相似的标签 KNN算法原理详解1. 训练阶段KNN算法实际上没有显式的训练过程,它只是将训练数据存储起来,因此被称为”懒惰学习”。 2. 预测阶段当需要对新样本进行分类时,算法执行以下步骤: 距离计算:计算新样本与所有训练样本之间的距离 排序:将所有距离按从小到大排序 投票:选择前K个最近邻的类别标签 决策:通过多数投票确定新样本的类别 距离度量方法欧几里得距离(Euclidean Distance)最常用的距离度量方法,适用于连续型特征: $$d(x, y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2}$$ 曼哈顿距离(Manhattan Distance)适用于离散型特征或城市街区距离: $$d(x, y) =...
机器学习
(注:博客属个人复习笔记,不会介绍基础概念,仅记录个人遗忘的部分知识点) RUNOBB教程 BLOG教程 机器学习 概述 “机器学习是对能通过经验自动改进的计算机算法的研究” “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准” 机器学习和深度学习的最大区别在神经网络,深度学习使用神经网络去提取事物的深层或者说是隐性的一些特征 常见的模型指标 正确率 —— 提取出的正确信息条数 / 提取出的信息条数 召回率 —— 提取出的正确信息条数 / 样本中的信息条数 F 值 —— 正确率 * 召回率 * 2 / (正确率 + 召回率)(F值即为正确率和召回率的调和平均值) 特征工程 (Feature Engineering)特征工程是机器学习项目中最关键的环节,直接影响模型性能。好的特征工程可以显著提升模型效果。 特征工程概述 定义:从原始数据中提取、转换、选择对模型有用的特征 重要性:数据和特征决定了机器学习的上限,模型和算法只是逼近这个上限 目标:提高模型性能、降低计算复杂度、增强模型可解释性 特征选择 (Feature...
Python并发编程
简介 引入并发,就是为了提升程序运行速度 单线程串行:不加改造的程序 多线程并发:threading 多线程:thhreadding,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴地等待IO完成 多cpu并行:multiprocessing 多进程:multiprocessing,利用CPU的多核原理,让CPU可以同时运行多个进程 多机器并行:hadoop/hive/spark IO:读取内存、磁盘、网络 异步IO:asyncio,在单线程利用CPU和IO同时执行的原理,实现函数异步执行 使用Lock对资源加锁,防止冲突访问 使用Queue实现不同线程/进程之间的数据通信,实现生产者-消费者模式 使用线程池Pool/进程池Pool,实现线程/进程的任务提交、等待结束、获取结果 使用subprocess启动外部程序的进程,并进行输入输出的交互 怎样选择多线程、多进程和多协程 Thread Process...













