解锁机器学习核心算法 | 支持向量机:机器学习中的分类利刃

一、引言

在机器学习的庞大算法体系中,有十种算法被广泛认为是最具代表性和实用性的,它们犹如机器学习领域的 “十大神器”,各自发挥着独特的作用。这十大算法包括线性回归、逻辑回归、决策树、随机森林、K - 近邻算法、K - 平均算法、支持向量机、朴素贝叶斯算法、主成分分析(PCA)、神经网络。它们涵盖了回归、分类、聚类、降维等多个机器学习任务领域,是众多机器学习应用的基础和核心。

而在这十大算法中,支持向量机(Support Vector Machine,SVM)算法凭借其独特的理论和卓越的性能,占据着举足轻重的地位。SVM 是一种有监督的机器学习算法,可广泛应用于分类和回归问题。它的核心思想是找到一个超平面,将不同类别的数据点尽可能清晰地分隔开,并且使这个超平面到各类数据点的间隔最大化 ,以此来提高模型的泛化能力。这种独特的思想使得 SVM 在处理高维数据和小样本数据时表现出色,并且在非线性分类问题上也有着强大的处理能力,通过核函数技巧,能将低维空间中的非线性问题转化为高维空间中的线性可分问题。在图像识别、文本分类、生物信息学等众多领域,SVM 都有着广泛且成功的应用,为解决实际问题提供了高效的解决方案。接下来,就让我们深入探究支持向量机算法的奥秘。
在这里插入图片描述

二、SVM 的起源与发展

支持向量机(SVM)的发展历经漫长探索与演进,众多学者成果为其奠基。

  • 1936 年,罗纳德・费希尔提出线性判别分析(LDA),成为 SVM 发展起点,启发分类问题研究。1950 年,阿伦萨因的 “核再现理论” 为 SVM 核方法提供理论基础,拓展其处理非线性问题的能力。1957 年,弗兰克・罗森布拉特发明感知器,为 SVM 处理线性分类提供思路。
  • 1963 年,弗拉基米尔・瓦普尼克和雷纳提出肖像算法,为 SVM 出现铺垫。1964 年,艾泽曼等人对内核的几何解释推动 SVM 理论完善。1968 年,史密斯引入松弛变量,增强 SVM 处理复杂数据能力。1973 年,杜达和哈特的宽边界超平面思想为 SVM 发展指明新方向。1974 年,瓦普尼克和切尔沃涅基催生 “统计学习理论”,SVM 成核心部分,1979 年相关著作推动其国际传播。
  • 80 年代,哈松博士论文及统计力学与 SVM 的融合,丰富了 SVM 理论。随着对模式识别相关问题研究深入及 VC 维概念提出,SVM 逐渐完善。1992 年 COLT 会议上,接近现代形式的 SVM 算法亮相,标志其走向成熟,随后在多领域广泛应用。

三、SVM 的核心原理

(一)基本概念

  • 超平面 在机器学习领域,超平面是一个极为重要的概念,它在不同维度空间有着独特的定义和表示形式。
    • 二维空间中,超平面就是我们所熟知的直线,其方程可以表示为: a x + b y + c = 0 ax + by + c = 0 ax+by+c=0其中 a a a b b b 不同时为 0 0 0 ,通过这个方程可以将二维平面划分为两个区域。
    • 三维空间里,超平面则是一个平面,方程表示为: a x + b y + c z + d = 0 ax + by + cz + d = 0 ax+by+cz+d=0 其中 a a a b b b c c c 不全为 0 0 0 ,能够把三维空间分割成两个部分。
    • 而在更高维度的 n n n维空间 中,超平面同样是一个维度比所在空间低一维的子空间,其方程的一般形式为: w T x + b = 0 w^T x + b = 0 wTx+b=0这里的 w w w 是一个 n n n 维的权重向量, x x x n n n 维空间中的向量, b b b 是偏置项 。

