Python----机器学习(KNN:决策边界,决策边界计算,交叉验证步骤)
一、KNN算法简介
1.1、定义
KNN(K-Nearest Neighbor)算法是一种基于实例的学习方法,通过测量数据点之间的距离进行分类或回归分析。它是一种简单易懂的多分类技术,依赖于距离最近的邻居来推断数据点的类别或数值,为许多实际应用提供了有效的解决方案。
k-近邻算法
邻近算法,或者说K最近邻(K-Nearest Neighbor,KNN)分类算法是数据挖掘分类技术中最简单的方法之 一,是著名的模式识别统计学方法,在机器学习分类算法中占有相当大的地位。它是一个理论上比较成 熟的方法。既是最简单的机器学习算法之一。
所谓K最近邻,就是k个最近的邻居的意思,说的是每个样本都可以用它最接近的k个邻居来代表。Cover 和Hart在1968年提出了最初的邻近算法。
KNN是一种分类(classification)算法,它输入基于实例的学习 (instance-based learning),属于懒惰学习(lazy learning)即KNN没有显式的学习过程,也就是说 没有训练阶段,数据集事先已有了分类和特征值,待收到新样本后直接进行处理。与急切学习(eager learning)相对应。
KNN是一种惰性学习算法,它是基于实例的,并没有经过大量的训练来学习模型或者特征,而是仅仅记 住了需要训练的相关实例,KNN是监督学习的一种。
KNN是给定测试实例,基于某种距离度量找出训练集中与其最靠近的k个实例点,然后基于这k个最近邻 的信息来进行预测,简言之,需要预测的实例与哪一类离得更近,就属于哪一类。
1.2、原理
KNN算法的原理可以用“近朱者赤,近墨者黑”来概括,它是一种基于实例的学习方法,属于懒惰学习,因为没有显式的训练过程。KNN通过测量待预测样本与训练数据集中最近的K个样本之间的距离来进行分类或回归分析。
在分类问题中,通过投票决定待预测样本的类别;
而在回归问题中,则计算这K个样本的平均值作为最终的预测结果。
1.3、特点
KNN算法简单易懂,易于实现;
无需训练阶段,直接进行分类或回归;
适用于多分类问题;
对数据集的大小和维度不敏感。
二、决策边界
2.1、定义
决策边界是分类算法中用于区分不同类别的虚拟边 界,即上一章节所指出的“房间”。
2.2、边界效果
决策边界是否合理,直接影响到分类效果的好坏。
2.3、KNN与决策边界
KNN算法通过计算待分类样本与已知样本之间的距 离,找到最近的k个样本,并根据这些样本的类别 信息进行投票,以确定待分类样本的类别。
三、KNN的决策边界计算
决策边界计算
导入模块
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
from matplotlib import pyplot as plt
定义数据集
#定义数据集
point1 = [[7.7, 6.1], [3.1, 5.9], [8.6, 8.8], [9.5, 7.3], [3.9, 7.4], [5.0, 5.3], [1.0, 7.3]]
point2 = [[0.2, 2.2], [4.5, 4.1], [0.5, 1.1], [2.7, 3.0], [4.7, 0.2], [2.9, 3.3], [7.3, 7.9]]
point3 = [[9.2, 0.7], [9.2, 2.1], [7.3, 4.5], [8.9, 2.9], [9.5, 3.7], [7.7, 3.7], [9.4, 2.4]]
#特征合并
np_train_data=np.concatenate(np.array((point1,point2,point3)),axis=0)
#创建标签
np_train_label=np.array([0]*7+[1]*7+[2]*7)
构建KNN算法:实例化KNN算法,KNN训练
knn_clf=KNeighborsClassifier(3)
knn_clf.fit(np_train_data,np_train_label)
设定未知点,设定坐标点网络
x=np.linspace(0,10,100)
y=np.linspace(0,10,100)
x0,y0=np.meshgrid(x,y)
axis_xy=np.c_[x0.ravel(),y0.ravel()]
KNN的预测与绘制决策边界
y_predict=knn_clf.predict(axis_xy)
y_predit=y_predict.reshape(x0.shape)
plt.contour(x0,y0,y_predit)
plt.scatter(np_train_data[np_train_label==0,0],np_train_data[np_train_label==0,1],marker='^')
plt.scatter(np_train_data[np_train_label==1,0],np_train_data[np_train_label==1,1],marker='*')
plt.scatter(np_train_data[np_train_label==2,0],np_train_data[np_train_label==2,1],marker='s')
plt.show()
完整代码
from sklearn.neighbors import KNeighborsClassifier # 从 scikit-learn 导入 K 最近邻分类器
import numpy as np # 导入 NumPy 库以进行数组操作
from matplotlib import pyplot as plt # 从 matplotlib 导入 pyplot 用于绘图 # 定义数据集
point1 = [[7.7, 6.1], [3.1, 5.9], [8.6, 8.8], [9.5, 7.3], [3.9, 7.4], [5.0, 5.3], [1.0, 7.3]] # 类别 0
point2 = [[0.2, 2.2], [4.5, 4.1], [0.5, 1.1], [2.7, 3.0], [4.7, 0.2], [2.9, 3.3], [7.3, 7.9]] # 类别 1
point3 = [[9.2, 0.7], [9.2, 2.1], [7.3, 4.5], [8.9, 2.9], [9.5, 3.7], [7.7, 3.7], [9.4, 2.4]] # 类别 2 # 特征合并
np_train_data = np.concatenate(np.array((point1, point2, point3)), axis=0) # 将三个类别的数据组合成一个训练数据集
# 创建标签
np_train_label = np.array([0] * 7 + [1] * 7 + [2] * 7) # 创建对应每个数据点的标签 # 构建 KNN 算法,实例化,KNN 训练
knn_clf = KNeighborsClassifier(3) # 创建 KNN 分类器,k=1 表示考虑最近的一个邻居
knn_clf.fit(np_train_data, np_train_label) # 使用训练数据和标签来训练 KNN 模型 # 定义未知点坐标网格
x = np.linspace(0, 10, 100) # 创建 x 坐标的线性空间,从 0 到 10,包含 100 个点
y = np.linspace(0, 10, 100) # 创建 y 坐标的线性空间,从 0 到 10,包含 100 个点
x0, y0 = np.meshgrid(x, y) # 创建二维网格坐标
axis_xy = np.c_[x0.ravel(), y0.ravel()] # 将网格坐标展平,以便于预测 # KNN 的预测绘制决策边界
y_predict = knn_clf.predict(axis_xy) # 对所有未知点进行分类预测
y_predit = y_predict.reshape(x0.shape) # 将预测结果按原网格形状排列 # 绘制决策边界
plt.contour(x0, y0, y_predit) # 绘制决策边界
plt.scatter(np_train_data[np_train_label == 0, 0], np_train_data[np_train_label == 0, 1], marker='^') # 绘制类别 0 的点
plt.scatter(np_train_data[np_train_label == 1, 0], np_train_data[np_train_label == 1, 1], marker='*') # 绘制类别 1 的点
plt.scatter(np_train_data[np_train_label == 2, 0], np_train_data[np_train_label == 2, 1], marker='s') # 绘制类别 2 的点
plt.show() # 显示绘图结果
K值选择
在KNN中,需要人为选择不同的K的不同取值,这 个参数是需要人为选择的。需要人为确定的参数称 为超参数(hyperparameter)。
选择太小:
优点:复杂的数据集,K值较小可能会提供更详细 的决策边界,因为模型更加灵活。
缺点:容易受到局部结构的影响,模型对噪声和异 常值的影响更大。
选择太大:
优点:考虑了更多的全局信息,对于平滑的数据集, 较大的K值可以提供更稳定的决策边界。
缺点:对于复杂的数据集,较大的K值可能会导致 模型过于简单,无法准确捕获数据的局部特征。
四、交叉验证
步骤
1、准备数据集:
准备好包含特征和标签的 数据集。
2、K折交叉验证:
确定K的值,例如选择5或7 作为K值。
3、划分数据集:
将数据集划分为K个大小相似的子集
4、循环训练和评估:
使用K-1个子集作为训练集, 剩余的1个子集作为测试集。 在训练集上训练KNN模型。 使用训练好的模型对测试集进 行预测。 使用性能指标评估。
5、计算平均性能:
将K次验证的性能指标取 平均值,作为KNN模型的 最终性能评估。
6、选择最佳K值:
可以尝试不同的K值,并 通过交叉验证选择性能最 好的K值。然后选择在交 叉验证中表现最佳的K值。
7、选定最终K值:
使用选择的最佳K值,在整 个训练集上重新训练KNN 模型,以获得最终的模型。
五、库函数
5.1、KNeighborsClassifier()
是 scikit-learn 库中的一个分类模型实现,属于 K 最近邻(KNN)算法。该模型通过计算输入数据点与训练数据集中每个点的距离,找出最近的 K 个邻居,来进行分类预测。
class sklearn.neighbors.KNeighborsClassifier(n_neighbors=5, *, weights='uniform', algorithm='auto', leaf_size=30, p=2, metric='minkowski', metric_params=None, n_jobs=None)
方法 | 描述 |
---|---|
n_neighbors | 默认值 = 5 默认情况下用于查询的邻居数。 |
weights | 预测中使用的权重函数。可能的值:
|
algorithm | 用于计算最近邻的算法:
注意:拟合稀疏输入将覆盖 this 参数,使用蛮力。 |
leaf_size | 传递给 BallTree 或 KDTree 的叶大小。这可能会影响 构造和查询的速度以及内存 需要来存储树。最佳值取决于 问题的性质。 |
p | Minkowski 度量的 Power 参数。当 p = 1 时,这是等效的 使用 manhattan_distance (L1) 和 euclidean_distance (L2) 表示 p = 2。 对于任意 p,使用 minkowski_distance (l_p)。此参数是预期的 要积极。 |
metric | 用于距离计算的公制。默认值为 “minkowski”,它 当 p = 2 时,得到标准欧几里得距离。请参阅 scipy.spatial.distance 和 Valid metric 中列出的量度 值。 如果度量是“预先计算的”,则假定 X 是一个距离矩阵,并且 拟合时必须为方形。X 可以是稀疏图,其中 只有 “nonzero” 元素才能被视为邻居。 如果 metric 是一个可调用函数,它需要两个表示 1D 的数组 vectors 作为输入,并且必须返回一个表示距离 在这些向量之间。这适用于 Scipy 的指标,但效果较弱 效率高于将指标名称作为字符串传递。 |
metric_params | metric 函数的其他关键字参数。 |
n_jobs | 要为邻居搜索运行的并行作业数。 表示 1,除非在上下文中。 表示使用所有处理器。有关更多详细信息,请参阅 术语表 。 不影响 method。None -1 |
5.2、concatenate()
是 NumPy 库中的一个函数,用于将两个或多个数组沿特定轴(通常是行或列)合并。
numpy.concatenate((a1, a2, ...), axis=0, out=None, dtype=None, casting="same_kind")
方法 | 描述 |
---|---|
a1, a2, … | 数组必须具有相同的形状,但维度 对应于 axis (默认情况下是第一个)。 |
axis | 数组将沿其连接的轴。如果 axis 为 None,则 数组在使用前被展平。默认值为 0。 |
out | 如果提供,则为放置结果的目标。形状必须为 correct,匹配 concatenate 在 no out 参数。 |
dtype | 如果提供,目标数组将具有此 dtype。不能 与 out 一起提供。 |
casting | 控制可能发生的数据类型转换。默认为 'same_kind'。 有关选项的描述,请参阅铸造。 |
import numpy as np array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])
result = np.concatenate((array1, array2), axis=0) # 沿行合并
# result: [[1, 2], [3, 4], [5, 6], [7, 8]]
5.3、meshgrid()
是 NumPy 函数,用于生成二维网格坐标,通常用于函数绘图或参数化曲面绘图。meshgrid
接受两个一维数组(通常为 x 和 y 轴的坐标),并返回两个矩阵,分别表示每个坐标点的 x 和 y 值。
numpy.meshgrid(*xi, copy=True, sparse=False, indexing='xy')
方法 | 描述 |
---|---|
x1, x2,…, xn | 表示网格坐标的 1-D 数组。 |
indexing | 输出的笛卡尔 ('xy', default) 或矩阵 ('ij') 索引。 有关更多详细信息,请参阅 Notes。 |
sparse | 如果为 True,则返回的维度 i 坐标数组的形状将从 减少到 。这些稀疏坐标格网是 旨在与 Broadcasting 一起使用。当所有 坐标,则广播仍然会导致 全尺寸结果数组。 默认值为 False。 |
copy | 如果为 False,则返回原始数组的视图,以便 节省内存。默认值为 True。请注意,可能会返回非连续的 阵 列。此外,广播数组的多个元素 可能是指单个内存位置。如果需要写入 数组中,请先制作副本。sparse=False, copy=False |
import numpy as np x = np.linspace(0, 5, 5) # x 轴的线性空间
y = np.linspace(0, 5, 5) # y 轴的线性空间
X, Y = np.meshgrid(x, y) # 生成网格坐标
# X, Y: 网格中的每个点的坐标
'''
(array([[0. , 1.25, 2.5 , 3.75, 5. ],[0. , 1.25, 2.5 , 3.75, 5. ],[0. , 1.25, 2.5 , 3.75, 5. ],[0. , 1.25, 2.5 , 3.75, 5. ],[0. , 1.25, 2.5 , 3.75, 5. ]]),array([[0. , 0. , 0. , 0. , 0. ],[1.25, 1.25, 1.25, 1.25, 1.25],[2.5 , 2.5 , 2.5 , 2.5 , 2.5 ],[3.75, 3.75, 3.75, 3.75, 3.75],[5. , 5. , 5. , 5. , 5. ]]))
'''
5.4、ravel()
是 NumPy 的一个方法,用于将多维数组展平为一维数组。它返回一个连续的一维数组,表示原数组中的所有元素。与 flatten
方法不同的是,ravel
返回的是原数组的视图,不会复制数据。
numpy.ravel(a, order='C')
方法 | 描述 |
---|---|
a | Input 数组。a 中的元素按照 order 指定的顺序读取,并打包为 1-D 数组。 |
order | 使用此索引顺序读取 a 的元素。“C” 表示 以行优先、C 样式顺序为元素编制索引, 最后一个轴索引变化最快,返回到第一个 轴索引变化最慢。'F' 表示为元素编制索引 以 column-major、Fortran 样式的顺序,使用 第一个索引更改最快,最后一个索引更改 慢。请注意,'C' 和 'F' 选项不考虑 底层数组的内存布局,并且仅引用 轴索引的顺序。“A” 表示读取 如果 a 是 Fortran 连续的,则为类似 Fortran 的索引顺序 memory,否则类似 C 的顺序。'K' 表示读取 元素(按它们在内存中出现的顺序排列),但 当步幅为负数时反转数据。默认情况下,'C' 使用索引顺序。 |
import numpy as np array = np.array([[1, 2, 3], [4, 5, 6]])
flattened = array.ravel() # 将二维数组展平为一维
# flattened: [1, 2, 3, 4, 5, 6]
5.5、contour()
是 Matplotlib 绘图库中的一个函数,用于绘制等高线图,显示一个二维数组的值在平面上的分布。常用于可视化函数的值在不同坐标下的变化。
contour(X, Y, Z, levels=None, **kwargs)
方法 | 描述 |
---|---|
X, Y | 坐标网格的矩阵,通常由 meshgrid 生成。 |
Z | X 和 Y 有关的值矩阵,决定绘制哪条等高线 |
levels | 可选参数,指定要绘制的等高线的高度值。如果不提供,函数会自动选择 |
kwargs | 其他可选参数,用于控制线条样式、颜色、标签等,例如 colors 、linestyles 、alpha (透明度)等 |
import matplotlib.pyplot as plt
import numpy as np x = np.linspace(-3.0, 3.0, 100)
y = np.linspace(-3.0, 3.0, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2)) # 计算 Z 值 plt.contour(X, Y, Z) # 绘制等高线
plt.colorbar() # 添加色条
plt.show()
相关文章:
Python----机器学习(KNN:决策边界,决策边界计算,交叉验证步骤)
一、KNN算法简介 1.1、定义 KNN(K-Nearest Neighbor)算法是一种基于实例的学习方法,通过测量数据点之间的距离进行分类或回归分析。它是一种简单易懂的多分类技术,依赖于距离最近的邻居来推断数据点的类别或数值,为许…...
SpringBoot 3+ Lombok日志框架从logback改为Log4j2
r要将Spring Boot 3项目中的日志框架从Logback切换到Log4j2,并配置按日期滚动文件和控制台输出,请按照以下步骤操作: 步骤 1:排除Logback并添加Log4j2依赖 在pom.xml中修改依赖: <dependencies><!-- 排除默…...
实战篇Redis
黑马程序员的Redis的笔记(后面补一下图片) 【黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目】https://www.bilibili.com/video/BV1cr4y1671t?p72&vd_source001f1c33a895eb5ed820b9a4…...
c++-函数增强
一、编译器对函数名的处理 1. C与C的差异 C编译器:保留原始函数名,无额外处理。例如: int add(int a, int b) { return a b; } 在汇编代码中仍为add。 C编译器:通过name mangling(名称修饰)生成唯一函数…...
BKA-CNN-GRU、CNN-GRU、GRU、CNN四模型多变量时序预测(Matlab)
BKA-CNN-GRU、CNN-GRU、GRU、CNN四模型多变量时序预测(Matlab) 目录 BKA-CNN-GRU、CNN-GRU、GRU、CNN四模型多变量时序预测(Matlab)预测效果基本介绍程序设计参考资料 预测效果 基本介绍 BKA-CNN-GRU、CNN-GRU、GRU、CNN四模型多…...
css基础之浮动相关学习
一、浮动基本介绍 在最初,浮动是用来实现文字环绕图片效果的,现在浮动是主流的页面布局方式之一。 效果/代码 图片环绕 代码 div {width: 600px;height: 400px;background-color: skyblue;}img {width: 200px;float: right;margin-right: 0.5em;}<…...
告别分库分表,时序数据库 TDengine 解锁燃气监控新可能
达成效果: 从 MySQL 迁移至 TDengine 后,设备数据自动分片,运维更简单。 列式存储可减少 50% 的存储占用,单服务器即可支撑全量业务。 毫秒级漏气报警响应时间控制在 500ms 以内,提升应急管理效率。 新架构支持未来…...
1.3 斐波那契数列模型:LeetCode 746. 使用最小花费爬楼梯
动态规划解最小花费爬楼梯问题:LeetCode 746. 使用最小花费爬楼梯 1. 题目链接 LeetCode 746. 使用最小花费爬楼梯 题目要求:给定一个整数数组 cost,其中 cost[i] 是从楼梯第 i 阶向上爬所需支付的费用。你可以从下标 0 或 1 的台阶开始爬&a…...
8.4考研408简单选择排序与堆排序知识点深度解析
考研408「简单选择排序与堆排序」知识点全解析 一、简单选择排序 1.1 定义与核心思想 简单选择排序(Selection Sort)是一种选择排序算法,其核心思想是: 每趟选择:从待排序序列中选择最小(或最大&#x…...
【个人笔记】用户注册登录思路及实现 springboot+mybatis+redis
基本思路 获取验证码接口 验证码操作用了com.pig4cloud.plugin的captcha-core这个库。 AccountControl的"/checkCode"接口代码,通过ArithmeticCaptcha生成一张验证码图片,通过text()函数得到验证码的答案保存到变量code,然后把图…...
LiteDB 数据存储与检索效率优化的最佳实践指导
一、引言 在当今数字化时代,数据处理和存储变得至关重要。对于小型项目或者嵌入式系统而言,需要一种轻量级、高效且易于使用的数据库解决方案。LiteDB 作为一款嵌入式的 NoSQL 数据库,因其零配置、易于集成等特点,受到了开发者的青睐。然而,若要充分发挥其性能优势,就需…...
WEB安全--RCE--RCE的绕过
一、回调函数的绕过(PHP) 1.1、回调函数 1.1.1、原理: 回调函数(Callback Function)指的是将函数名或匿名函数作为参数传递给另一个函数,从而在特定条件下调用该函数。 以一个常见的回调函数为例&#…...
uni-app:指引蒙层
组件说明 指引蒙层组件: 通过id标签,突出对应id中的模块; 可以自定义提示词。 点击任意位置关闭蒙层 效果展示和使用示例 切换id之后的效果: 代码实现 <template><view class="guide-mask" v-if="showMask" @click="hideMask"&g…...
什么是CMS?常用CMS有哪些?
一、内容管理系统(Content Management System) 什么是CMS:位于 Web 前端(服务器)和后端办公系统之间的软件系统,用于内容创建、编辑、审批和发布。支持文本、图片、视频、数据库等各类数字内容的管理…...
【Es】基础入门:开启全文搜索的大门
文章目录 一、Elasticsearch 是什么二、核心概念解读索引(Index)文档(Document)映射(Mapping)分片(Shard)副本(Replica) 三、基本操作入门安…...
74. Linux设备树详解
一、什么是设备树 1、uboot启动内核用到zImage,imx6ull-alientek-emmc.dtb。bootz 80800000 – 83000000. 80800000 —zImage 83000000—dtb 2、设备树:设备和树。 设备树(Device Tree),将这个词分开就是“设备”和“树”,描述设…...
从责任链模式聊到aware接口
从责任链模式聊到aware接口 责任链是什么? 责任链模式是一种行为型设计模式,将多个对象连接成一条链,并且沿着这条链传递请求,让多个对象都有机会处理这个请求,请求会顺着链传递,直到某个对象处理它为止。…...
在win11 环境下 新安装 WSL ubuntu + 换国内镜像源 + ssh + 桌面环境 + Pyhton 环境 + vim 设置插件安装
在win11 环境下 新安装 WSL ubuntu ssh gnome 桌面环境 Pyhton 环境 vim 设置插件安装 简单介绍详细流程换国内镜像源安装 ssh 桌面环境python 环境vim 设置插件安装 简单介绍 内容有点长,这里就先简单描述内容了。主要是快速在 Win11 搭建一个 wsl 的 linux 环…...
考研408-数据结构完整代码 线性表的链式存储结构 - 单链表
单链表操作详解(C实现) 目录 单链表尾插法创建单链表头插法创建删除指定节点按值查找按序号查找插入节点完整代码示例注意事项总结 尾插法创建 #include<bits/stdc.h> using namespace std;typedef struct LNode {int data;struct LNode* next;…...
使用Python爬虫获取淘宝App商品详情
在电商领域,获取商品详情数据对于市场分析、竞品研究和用户体验优化至关重要。淘宝作为国内领先的电商平台,提供了丰富的商品资源。虽然淘宝App的数据获取相对复杂,但通过Python爬虫技术,我们可以高效地获取淘宝App商品的详细信息…...
在 VMware Workstation 17 中安装的 Ubuntu 虚拟机无法使用桥接模式
在 VMware Workstation 17 中安装的 Ubuntu 虚拟机无法使用桥接模式时,通常是由于 网络配置错误、桥接适配器选择不当或主机网络环境限制 导致。以下是详细的排查和解决方法:我采用第一步就解决了问题 1. 检查 VMware 桥接模式配置 步骤 1:…...
2025前端八股文终极指南:从高频考点到降维打击的面试突围战
2025前端八股文终极指南:从高频考点到降维打击的面试突围战 一、2025前端八股文核心考点重构 1.1 新型响应式系统三连问 Vue3信号式响应性: // 信号式响应性底层实现 const [count, setCount] createSignal(0) effect(() > {console.log("当…...
MIPS-32架构(寄存器堆,指令系统,运算器)
文章目录 0 Preview:寄存器32通用0 $zero1 $at2—3 \$v0-$v14—7 \$a0-$a38—15 \$t0-$t716—23 \$s0-$s724—25 \$t8-$t926—27 \$k0-$k128 $gp29 $sp30 $fp 指令系统运算存储器 0 Preview: MIPS架构有32位版本和64位版本,本文介绍32位版本 寄存器 正如笔者曾说…...
MySQL数据库和表的操作之SQL语句
🎯 本文专栏:MySQL深入浅出 🚀 作者主页:小度爱学习 MySQL数据库和表的操作 关系型数据库,都是遵循SQL语法进行数据查询和管理的。 SQL语句 什么是sql SQL:结构化查询语言(Structured Query Language)&…...
Ubuntu在VMware中无法全屏
Ubuntu在VMware中无法全屏 方法:安装open-vm-tools 在Ubuntu打开终端: 1.输入: sudo apt-get install open-vm-tools2.安装依赖: sudo apt-get install open-vm*3.重启Ubuntu reboot...
[C++面试] 智能指针面试点(重点)续3
[C面试] RAII资源获取即初始化(重点)-CSDN博客 [C面试] 智能指针面试点(重点)-CSDN博客 [C面试] 智能指针面试点(重点)续1-CSDN博客 [C面试] 智能指针面试点(重点)续2-CSDN博客 …...
借助FastAdmin和uniapp,高效搭建AI智能平台
在数字化办公时代,效率与协作是企业发展的核心竞争力。传统的办公工具虽然功能丰富,但在面对复杂多变的团队协作需求时,往往显得力不从心。为了解决这一痛点,我们推出了一款全新的办公AI平台,它不仅能够满足文字和语音…...
【弹性计算】异构计算云服务和 AI 加速器(四):FPGA 虚拟化技术
《异构计算云服务和 AI 加速器》系列,共包含以下文章: 异构计算云服务和 AI 加速器(一):功能特点异构计算云服务和 AI 加速器(二):适用场景异构计算云服务和 AI 加速器(…...
Unity功能模块一对话系统(5)-完善对话流程及功能
现在我们的文本仍然是单句显示的,这还不是我们想要的效果,本期让我们完善对话流程,并使用SO(ScriptableObject)来进行一段对话序列的配置和动态加载。 最终效果功能展示 功能一:场景内可根据资源序号ID来…...
Ubuntu 系统中安装 Nginx
步骤 1:更新软件包列表 在安装前,先更新系统软件包列表: sudo apt update步骤 2:安装 Nginx 通过 apt 直接安装 Nginx: sudo apt install nginx -y步骤 3:验证安装 安装完成后,检查 Nginx …...
Elasticsearch:使用 Azure AI 文档智能解析 PDF 文本和表格数据
作者:来自 Elastic James Williams 了解如何使用 Azure AI 文档智能解析包含文本和表格数据的 PDF 文档。 Azure AI 文档智能是一个强大的工具,用于从 PDF 中提取结构化数据。它可以有效地提取文本和表格数据。提取的数据可以索引到 Elastic Cloud Serve…...
如何 编译 px4
DeepSeek-R1满血版 回答完成 深度思考完成 用时27秒,搜索全网29篇资料 以下是详细的PX4固件编译教程,综合多平台及常见问题解决方案: 一、环境准备 系统要求 Ubuntu 20.04/22.04(推荐)或 MacOS 12 Windo…...
pycharm2024.1.1版本_jihuo
目录 前置: 步骤: step one 下载软件 step two 卸载旧版本 1 卸载软件 2 清除残余 step three 下载补丁 step four 安装2024.1.1版本软件 step five 安装补丁 1 找位置放补丁 2 自动设置环境变量 step six 输入jihuo码 前置: 之…...
LLaMA Factory微调后的大模型在vLLM框架中对齐对话模版
LLaMA Factory微调后的大模型Chat对话效果,与该模型使用vLLM推理架构中的对话效果,可能会出现不一致的情况。 下图是LLaMA Factory中的Chat的对话 下图是vLLM中的对话效果。 模型回答不稳定:有一半是对的,有一半是无关的。 1、未…...
Vulnhub:Digitalword.local: FALL靶机渗透
将靶机按照图中连接方式打开,fall在virtualBox中打开 信息收集 扫描得ip arp-scan -l 扫描端口 nmap -A -T4 -sV -p- 扫描目录 gobuster dir -u http://192.168.117.160 -x php,txt,html -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt 一个一个…...
androidstudio安装完成后创建新的示例项目编译报错解决
项目场景: 提示:这里简述项目相关背景: 安装完成android studio想要编译一个自带的demo项目,没想到一直有编译报错,最后终于搞好了,记录下避免再踩坑。 androidstudio安装完成后创建新的示例项目编译报错…...
C#/.NET/.NET Core技术前沿周刊 | 第 31 期(2025年3.17-3.23)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录、追踪C#/.NET/.NET Core领域、生态的每周最新、最实用、最有价值的技术文章、社区动态、优质项目和学习资源等。让你时刻站在技术前沿,助力技术成长与视野拓宽。 欢迎投稿、推荐…...
QT 跨平台发布指南
一、Windows 平台发布 1. 使用 windeployqt 工具 windeployqt --release --no-compiler-runtime your_app.exe 2. 需要包含的文件 应用程序 .exe 文件 Qt5Core.dll, Qt5Gui.dll, Qt5Widgets.dll 等 Qt 库 platforms/qwindows.dll 插件 styles/qwindowsvistastyle.dll (如果使…...
数制——FPGA
1、定点数 定点数的三种表示方式: 原码:符号位 绝对值 表示方法 反码:正数的反码表示 与原码表示一致,负数的反码表示 除符号位,其他位全都取反 补码:正数的补码表示 与原码表示一致,负数的补码…...
车载以太网网络测试 -25【SOME/IP-报文格式-1】
1 摘要 本专题接着上一专题对SOME/IP进行介绍,主要对SOME/IP报文格式以及定义的字段进行详细介绍,有助于在实际项目过程中对SOME/IP报文的理解。 上文回顾: 车载以太网网络测试 -24【SOME/IP概述】 2 SOME/IP-报文格式 通过上个专题介绍&a…...
Kubernetes》》k8s》》Replication Controller
RC(Replication Controller) 应用托管在kubernetes之后,kubernetes需要保证应用能够持续运行,这是RC的工作内容,它会确保任何时间kubernetes中都有指定数量的Pod在运行。在此基础上,RC还提供了一些更高级的特性,比如滚…...
力扣HOT100之矩阵:73. 矩阵置零
这道题我没有想到什么好的办法,直接暴力AC了,直接遍历两次矩阵,第一次遍历用两个向量分别记录出现0的行数和列数,第二次遍历就判断当前的元素的行数或者列数是否出现在之前的两个向量中,若出现了就直接置零,…...
天锐蓝盾终端安全防护——企业终端设备安全管控
从办公室的台式电脑到员工手中的移动终端,这些设备不仅是工作的得力助手,更是企业数据的重要载体。然而,随着终端设备的广泛使用,安全风险也如影随形。硬件设备使用不当、数据随意传输等问题频发,使得企业数据面临着泄…...
【博客】使用GithubAction自动同步obisidian和hexo仓库
使用Github Action自动同步obisidian和hexo仓库,避免手动操作。 本文首发于❄慕雪的寒舍 1. 烦恼 先来说说慕雪现在的笔记和博客是怎么管理的吧,我正在使用两套笔记软件 思源笔记:私密性高一些,不是博客的笔记都在这里面。由于思…...
UE5学习笔记 FPS游戏制作23 区分敌我,寻找敌对角色
文章目录 方法1 tag方法2 变量添加变量和函数防止队友伤害 修改Task使用球形检测查找敌人场景面板直接编辑属性 方法1 tag 角色蓝图身上有一个tag标签,可以通过标签内容区分队伍 通过ActorHasTag判断一个Actor是否有对应的标签 方法2 变量 添加变量和函数 在s…...
ECharts各类炫酷图表/3D柱形图
一、前言 最近鸡米花实现了各类的炫酷的图表,有3D柱形图、双边柱形图以及异形柱形图,好了,直接上图: 二、效果图 一个个来吧,下面就是代码啦,注意,一下图表展示的宽高均为800px*300px 三、异形横…...
AI基础03-视频数据采集
上篇文章我们学习了图片的数据采集,今天主要了解一下视频数据采集的方法。视频是由一系列图像构成的,其中每一张图片就是一帧。视频数据采集方法通常有自动图像采集和基于处理器的图像采集两种。我们学习一下如何利用python 工具和笔记本计算机摄像头进行…...
docker-compose部署prometheus+grafana+node_exporter+alertmanager规则+邮件告警
目录 一.docker-compose文件 二.配置文件 三.文件层级关系,docker-compose和配置文件位于同级目录 四.node_exporter页面json文件 五.效果展示 prometheusalertmanager邮件告警 grafana面板效果 六.涉及离线包 一.docker-compose文件 [rootsulibao prometh…...
CPM:大规模生成式中文预训练语言模型
摘要 预训练语言模型(PLMs)已被证明对各种下游自然语言处理(NLP)任务有益。最近,GPT-3 以 1750 亿参数和 570GB 训练数据引起了广泛关注,因为它具备少样本(甚至零样本)学习的能力。…...
k8s scheduler几种扩展方式的关系及区别
网上关于scheduler扩展介绍的文章很多,但都是东说一句西说一嘴,完全没有逻辑性,对于逻辑建构者看着很痛苦,这篇文章不会深入教你怎么扩展,而是教你几种扩展方式的关系和逻辑结构: 目前Kubernetes支持五种方…...