机器学习基础知识面经(个人记录)

朴素贝叶斯

特征为理想状态下的独立同分布,作为机器学习的重要基石和工具

由贝叶斯公式推导而来P(A \mid B)=\frac{P(B \mid A) \times P(A)}{P(B)}

P(A \mid B)是后验概率:在B发生的条件下A发生的概率。

P(B \mid A)是似然概率: 在  \mathrm{A}发生的条件下 \mathrm{B}  发生的概率。

P(A) 是先验概率: A发生的概率,而不考虑  \mathrm{B}的影响。

P(B)是边缘概率: B发生的概率, 而不考虑A的影响。

这种不考虑相互之间的影响,并不是说AB没有任何关系,只是说客观条件下发生的A和B的概率分别是多少

贝叶斯定理的直观理解

假设A代表某种特定情况或假设,比如某人患有一种疾病,而B代表一个相关观测或数据,比如一个医学检测的结果。贝叶斯定理允许我们使用检测结果来更新我们对该人患病概率的估计。

先验摡率  P(A) :在没有看到检测结果之前,我们对疾病的概率评估。

似然摡率 P(B \mid A) :如果该人确实患病,得到当前检测结果的概率。

边缘摡率  P(B) :任何情况下得到这个检测结果的总概率。

后验摡率  P(A \mid B) : 在检测结果呈阳性后,该人实际患病的概率。

朴素贝叶斯在贝叶斯定理基础上:

  • 特征独立性假设:朴素贝叶斯分类器假设所有的特征在给定类别的条件下都是相互独立的。因此,一个实例的类别概率可以通过将其所有单独特征的概率相乘得到。

  • 模型训练与预测:在训练阶段,算法将通过训练数据学习每个类别的先验概率(即每个类别在数据中出现的频率)和每个特征在给定类别下的概率。在预测阶段,算法利用这些学习到的概率和贝叶斯定理来计算给定实例属于每个类别的概率,最后将实例分类到具有最高后验概率的类别。

应用场景:

朴素贝叶斯因其简单性、速度快和适应性强,在文本分类(如垃圾邮件识别、情感分析)、医疗诊断、用户行为预测等多个领域都有广泛的应用。尽管“朴素”的独立性假设很少在实际数据中完全成立,但在实践中,朴素贝叶斯仍然能够提供强大的基准性能。

  朴素贝叶斯的优点:

  对小规模的数据表现很好,适合多分类任务,适合增量式训练。

  缺点

  对输入数据的表达形式很敏感。

决策树

举个栗子:

假设我们有一个数据集,我们想根据天气条件来决定是否进行野餐。

我们的数据集包含以下特征:

  1. 天气(晴朗、多云、下雨)
  2. 温度(热、温暖、凉爽)
  3. 湿度(高、正常)
  4. 风力(强、弱)

目标变量是决定是否进行野餐(是、否)。

假设我们有以下训练数据:

接下来,我们根据天气的不同值(晴朗、多云、下雨)分三个分支:

  1. 如果天气是晴朗,我们进一步观察数据,发现当风力是弱时,我们通常会选择进行野餐,但如果风力强,则不去。因此,在“晴朗”分支下,我们创建一个基于“风力”的决策节点。

  2. 如果天气是多云,我们观察到无论其他条件如何,结果似乎总是“是”,所以这个分支直接结束在一个叶节点上,表示决定“进行野餐”。

  3. 如果天气是下雨,数据显示我们通常不去野餐,所以这个分支也直接结束在一个叶节点上,表示决定“不进行野餐”。

最终,我们得到一个决策树,其中包括决策点(天气和风力)和决策结果(是否进行野餐)。在实际应用中,当我们有一个新的天气预报时,我们可以根据这个决策树来决定是否安排野餐。