超平面在 SVM 中扮演着分类决策边界的关键角色,它的位置和方向决定了如何将不同类别的数据点分隔开来。对于一个二分类问题,位于超平面一侧的数据点被划分为正类,另一侧的数据点则被划分为负类。例如,在一个简单的二维数据集上,通过确定合适的超平面(直线),可以将红色和蓝色的数据点准确地分开,从而实现分类任务。

  • 支持向量支持向量是距离超平面最近的数据点,它们在 SVM 中对确定超平面的位置和方向起着至关重要的作用。当我们试图找到一个超平面来分隔不同类别的数据时,并不是所有的数据点都对超平面的确定有同等的影响力,支持向量才是真正决定超平面的关键因素。因为超平面的位置和方向是由这些距离它最近的数据点来确定的,其他远离超平面的数据点对超平面的影响较小。在实际应用中,通过调整支持向量与超平面的距离关系,能够找到最优的超平面,使得分类效果最佳。例如,在一个线性可分的数据集里,那些最靠近超平面且分别属于不同类别的数据点就是支持向量,它们如同超平面的 “支撑点”,超平面的确定就是围绕着这些支持向量进行的,以确保能够在最大程度上正确分类数据点的同时,使超平面具有最强的泛化能力。

  • 间隔与最大间隔间隔是超平面到最近支持向量的距离,它是衡量 SVM 分类性能的一个重要指标。在 SVM 中,我们追求的是找到使正类和负类数据点之间间隔最大化的超平面,这就是最大间隔的概念。为什么要最大化间隔呢?因为较大的间隔意味着超平面具有更强的鲁棒性和泛化能力,能够更好地对未知数据进行分类。直观地说,间隔越大,超平面与各类数据点之间的 “缓冲带” 就越宽,这样即使在面对一些噪声数据或者新的数据点时,超平面依然能够较为准确地对其进行分类。从数学角度来看,通过最大化间隔,可以将 SVM 的分类问题转化为一个凸优化问题进行求解。在求解过程中,我们通常会利用拉格朗日乘子法等数学工具,将原始的约束优化问题转化为对偶问题,从而更方便地找到最优解,确定能够使间隔最大化的超平面的参数。