决策树的工作原理:

  1. 节点分裂:从数据集的根部开始,选择最佳特征来分割数据,以便于按照某种标准优化目标函数(如信息增益、增益比率或基尼不纯度)。这个过程将重复进行,每一步都选择最佳特征来进一步将数据子集分割成更小的子集。
  2. 树的构建:通过重复分裂过程,决策树将不断生长,直到满足某些停止条件,例如树达到最大深度、节点下的样本数少于最小样本数、或者如果进一步分割不能增加信息增益。
  3. 剪枝:为了防止过拟合,决策树的生长可能会通过剪枝过程被停止,其中一些子树会被替换为叶节点。剪枝可以在树完全生长后进行(后剪枝),也可以在树构建过程中进行(预剪枝)。

决策树的主要优点:

  1. 直观性:决策树的结果很容易理解和解释,可以可视化展示。
  2. 无需数据预处理:决策树通常不需要数据归一化,也不需要处理缺失值。
  3. 适用性广:可以处理数值型和类别型数据,也适用于多类别分类。

决策树的不足:

  1. 过拟合:决策树很容易过拟合,尤其是当树很深时,它可能会学习到数据中的噪声。可以通过设置树深度限制、要求一个节点包含的最小样本数或剪枝等方法来缓解过拟合。
  2. 稳定性:决策树对数据中的小变动可能很敏感,这可能导致生成完全不同的树。这个问题可以通过集成方法,如随机森林,来缓解。

Logistics回归和线性回归跳过

KNN算法

假设我们有一个简化的情况:我们需要根据电影的“打斗场景数”和“接吻场景数”来判断电影是动作片还是爱情片。

假设我们的训练数据集如下:

现在,假设我们有一个新电影(未知类别)的数据如下:

首先,我们需要决定如何测量距离。在这个例子中,我们可以使用欧几里得距离。对于电影1,距离会是:

\text { distence}=\sqrt{(7-10)^{2}+(3-1)^{2}}=\sqrt{9+4}=\sqrt{13}

我们对每部电影重复这个过程,找出与未知电影最近的三部电影。假设它们是电影1、电影2和电影3(这只是一个例子,实际结果取决于计算出的实际距离)。

接下来,我们看这三部最近的电影分别属于哪些类别。假设电影1和电影2是动作片,电影3是爱情片。

因为在最近的三部电影中,有两部是动作片,一部是爱情片,所以根据k-NN算法,我们会预测未知电影也是动作片。

我们要使用k-NN算法来预测这部未知电影的类别。我们选择 k = 3,意味着我们将查看距离未知电影最近的三部电影。

  1. 首先,我们需要决定如何测量距离。在这个例子中,我们可以使用欧几里得距离。对于电影1,距离会是:

KNN即最近邻算法,其主要过程为:

  1. 计算训练样本和测试样本中每个样本点的距离(常见的距离度量有欧式距离,马氏距离等);

  2. 对上面所有的距离值进行排序;

  3. 选前k个最小距离的样本;

  4. 根据这k个样本的标签进行投票,得到最后的分类类别;

  如何选择一个最佳的K值,这取决于数据。一般情况下,在分类时较大的K值能够减小噪声的影响。但会使类别之间的界限变得模糊。一个较好的K值可通过各种启发式技术来获取,比如,交叉验证。另外噪声和非相关性特征向量的存在会使K近邻算法的准确性减小。

  近邻算法具有较强的一致性结果。随着数据趋于无限,算法保证错误率不会超过贝叶斯算法错误率的两倍。对于一些好的K值,K近邻保证错误率不会超过贝叶斯理论误差率。

  KNN算法的优点:

  1. 思想简单,理论成熟,既可以用来做分类也可以用来做回归;

  2. 可用于非线性分类;

  3. 训练时间复杂度为O(n);

  4. 准确度高,对数据没有假设,对outlier不敏感;

  缺点:

  1. 计算量大;

  2. 样本不平衡问题(即有些类别的样本数量很多,而其它样本的数量很少);

  3. 需要大量的内存;