(二)算法原理详解

  • 线性可分 SVM对于线性可分的数据,即存在一个超平面能够将不同类别的数据点完全正确地分开,SVM 的目标就是通过最大化间隔来寻找这个最优超平面。假设我们有一个二分类数据集 D = { ( x i , y i ) } i = 1 n D = \{(x_i, y_i)\}_{i = 1}^n D={(xi,yi)}i=1n 其中 x i x_i xi n n n 维特征向量, y i ∈ { + 1 , − 1 } y_i \in \{ + 1, - 1\} yi{+1,1} 是类别标签。
    超平面可以表示为: w T x + b = 0 w^T x + b = 0 wTx+b=0
    数据点 x i x_i xi 到超平面的距离可以表示为: ∣ w T x i + b ∣ ∣ ∣ w ∣ ∣ \frac{|w^T x_i + b|}{||w||} ∣∣w∣∣wTxi+b 为了找到最优超平面,我们的目标是最大化这个距离,也就是最大化间隔。为了求解这个问题,我们可以利用拉格朗日乘子法将其转化为对偶问题。

    • 首先,引入拉格朗日乘子 α i \alpha_i αi ,构建拉格朗日函数 L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i [ y i ( w T x i + b ) − 1 ] L(w, b, \alpha) = \frac{1}{2}||w||^2 - \sum_{i = 1}^n \alpha_i [y_i (w^T x_i + b) - 1] L(w,b,α)=21∣∣w2i=1nαi[yi(wTxi+b)1] 其中 α i ≥ 0 \alpha_i \geq 0 αi0
    • 然后,对 w w w b b b 求偏导并令其为 0 0 0,得到一些等式关系,再将这些关系代入拉格朗日函数中,就可以得到对偶问题: max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j x i T x j \max_{\alpha} \sum_{i = 1}^n \alpha_i - \frac{1}{2} \sum_{i = 1}^n \sum_{j = 1}^n \alpha_i \alpha_j y_i y_j x_i^T x_j αmaxi=1nαi21i=1nj=1nαiαjyiyjxiTxj 约束条件为: ∑ i = 1 n α i y i = 0 \sum_{i = 1}^n \alpha_i y_i = 0 i=1nαiyi=0 α i ≥ 0 \alpha_i \geq 0 αi0 。通过求解这个对偶问题,我们可以得到拉格朗日乘子 α i \alpha_i αi 的值,进而确定最优超平面的参数 w w w b b b

      在实际应用中,对于一些简单的线性可分数据集,如经典的鸢尾花数据集的部分子集,我们可以通过这种方法准确地找到最优超平面,实现对不同类别鸢尾花的分类。
  • 线性支持向量机(近似线性可分情况)在现实世界中,数据往往存在噪声或只是近似线性可分,完全线性可分的情况较为少见。为了处理这种情况,SVM 引入了松弛变量 ξ i \xi_i ξi,这就产生了线性支持向量机,也称为软间隔 SVM。松弛变量 ξ i \xi_i ξi 允许部分数据点被错误分类或者位于间隔区域内,从而使模型能够更好地适应带有噪声或异常点的数据。此时,优化目标变为: min ⁡ w , b , ξ 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 n ξ i \min_{w, b, \xi} \frac{1}{2}||w||^2 + C \sum_{i = 1}^n \xi_i w,b,ξmin21∣∣w2+Ci=1nξi 约束条件为 y i ( w T x i + b ) ≥ 1 − ξ i y_i (w^T x_i + b) \geq 1 - \xi_i yi(wTxi+b)1ξi ξ i ≥ 0 \xi_i \geq 0 ξi0 ,其中 C C C 是惩罚系数,它起着权衡分类错误与间隔大小的重要作用。

    • 较大的 C C C意味着对分类错误的惩罚更严厉,模型会更倾向于拟合训练数据,尽量减少错误分类的情况,但可能会导致过拟合;
    • 较小的 C C C则会使模型更加容忍错误分类,更加注重模型的简单性和泛化能力,不过可能会增加一些分类错误。


    在求解这个优化问题时,同样可以利用拉格朗日乘子法将其转化为对偶问题进行求解。以手写数字识别为例,由于手写数字的图像可能存在变形、噪声等问题,数据并非完全线性可分,使用线性支持向量机可以通过调整 C C C 值和引入松弛变量,有效地对这些手写数字进行分类,在保证一定分类准确率的同时,提高模型的泛化能力。

  • 非线性支持向量机当数据在原始低维空间中呈现非线性分布,无法用一个超平面将不同类别的数据点分开时,就需要使用非线性支持向量机。其核心思想是通过核函数将数据映射到高维空间,使得在高维空间中数据变得线性可分,从而可以使用线性 SVM 的方法进行处理。核函数是一种能够在低维空间中计算高维空间内积的函数,它避免了直接在高维空间中进行复杂的计算,大大降低了计算复杂度。常见的核函数包括:

    • 线性核 K ( x , y ) = x T y K(x, y) = x^T y K(x,y)=xTy适用于数据本身接近线性可分的情况,计算速度快,但对于复杂的非线性数据效果有限;
    • 多项式核 K ( x , y ) = ( x T y + c ) d K(x, y) = (x^T y + c)^d K(x,y)=(xTy+c)d 可以捕捉数据中的非线性关系,通过调整参数 c c c d d d可以控制多项式的次数和复杂度,能够处理一些具有多项式关系的数据;
    • 径向基函数(RBF)核,也称为高斯核: K ( x , y ) = exp ⁡ ( − γ ∣ x − y ∣ 2 ) K(x, y) = \exp(-\gamma |x - y|^2) K(x,y)=exp(γxy2) 具有很强的非线性映射能力,对各种类型的数据都有较好的适应性,是最常用的核函数之一,在处理图像、文本等复杂数据时表现出色;
    • sigmoid 核 K ( x , y ) = tanh ⁡ ( α x T y + c ) K(x, y) = \tanh(\alpha x^T y + c) K(x,y)=tanh(αxTy+c) 与神经网络中的激活函数类似,适用于某些特定类型的数据,如在一些与神经网络相关的应用场景中可能会发挥作用。


    在实际应用中,选择合适的核函数对于模型的性能至关重要。例如,在图像识别任务中,由于图像数据的复杂性和非线性特征,高斯核通常表现出色,通过将图像数据映射到高维空间,SVM 可以有效地捕捉图像的非线性特征,从而提高分类精度;在文本分类任务中,多项式核和线性核都是常见的选择,多项式核可以捕捉文本数据的复杂关系,而线性核则适用于大规模数据集,计算效率更高 。