SVM

SVM就是简单来说就是分割高维平面来进行分类:

举个栗子来进行说明:

1. 最大边距超平面:

在二维空间中,一个超平面是一条直线,定义为w \cdot x+b=0,其中:

  • ww 是法向量,决定了超平面的方向。
  • xx 是任意点在平面上的位置。
  • bb 是位移项,决定了超平面与原点的距离。

对于二分类问题,我们的目标是找到一个超平面,使得所有正样本(比如类别 +1)都满足 w \cdot x+b \leq -1,所有负样本(比如类别 -1)都满足 w \cdot x+b \leq-1

两个边界(对正样本和负样本)分别为:

  • 正样本边界:w \cdot x+b=1
  • 负样本边界:w \cdot x+b=-1

这两个边界之间的距离叫做“边距”,可以计算为:

边距=\frac{2}{\|w\|}

在SVM中,我们的目标是最大化这个边距,从而创建最优的分割超平面。

2. 优化问题:

最大化边距 \frac{2}{\|w\|}​ 等价于最小化 \frac{\|w\|^{2}}{2}​。因此,我们可以写出以下优化问题:

\min _{w, b} \frac{1}{2}\|w\|^{2}

受到以下约束条件:

y_{i}\left(w \cdot x_{i}+b\right) \geq 1, \forall i

这里,y_{i}​ 是样本x_{i}的类别标签,取值为+1或-1。

3. 拉格朗日乘数法:

为了解决这个约束优化问题,我们使用拉格朗日乘数法将原问题转换为拉格朗日对偶问题,使得原问题和对偶问题达到同样的最小值。拉格朗日函数是:

L(w, b, \alpha)=\frac{1}{2}\|w\|^{2}-\sum_{i=1}^{n} \alpha_{i}\left[y_{i}\left(w \cdot x_{i}+b\right)-1\right]

其中,\alpha_{i}是拉格朗日乘数,对每一个数据点x_{i}都有一个对应的 \alpha_{i}

4. 对偶问题:

通过对拉格朗日函数L(w, b, \alpha) 关于 wb的偏导数等于0的条件,我们可以找到最优值 wb 的表达式,并将它们代回拉格朗日函数,这将转换成只关于 0 的问题,这就是所谓的对偶问题。

最终,对偶问题可以写成:

\max _{\alpha} \sum_{i=1}^{n} \alpha_{i}-\frac{1}{2} \sum_{i, j=1}^{n} \alpha_{i} \alpha_{j} y_{i} y_{j} x_{i} \cdot x_{j}

受到约束:

\begin{array}{l} \alpha_{i} \geq 0, \forall i \\ \sum_{i=1}^{n} \alpha_{i} y_{i}=0 \end{array}

解决这个对偶问题将给出所有拉格朗日乘数\alpha_{i}的最优值。最优的 w可以通过已解决的 \alpha_{i}计算

  SVM算法优点:

  可用于线性/非线性分类,也可以用于回归;

  低泛化误差;

  容易解释;

  计算复杂度较低;

  缺点:

  对参数和核函数的选择比较敏感;

  原始的SVM只比较擅长处理二分类问题;

Boosting

Boosting是一种强大的集成学习策略,它基于这样一个原则:将多个弱学习器(通常指那些只比随机猜测略好的模型,如小决策树)组合起来,形成一个强学习器(即性能非常好的模型)。这个过程是通过迭代地训练弱学习器来完成的,每一轮的训练都侧重于之前被模型误分类的样本,从而使模型能够学习到数据的不同方面。

工作原理:

  1. 初始化权重:首先,对训练数据中的每个样本分配一个初始权重。在第一轮中,通常给所有样本相同的权重,比如 1/N,其中 N 是样本的数量。

  2. 迭代训练:在每一轮中,训练一个弱学习器,通常是决策树。该学习器是根据当前的数据权重分布进行训练的。

  3. 权重更新:一旦训练了一个弱学习器,就根据它的错误率来更新训练样本的权重:正确分类的样本权重降低,而错误分类的样本权重增加。这就意味着在下一轮中,新的弱学习器将更加关注那些之前被错误分类的样本。

  4. 模型组合:每个弱学习器会根据其性能(通常是它的错误率或损失)被赋予一个权重。最终的模型是所有这些弱学习器的加权组合,其中表现较好的模型会有更大的权重。

特点和优势:

  • 性能:Boosting通常可以显著提高学习算法的性能,特别是对于复杂的任务,它能够减少偏差和方差,是一种有效的偏差-方差权衡策略。

  • 灵活性:它可以与各种类型的学习算法结合使用,不仅限于决策树。

  • 适应性:通过逐步地“学习”数据的不同方面(特别是通过更加关注那些难以正确分类的样本),Boosting算法可以适应复杂的数据结构。

著名的Boosting算法:

  • AdaBoost (Adaptive Boosting):最著名的Boosting算法之一,根据之前弱学习器的错误率来调整样本权重和学习器权重。

  • Gradient Boosting:另一种流行的Boosting方法,通过关注前一个模型的残差(即错误)来训练后续模型。

  • XGBoost、LightGBM、CatBoost:这些都是基于Gradient Boosting的高性能算法,广泛应用于数据科学竞赛和工业应用中,因其出色的速度和性能而闻名。

Boosting方法特别适合于处理偏差较大的情况,即那些在训练数据上欠拟合的情况。通过聚焦于难以正确分类的样本,Boosting能够创建一个更加准确和鲁棒的模型。

k-means自监督聚类

1. 初始化:

  • 选择 k 个随机点作为簇中心(质心)。这些可以是随机选择的数据点,或者完全随机的位置。
  • k 的选择依赖于数据及你希望识别的簇的数量,通常需要通过多次实验或其他方法(如肘部法则)来确定。

2. 分配步骤:

  • 对于数据集中的每一个点,计算它与各个簇中心的距离,并将它分配到最近的簇中心所代表的簇。
  • 最常用的距离度量是欧几里得距离,但也可以根据问题的特定需求选择其他类型的距离。

3. 更新步骤:

  • 一旦所有的点都被分配到某个簇,每个簇的中心就会更新为该簇所有点的均值。这意味着簇中心将移动到它所有成员的平均位置。

4. 迭代:

  • 重复分配和更新步骤,直到满足停止条件,例如:
    • 簇中心的变化小于某个阈值;
    • 达到预定的迭代次数;
    • 数据点的簇分配不再改变。

   k-means算法的优点:

  (1)k-means算法是解决聚类问题的一种经典算法,算法简单、快速。

  (2)对处理大数据集,该算法是相对可伸缩的和高效率的,因为它的复杂度大约是O(nkt),其中n是所有对象的数目,k是簇的数目,t是迭代的次数。通常k<<n。这个算法通常局部收敛。

  (3)算法尝试找出使平方误差函数值最小的k个划分。当簇是密集的、球状或团状的,且簇与簇之间区别明显时,聚类效果较好。

   缺点:

  (1)k-平均方法只有在簇的平均值被定义的情况下才能使用,且对有些分类属性的数据不适合。

  (2)要求用户必须事先给出要生成的簇的数目k。

  (3)对初值敏感,对于不同的初始值,可能会导致不同的聚类结果。

  (4)不适合于发现非凸面形状的簇,或者大小差别很大的簇。

  (5)对于"噪声"和孤立点数据敏感,少量的该类数据能够对平均值产生极大影响。

推荐系统

协同滤波(Collaborative Filtering, CF)是推荐系统中常用的一种方法,它主要基于用户之间或物品之间的相似性来生成推荐。协同滤波的基本假设是,如果用户 A 在过去喜欢了某些物品,而用户 B 在不同的物品集上显示出与用户 A 相似的喜好,则用户 B 可能也会喜欢用户 A 喜欢的那些未评价的物品。