四、SVM 的应用领域

1. 图像识别领域

  • 手写数字识别应用于邮政系统对手写邮政编码的识别、银行系统对手写支票金额数字的识别等场景。
  • 车牌识别用于智能交通系统中的停车场管理、电子警察抓拍等,实现车辆自动识别和管理。

2. 文本分类领域

  • 垃圾邮件过滤许多电子邮件客户端和邮件服务器采用该技术,为用户提供纯净邮件环境。
  • 情感分析帮助企业了解消费者对产品或服务的评价以改进产品服务,也用于社交媒体分析公众对事件或话题的情感态度,如电商平台分析用户评价提升满意度。

3. 生物信息学领域

  • 基因分类在癌症研究中,通过分析基因表达数据,将基因分为与癌症相关和无关类别,助力了解癌症发病机制与寻找治疗靶点。
  • 蛋白质分类根据蛋白质功能将其分类,辅助了解蛋白质功能和作用机制,为药物研发和生物技术应用提供支持。

4. 金融风险评估领域

  • 信贷违约预测银行或金融机构利用该技术构建信贷违约预测模型,依据预测结果决定是否批准贷款及相关额度、利率,降低信贷风险。
  • 股票价格预测为投资者提供一定参考,辅助其做出更合理投资决策,但需结合其他方法综合判断。

六、SVM 的优缺点

(一)优点

  1. 高精度与高效性在中等规模数据集上,SVM 能提供高精度方案。处理高维数据时,它通过寻找最优超平面分隔数据,不依赖数据分布,有效应对维数灾难。如在图像识别,像 MNIST 手写数字识别任务中,可借合适核函数将高维图像数据映射,找到超平面实现准确分类。
  2. 灵活性与非线性处理能力核技巧让 SVM 能借不同核函数处理各类数据关系,尤其擅长解决非线性问题。它把低维非线性问题转化为高维线性可分问题。像文本分类,数据呈复杂非线性,多项式核或 RBF 核的 SVM 可有效提取特征分类。
  3. 泛化能力强SVM 最大化决策边界边缘,减少过拟合风险。最大化间隔使超平面与数据点“缓冲带”更宽,对噪声和新数据点分类准确。训练只关注支持向量,对非支持向量噪声和异常值鲁棒。如手写数字识别,在测试集面对噪声或变形图像仍能保持高准确率。
  4. 鲁棒性好通过选择正则化参数 C,SVM 可处理噪声数据并忽略离群点。软间隔 SVM 引入松弛变量,C 值权衡分类错误与间隔大小。C 小,模型容忍错误分类,注重泛化;C 大,模型倾向拟合训练数据。在金融风险评估中,能合理调整 C 值避免异常数据干扰。

(二)缺点

  1. 训练时间长与计算复杂度高数据集大时,SVM 训练时间长。因其需解决优化问题确定支持向量,计算所有样本点内积,使计算量和复杂度剧增。其优化问题是二次规划问题,本身计算复杂。如处理 CIFAR - 10 大规模图像数据集,比深度学习算法如卷积神经网络耗时耗资源。
  2. 参数选择复杂SVM 性能受核函数和正则化参数显著影响,需交叉验证确定,过程复杂。不同核函数适用于不同数据,无通用选择方法,靠数据特点和经验尝试调整。正则化参数 C 也需交叉验证找最优值平衡训练和测试误差,实际应用需大量实验计算,增加成本。
  3. 模型结果难以解释SVM 是黑盒模型,难直观解释决策过程和结果。不像决策树以树状结构展示决策,SVM 决策边界由支持向量决定,非专业人士难理解其分类决策依据,在医疗诊断等高可解释性需求领域受限。