协同滤波通常分为两大类:用户基于的协同滤波(User-Based Collaborative Filtering)和物品基于的协同滤波(Item-Based Collaborative Filtering)。

用户基于的协同滤波:

  1. 相似性计算:首先计算用户之间的相似度,通常基于用户的评分历史,使用诸如皮尔逊相关系数、余弦相似性等度量方法。

  2. 找到邻居:对于一个给定的用户,找出与他最相似的其他用户(即“邻居”)。

  3. 生成推荐:根据这些邻居的评分和相似度,预测目标用户对未评分物品的可能喜好,并提出推荐。

物品基于的协同滤波:

  1. 相似性计算:计算物品之间的相似度,这同样通常基于所有用户对这些物品的评分。

  2. 找到相似物品:对于用户已评分的每个物品,找出与之最相似的其他物品。

  3. 生成推荐:基于用户的现有评分以及相应物品的相似物品,预测用户对未知物品的喜好度,并据此提出推荐。

优点与限制:

  • 优点

    • 直观易懂,基于实际用户行为而非内容属性,因此可以跨越不同类型的物品推荐。
    • 能够发现和推荐给用户意外的新内容,从而增加用户的满意度和探索性。
  • 限制

    • 冷启动问题:对于新用户或新物品缺乏足够的评分数据,协同滤波方法可能难以生成有效推荐。
    • 数据稀疏性:在用户-物品评分矩阵中,评分项通常是非常稀疏的,这可能影响推荐质量。
    • 可扩展性:随着用户和物品数量的增长,计算相似度和生成推荐的计算成本会显著增加。

Apriori

 Apriori是关联分析中比较早的一种方法,主要用来挖掘那些频繁项集合。其思想是:

  1. 如果一个项目集合不是频繁集合,那么任何包含它的项目集合也一定不是频繁集合;

  2. 如果一个项目集合是频繁集合,那么它的任何非空子集也是频繁集合;

  Aprioir需要扫描项目表多遍,从一个项目开始扫描,舍去掉那些不是频繁的项目,得到的集合称为L,然后对L中的每个元素进行自组合,生成比上次扫描多一个项目的集合,该集合称为C,接着又扫描去掉那些非频繁的项目,重复…

假设我们有以下交易记录,每个交易记录包含一些商品(项目):

  • 交易1: {面包, 牛奶}
  • 交易2: {面包, 尿布, 啤酒}
  • 交易3: {牛奶, 尿布, 啤酒, 可乐}
  • 交易4: {面包, 牛奶, 尿布}
  • 交易5: {面包, 牛奶, 尿布, 啤酒}
  • 交易6: {牛奶, 啤酒}

设最小支持度阈值为50%(即项集需要在至少3个交易中出现才认为是频繁的)。

步骤 1: 生成1-项集合并计算支持度

首先,列出所有单个项目的集合(1-项集),并计算每个集合在所有交易中出现的频率(支持度):

  • {面包}: 4/6
  • {牛奶}: 5/6
  • {尿布}: 4/6
  • {啤酒}: 4/6
  • {可乐}: 1/6

只有{可乐}的支持度低于50%,所以我们将其舍去。

步骤 2: 生成2-项集合并计算支持度

接下来,对剩下的频繁1-项集进行自组合,生成所有可能的2-项集:

  • {面包, 牛奶}: 3/6
  • {面包, 尿布}: 3/6
  • {面包, 啤酒}: 2/6
  • {牛奶, 尿布}: 3/6
  • {牛奶, 啤酒}: 3/6
  • {尿布, 啤酒}: 3/6

在这里,{面包, 啤酒}的支持度低于50%,因此被舍去。

步骤 3: 生成3-项集合并计算支持度

然后,我们用剩下的频繁2-项集生成3-项集,并计算它们的支持度:

  • {面包, 牛奶, 尿布}: 2/6
  • {面包, 牛奶, 啤酒}: 1/6
  • {面包, 尿布, 啤酒}: 1/6
  • {牛奶, 尿布, 啤酒}: 2/6

所有这些3-项集的支持度都低于50%,因此它们都被舍去。

结果

最终,我们发现频繁项集为:

  • 频繁1-项集:{面包}, {牛奶}, {尿布}, {啤酒}
  • 频繁2-项集:{面包, 牛奶}, {面包, 尿布}, {牛奶, 尿布}, {牛奶, 啤酒}, {尿布, 啤酒}

没有频繁的3-项集。

通过Apriori算法,我们不仅发现了频繁出现的单个项目,还发现了经常一起出现的项目组合。这对于如超市货架布局、交叉销售策略等方面的决策制定是非常有用的。

随机森林

随机森林的工作原理包括以下几个步骤:

  1. 自助采样(Bootstrapping):对原始数据集进行多次重采样以生成多个不同的训练数据集。每次采样都是随机的,并允许重复选择同一数据点(即每个训练集可能包含重复的数据点,而一些原始数据点可能被遗漏)。

  2. 构建决策树:对每个新的训练数据集,构建一个决策树。在构建这些树的过程中,每次分割时选择最佳属性的过程中引入随机性:通常是从随机选取的属性子集中选择最佳属性,而不是考虑所有可能的属性。这增加了森林的多样性。

  3. 预测和决策

    • 分类任务:森林中的每棵树对样本进行分类,最后通过“多数投票”来确定最终类别。即,被森林中大多数树选中的类别成为最终预测结果。
    • 回归任务:每棵树都会给出一个预测结果,最终输出的是所有树预测结果的平均值。

假设我们有一个小数据集,目标是根据天气条件预测是否适合进行野餐。

示例数据集:

假设我们的数据集如下,包含四个特征:温度、天气、风速和湿度,以及一个标签:是否野餐。

步骤 1: 自助采样

对原始数据进行自助采样(Bootstrap sampling),生成多个训练子集。假设我们生成了3个这样的子集:

  • 子集1: {第1, 1, 3, 5行}
  • 子集2: {第1, 2, 3, 4行}
  • 子集3: {第2, 3, 5, 6行}

步骤 2: 构建决策树

对于每个子集,我们构建一个决策树。在每次分割时,我们不是查看所有特征,而是随机选择一部分特征。假设我们每次只选择两个特征来考虑。

  • 对于子集1,假设随机选中的特征是“温度”和“风速”,然后基于这些特征构建决策树。
  • 对于子集2,假设随机选中的特征是“天气”和“湿度”,然后构建决策树。
  • 对于子集3,假设随机选中的特征是“天气”和“风速”,然后构建决策树。

步骤 3: 进行预测和汇总结果

当需要对新的数据点进行分类时(假设是:“温度=低,天气=晴朗,风速=高,湿度=低”),每棵树都会独立做出预测:

  • 树1可能会根据“温度”和“风速”预测“是”(适合野餐)。
  • 树2可能会根据“天气”和“湿度”预测“否”(不适合野餐)。
  • 树3可能会根据“天气”和“风速”预测“是”(适合野餐)。

最后,我们通过多数投票来确定最终的分类结果。在这个例子中,因为有两棵树预测“是”,一棵树预测“否”,最终结果是“是”(适合野餐)。

结论:

通过这个过程,随机森林算法结合了多个决策树的结果来改进整体预测的准确性。每棵树都是在不完全相同的数据上训练,并且在分割时考虑不同的特征子集,这有助于增加模型的多样性,减少过拟合,提高泛化能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/284097.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静态综合实验

一.搭建拓扑结构 1.根据拓扑结构可以把网段分成14个网段&#xff0c;根据192.168.1.0/24可以划分出ip地址和环回地址 其中环回r1分别是 192.168.1.32/27 192.168.1.32/28 192.168.1.48/28 2.划分完后如图&#xff1a; 二.配置IP地址 注意&#xff1a;为了避免错误&#…