七、项目实战

(一)Python 实现 SVM 分类

在 Python 中,借助 scikit-learn 库能便捷实现 SVM 分类。以鸢尾花数据集分类为例,代码如下:

from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC
from sklearn.metrics import accuracy_score# 加载鸢尾花数据集
iris = datasets.load_iris()
X = iris.data
y = iris.target# 划分训练集和测试集,测试集占20%
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)# 数据标准化
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)# 创建 SVM 分类器,用RBF核函数,C设为1
# SVC 代表支持向量分类(Support Vector Classification)
clf = SVC(kernel='rbf', C=1)# 训练模型
clf.fit(X_train, y_train)# 对测试集预测
y_pred = clf.predict(X_test)# 计算准确率
accuracy = accuracy_score(y_test, y_pred)
print("分类准确率:", accuracy)

代码逐行解释:先导入所需模块,包括数据集、数据划分、标准化、SVM分类器及准确率计算函数。加载鸢尾花数据集后,提取特征 X 和标签 y,按比例划分训练集与测试集并设随机种子保证结果可复现。创建标准化器对训练集和测试集处理。接着创建SVM分类器,指定核函数与惩罚系数,训练模型后预测并计算准确率。

(二)可视化优化

为直观展示分类效果,可用 matplotlib 库可视化,在上述代码基础上添加:

import numpy as np
import matplotlib.pyplot as plt# 可视化部分
# 设置网格步长,用于生成绘制决策边界的网格。
h =.02  
# 确定绘制区域的边界,分别根据训练集数据中第一个特征(花萼长度)和第二个特征(花萼宽度)的最小值和最大值来确定,并且在边界上各扩展 1 个单位,以确保所有数据点都在绘制区域内。
x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1
xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
Z = clf.predict(np.c_[xx.ravel(), yy.ravel()])
# 将预测结果`Z`的形状重塑为与网格`xx`相同的形状,以便后续绘制等高线图。
Z = Z.reshape(xx.shape)
plt.contourf(xx, yy, Z, cmap=plt.cm.coolwarm, alpha=0.8)
plt.scatter(X_train[:, 0], X_train[:, 1], c=y_train, cmap=plt.cm.coolwarm)
plt.title('SVM Classification on Iris Dataset')
plt.xlabel('Sepal length (standardized)')
plt.ylabel('Sepal width (standardized)')
plt.show()

可视化代码通过设置网格步长、确定绘制区域边界,生成网格点并预测,绘制填充等高线图展示决策边界,同时绘制训练集数据点,添加标题与坐标轴标签后显示图表,直观呈现SVM在鸢尾花数据集上的分类效果。
在这里插入图片描述

八、总结与展望

支持向量机算法作为机器学习领域的经典算法之一,凭借其独特的核心原理,在众多领域展现出了卓越的应用价值。它通过寻找最优超平面来实现数据分类,在处理高维数据和小样本数据时表现出色,具有高精度、灵活性强、泛化能力好以及鲁棒性强等优点。在图像识别、文本分类、生物信息学和金融风险评估等多个领域,SVM 都发挥着重要作用,为解决实际问题提供了有效的解决方案。

然而,SVM 也并非完美无缺,其训练时间长、计算复杂度高以及参数选择复杂等缺点,在一定程度上限制了它在大规模数据和对模型可解释性要求较高场景中的应用。但随着科技的不断发展,SVM 在未来机器学习领域仍有着广阔的发展空间。在理论研究方面,学者们可能会继续深入研究 SVM 的优化算法,以降低其计算复杂度,提高训练效率;同时,对于参数选择问题,可能会开发出更智能、更自动化的方法,减少人工调参的工作量和不确定性。在应用拓展方面,随着物联网、大数据和人工智能等技术的快速发展,SVM 有望在更多新兴领域得到应用,如智能家居中的设备状态监测与故障诊断、智能交通中的路况预测与车辆行为分析等。此外,SVM 与其他机器学习算法的融合也是一个重要的发展方向,通过结合不同算法的优势,能够构建出更强大、更高效的模型,以满足日益复杂的实际应用需求。


机器学习项目代码地址:【传送门】


延伸阅读

  • 机器学习核心算法系列文章

  • 解锁机器学习核心算法 | 随机森林算法:机器学习的超强武器
    解锁机器学习核心算法 | K -近邻算法:机器学习的神奇钥匙
    解锁机器学习核心算法 | K-平均:揭开K-平均算法的神秘面纱
    解锁机器学习核心算法 | 决策树:机器学习中高效分类的利器
    解锁机器学习核心算法 | 逻辑回归:不是回归的“回归”
    解锁机器学习核心算法 | 线性回归:机器学习的基石

  • 深度学习框架探系列文章
    深度学习框架探秘|TensorFlow:AI 世界的万能钥匙
    深度学习框架探秘|PyTorch:AI 开发的灵动画笔
    深度学习框架探秘|TensorFlow vs PyTorch:AI 框架的巅峰对决
    深度学习框架探秘|Keras:深度学习的魔法钥匙

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

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

相关文章

vue脚手架开发打地鼠游戏

游戏设计: 规划游戏的核心功能,如场景、随机出现的地鼠、计分系统、游戏时间限制等。简单设计游戏流程,包括开始界面、游戏进行中、关卡设置(如不同关卡地鼠出现数量、游戏时间等)、关卡闯关成功|失败、游戏结束闯关成…

Web 后端 请求与响应

一 请求响应 1. 请求(Request) 客户端向服务器发送的HTTP请求,通常包含以下内容: 请求行:HTTP方法(GET/POST等)、请求的URL、协议版本。 请求头(Headers):…

Linux的基础指令和环境部署,项目部署实战(下)

目录 上一篇:Linxu的基础指令和环境部署,项目部署实战(上)-CSDN博客 1. 搭建Java部署环境 1.1 apt apt常用命令 列出所有的软件包 更新软件包数据库 安装软件包 移除软件包 1.2 JDK 1.2.1. 更新 1.2.2. 安装openjdk&am…

DeepSeek在linux下的安装部署与应用测试

结合上一篇文章,本篇文章主要讲述在Redhat linux环境下如何部署和使用DeepSeek大模型,主要包括ollama的安装配置、大模型的加载和应用测试。关于Open WebUI在docker的安装部署,Open WebUI官网也提供了完整的docker部署说明,大家可…

罗德与施瓦茨ZNB20,矢量网络分析仪9KHz-20GHz

罗德与施瓦茨ZNB20矢量网络分析仪9KHz-20GHz R&SZNB20矢量网络分析仪 产品型号: ZNB20 产品品牌:罗德与施瓦茨 R&S 产品名称: 矢量网络分析仪 频率范围:9kHz - 20GHz R&S ZNB 矢量网络分析仪 良好的测量速度、动态范围和操作方便性&am…

axios post请求 接收sse[eventsource]数据的

axios 接收sse数据的 axios 接收sse数据的 EventSource什么 基于 HTTP 协议实现,通过与服务器建立一个持续连接,实现了服务器向客户端推送事件数据的功能。在客户端,EventSource 对象通过一个 URL 发起与服务器的连接。连接成功后&#xff0…

Python----数据结构(双向链表:节点,是否为空,长度,遍历,添加,删除,查找,循环链表)

一、双向链表 1.1、概念 双向链表是一种链表数据结构,每个节点除了包含指向下一个节点的指针外,还包含指向前一个节点的指针。这种特性使得在双向链表中,可以从任意一个节点开始,向前或向后遍历链表。 1.2、特点 • 既可以从…

VScode内接入deepseek包过程(本地部署版包会)

目录 1. 首先得有vscode软件 2. 在我们的电脑本地已经部署了ollama,我将以qwen作为实验例子 3. 在vscode上的扩展商店下载continue 4. 下载完成后,依次点击添加模型 5. 在这里可以添加,各种各样的模型,选择我们的ollama 6. 选…

投资组合风险管理