vulnhub prime1通关

目录 环境安装 1.信息收集 收集IP 端口扫描 目录扫描 目录文件扫描 查找参数 打Boss 远程文件读取 木马文件写入 权限提升 方法一 解锁密钥 方法二&#xff1a; linux内核漏洞提权 总结 环境安装 Kali2021.4及其prime靶机 靶机安装&#xff1a;Prime: 1 ~ Vul…

今天聊聊新零售

一、什么是新零售&#xff1f; 2016年&#xff0c;在杭州举行的“云栖大会”上&#xff0c;马云发表了讲话&#xff0c;首次提出了“新零售”这一概念。 1.1 新零售概念 新零售&#xff0c;英文是New Retailing&#xff0c;新零售是对人货场的重构。人是消费者、销售人员、…

Python 从0开始 一步步基于Django创建项目(3)使用Admin site管理数据模型

本文内容建立在《Python 从0开始 一步步基于Django创建项目&#xff08;2&#xff09;创建应用程序&数据模型》的基础上。 Django提供的admin site&#xff0c;使得网站管理员&#xff0c;能够轻松管理网站的数据模型。 本文首先创建‘管理员账户’&#xff0c;即超级用户…

Linux:Jenkins全自动持续集成持续部署(3)

在上一章部署好了之后&#xff0c;还需要点击一下才能进行部署&#xff0c;本章的效果是&#xff1a;当gitlab上的代码发生了变化后&#xff0c;我们不需要做任何事情不需要去点击构建按钮&#xff0c;Jenkins直接自动检测变化&#xff0c;然后自动去集成部署Linux&#xff1a;…

利用免费 GPU 部署体验大型语言模型推理框架 vLLM

vLLM简介 vLLM 是一个快速且易于使用的 LLM&#xff08;大型语言模型&#xff09;推理和服务库。 vLLM 之所以快速&#xff0c;是因为&#xff1a; 最先进的服务吞吐量 通过 PagedAttention 高效管理注意力键和值内存 连续批处理传入请求 使用 CUDA/HIP 图快速模型执行 量…

C#,图论与图算法,用于检查给定图是否为欧拉图(Eulerian Graph)的算法与源程序

1 欧拉图 欧拉图是指通过图(无向图或有向图)中所有边且每边仅通过一次通路, 相应的回路称为欧拉回路。具有欧拉回路的图称为欧拉图(Euler Graph), 具有欧拉通路而无欧拉回路的图称为半欧拉图。 对欧拉图的一个现代扩展是蜘蛛图,它向欧拉图增加了可以连接的存在点。 这给…

vue3对openlayers使用(加高德,天地图图层)

OpenLayers认识 WebGIS四大框架&#xff1a; Leaflet、OpenLayers、Mapbox、Cesium OpenLayers 是一个强大的开源 JavaScript 地图库&#xff0c;专注于提供可嵌入网页的交互式地图体验。作为一款地理信息系统&#xff08;GIS&#xff09;的前端开发工具&#xff0c;OpenLaye…

docker 和K8S知识分享

docker知识&#xff1a; 比如写了个项目&#xff0c;并且在本地调试没有任务问题&#xff0c;这时候你想在另外一台电脑或者服务器运行&#xff0c;那么你需要在另外一台电脑或者服务器配置相同的软件&#xff0c;比如数据库&#xff0c;web服务器&#xff0c;必要的插件和库等…

使用 chezmoi vscode, 管理你的 dotfiles

什么是 dotfiles In Unix-like operating systems, any file or folder that starts with a dot character (for example, /home/user/.config), commonly called a dot file or dotfile. 任何以 . 开头去命名的文件或者目录都可以称为 dotfile, 在 Unix-like 系统一般用的比较…