投资组合风险管理 市场风险 信用风险流动性风险风险指标收益率波动率最大回撤 α \alpha α(詹森指数), β \beta β卡玛比率月胜率上/下行捕获比夏普比率索提诺比率经风险调整的收益率(𝑀2)特雷诺比率信息…

Mongodb数据管理

Mongodb数据管理 1.登录数据库,查看默认的库 [rootdb51~]# mongo> show databases; admin 0.000GB config 0.000GB local 0.000GB> use admin switched to db admin > show tables system.version > admin库:admin 是 MongoDB 的管理…

GTP3 大模型

GTP3 大模型 模型架构训练核心思想 GTP3 : OpenAI 在 2020 年 5 月发布 GPT-3,发表 Language Models are Few-Shot Learner理念:Few-Shot 思想 , 用少量样本微调,让模型更准确 参数 : 最大模型 : 1750 亿参数多头 Transformer : 96 层Head…

神经网络实验——MLP

目录 1 目的 2 方法 3 源代码 4 结果 1 目的 ①熟悉 Python 的输入输出流; ②学会使用 matplotlib进行图像可视化; ③掌握神经网络的基本原理,学会使用 sklearn 库中的 MLPClassifier 函数构建基础的多层感知机神经网络分类器; ④学会使用网格查找进行超参数优…

Cursor 无限续杯

最近DeepSeek官网无法访问,导致DeepSeekCLine绑定的API Key也无法使用了。那么,除了DeepSeek,还有没有其他好用的AI编程工具呢?答案当然是Cursor!不过,由于各种原因一直没有用上Cursor,也不知道…

Windows本地部署DeepSeek

文章目录 一、准备工作1、准备服务器2、准备APP 二、部署deepseek-r11、脚本部署2、脚本部署 三、ChatBox集成 一、准备工作 1、准备服务器 本案例使用Windows电脑 2、准备APP Download Ollama Download Chatbox 二、部署deepseek-r1 1、脚本部署 双击安装完Ollama,默认…

QML 自定义矩形框Rectangle,实现四个边框自定义大小

一、自定义矩形 效果图 边框大小为:左2 上2 右5 下10 简单来说,就是定义两个矩形,一个在外边一个在内部; 再通过设置他们的边距,即可设置相应的边框宽度; 1.编码 新建空的qml文件 MyRectangle.qml im…

筛选相同项

# import os # import pandas as pd# # 文件路径,根据实际情况修改 # file_path_1 rC:\Users\Administrator\Desktop\python\文件1.xlsx # file_path_2 rC:\Users\Administrator\Desktop\python\文件2.xlsximport os import pandas as pd# 获取当前脚本所在的目录…

MVTEC数据集笔记

前言 网上的博客只有从论文里摘出的介绍,没有数据集文件详细的样子,下载数据集之后,对数据集具体的构成做一个补充的笔记。 下载链接:https://ai-studio-online.bj.bcebos.com/v1/7d4a3cf558254bbaaf4778ea336cb14ed8bbb96a7f2a…

Bom详解和Dom详解

Javascript的数据类型 1.BOM(浏览器对象模型)1.1window对象(1)全局作用域:(2)窗口属性:(3)弹窗和对话框:(4)定时器:(5)导航和历史:(6)打开和关闭窗口: 1.2navigator对象(1)浏览器信息属性:(2)浏…

Android 虚拟机与ClassLoader类加载笔记

1 Android虚拟机 在介绍Android的虚拟机之前,我们先来看一下JVM虚拟机之下,我们的class文件的字节码指令的Demo: public class Demo {public static void test() {int a 1;int b 2;int c a b;} } 将Demo.class文件使用命令&#xff1a…

STM32 HAL库USART串口DMA IDLE中断编程:避坑指南

HAL_UART_Receive接收最容易丢数据了,STM32 HAL库UART查询方式实例 可以考虑用中断来实现,但是HAL_UART_Receive_IT还不能直接用,容易数据丢失,实际工作中不会这样用,STM32 HAL库USART串口中断编程:演示数据丢失, 需要在此基础优化一下. STM32F103 HAL库USART串口…