Mysql数据库深入理解

目录 一、什么是数据库 二、Mysql基本架构图 1.Mysql客户端/服务器架构 2.客户端与服务器的连接过程 3.服务器处理客户端请求 4.一条查询SQL执行顺序 4.1连接器 4.2查询缓存 4.3解析器 4.4执行器 4.4.1预处理阶段 4.4.2优化阶段 4.4.3执行阶段 5.一条记录如何存…

使用 Flink + Faker Connector 生成测试数据压测 MySQL

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…

VMware Workstation Pro 17虚拟机超级详细搭建(含redis,nacos,docker)(一)

今天从零搭建一下虚拟机的环境&#xff0c;把nacos&#xff0c;redis等微服务组件还有数据库搭建到里面&#xff0c;首先看到的是我们最开始下载VMware Workstation Pro 17 之后的样子&#xff0c;总共一起应该有三部分因为篇幅太长了 下载地址 : VMware - Delivering a Digit…

Mora: Enabling Generalist Video Generation via A Multi-Agent Framework

目录 论文地址&#xff1a;Mora: Enabling Generalist Video Generation viaA Multi-Agent Framework github地址&#xff1a;https://github.com/lichao-sun/Mora 一、摘要 &#xff08;1&#xff09;Mora 的主要特点&#xff1a; &#xff08;2&#xff09;Mora的应用场景…

Qt/C++通用跨平台Onvif工具/支持海康大华宇视华为天地伟业等/云台控制/预置位管理/工程调试利器

一、前言 在安防视频监控行业&#xff0c;Onvif作为国际标准&#xff0c;几乎主要的厂商都支持&#xff0c;不仅包含了国内的厂商&#xff0c;也包括主要的国际厂商&#xff0c;由于有了这个标准的存在&#xff0c;使得不同设备不同安防平台之间&#xff0c;能够接入各个厂家的…

【Linux】Linux开发工具-vim / 编译器-gcc/g++ / 调试器-gdb / git操作 / 项目自动化构建工具-make/Makefile

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;Linux_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.在Linux写自己的第一个程序 1.1 nano指令 1.2 nano指令的使用 1.2.1 介绍 1.2.2 演示 1.2.2.1 创建.c文件 1.2.2.2 nano cod…

【黄啊码】如何用GPT和向量数据库做问答型AI

知识库服务依赖该数据库&#xff0c;Embedding 形式个性化训练 ChatGPT&#xff0c;必不可少的就是向量数据库 因为 qdrant 向量数据库只支持 Docker 部署&#xff0c;所以需要先安装好 Docker 服务。 命令行安装 拉取镜像 docker pull qdrant/qdrant 运行服务 docker run -…

【Godot 3.5控件】用TextureProgress制作血条

说明 本文写自2022年11月13日-14日&#xff0c;内容基于Godot3.5。后续可能会进行向4.2版本的转化。 概述 之前基于ProgressBar创建过血条组件。它主要是基于修改StyleBoxFlat&#xff0c;好处是它几乎可以算是矢量的&#xff0c;体积小&#xff0c;所有东西都是样式信息&am…

神级工具之git (一): git 基操

一切都从&#xff1a;Git User Manual开始&#xff0c;或者中文版的Git中文手册 核心概念 工作区 工作区我们可见的&#xff0c;可以进行修改的目录树。我们可以在目录树中进行文件的查看&#xff0c;修改。通常我们会使用一个神级编辑器Vim。我给她取了个名字&#xff0c;就…

Flutter开发进阶之瞧瞧BuildOwner

Flutter开发进阶之瞧瞧BuildOwner 上回说到关于Element Tree的构建还缺最后一块拼图&#xff0c;build的重要过程中会调用_element!.markNeedsBuild();&#xff0c;而markNeedsBuild会调用owner!.scheduleBuildFor(this);。 在Flutter框架中&#xff0c;BuildOwner负责管理构建…