《机器学习》——支持向量机(SVM)
文章目录
- 什么是支持向量机?
- 基本原理
- 数学模型
- 支持向量机模型
- 模型参数
- 属性信息
- 支持向量机实例(1)
- 实例步骤
- 读取数据
- 可视化原始数据
- 使用支持向量机训练
- 可视化支持向量机结果
- 完整代码
- 支持向量机实例(2)
- 实例步骤
- 导入数据
- 处理数据
- 切分划分数据
- 创建SVM模型
- 训练数据
- 测试数据
- 自测
- 测试集测试
- 得到分类报告及准确率
- 完整代码
- 与KNN算法准确率做对比
- KNN完整代码
什么是支持向量机?
- 支持向量机(Support Vector Machine,SVM)是一种监督式学习的分类算法,也可用于回归分析。它的主要目标是在特征空间中找到一个最优的超平面,从而将不同类别的数据点尽可能分开。这个超平面被定义为能够使两类数据之间的间隔(Margin)最大的平面。
基本原理
- 线性可分情况
-
假设有两类数据点,分别标记为正类和负类。在二维空间中,这些数据点可以用平面直角坐标系中的点来表示。如果这些数据是线性可分的,那么可以找到一条直线(在高维空间中是超平面)将这两类数据分开。
-
-
支持向量机在寻找这个分离超平面时,不仅要找到能分开两类数据的平面,还要使这个平面到两类数据中最近的数据点的距离最大。这些最近的数据点就被称为支持向量。
-
- 非线性可分情况
-
当数据在原始空间中不是线性可分的时候,支持向量机通过使用核函数(Kernel Function)将原始数据映射到一个高维空间,使得在高维空间中数据变得线性可分。
-
-
例如,在二维平面上有一个圆形分布的数据,正类在圆内,负类在圆外,这在二维空间中无法用直线分开。但是通过核函数将其映射到三维空间后,就可能找到一个平面将它们分开。常用的核函数有线性核、多项式核、高斯核(径向基函数核)等。
-
数学模型
- 目标函数
- 拉格朗日乘子法求解
支持向量机模型
模型参数
重要的参数有:C、kernel、degree、gamma。
- C:
- 惩罚因子【浮点数,默认为1.】【软间隔】
- (1)C越大,对误分类的惩罚增大,希望松弛变量接近0,趋向于对训练集全分对的情况,这样对训练集测试时准确率很高,但泛化能力弱;
- (2)C值小,对误分类的惩罚减小,允许容错,将他们当成噪声点,泛化能力较强。
- ->>建议通过交叉验证来选择
- kernel:
- 核函数【默认rbf(径向基核函数|高斯核函数)】
- 可以选择线性(linear)、多项式(poly)、sigmoid
- ->>多数情况下选择rbf
- degree:
- 【整型,默认3维】
- 多项式poly函数的维度,默认是3,选择其他核函数时会被忽略。
- ->>按默认【选择rbf之后,此参数不起作用】
- 指上面式子中的n
- gamma:
- ‘rbf’,‘poly’ 和‘sigmoid’的核函数参数。默认是’auto’。
- (1)如果gamma是’auto’,那么实际系数是1 / n_features,也就是数据如果有10个特征,那么gamma值维0.1。(sklearn0.21版本)
- (2)在sklearn0.22版本中,默认为’scale’,此时gamma=1 / (n_features*X.var())#X.var()数据集所有值的方差。
- <1>gamma越大,过拟合风险越高
- <2> gamma越小,过拟合风险越低
- ->>建议通过交叉验证来选择
- coef0:
- 核函数中的独立项。多项式的偏置项。它只在’poly’和’sigmoid’中很重要。
- probability :
- 是否启用概率估计。允许在模型训练完成后,使用predict_proba方法来预测每个类别的概率,而不是仅仅给出类别的预测结果。必须在调用fit之前启用它,并且会减慢该方法的速度。默认为False
- ->>按默认即可【选择rbf之后,不起作用】
- cache_size:
- 核函数cache缓存大小,默认为200MB
- ->>不用调整
- class_weight:
- 类别的权重,字典形式传递。默认’balanced’
- ->>按默认设置
属性信息
- support_vectors_ 【支持向量】
- 以数组的形式储存
- n_support_ 【每个类别支持向量的个数】
- int类型
- coef_ 【参数w】
- 数组的形式储存
- intercept_ 【偏置项参数b】
- 数组的形式储存
支持向量机实例(1)
实例要求:从鸢尾花数据中,对鸢尾花进行分类。
数据内容:数据中共有100条样本数据,6列,其中第一列为编号数据,最后一列为标签数据,其余4列为特征数据。且前50行数据的标签为0,后50行数据标签为1.
数据:通过网盘分享的文件:iris.csv
链接: https://pan.baidu.com/s/1ssc_VSVSUbkzz2-SOipV9w 提取码: jq54
实例步骤
- 读取数据
- 可视化原始数据
- 使用支持向量机训练
- 可视化支持向量机结果
- 绘制分割线和间隔边界、支持向量
读取数据
import pandas as pd
data = pd.read_csv(r'D:\where-python\python-venv\ji_qi_xue_xi_demo\朴素贝叶斯\iris.csv', header=None)
# header=None 为没有表头
可视化原始数据
import matplotlib.pyplot as plt# 选取数据的前 50 行
data1 = data.iloc[:50, :]
# 选取数据的 50 行之后的数据
data2 = data.iloc[50:, :]# 原始数据是四维,无法展示,选择两个维度进行展示,使用 scatter 函数绘制散点图
# 以数据 1 的第 1 列和第 3 列作为 x 和 y 轴,标记为 + 号
plt.scatter(data1[1], data1[3], marker='+')
# 以数据 2 的第 1 列和第 3 列作为 x 和 y 轴,标记为 o 号
plt.scatter(data2[1], data2[3], marker='o')
# 显示绘制的散点图
plt.show()
使用支持向量机训练
from sklearn.svm import SVC# 选取数据的第 1 列和第 3 列作为特征 x
x = data.iloc[:, [1, 3]]
# 选取数据的最后一列作为标签 y
y = data.iloc[:, -1]
# 创建 SVC 分类器,使用线性核,C 为无穷大,随机种子为 0
svm = SVC(kernel='linear', C=float('inf'), random_state=0)
# 用选取的特征和标签训练 SVC 分类器
svm.fit(x, y)
可视化支持向量机结果
# 获取训练好的分类器的系数
w = svm.coef_[0]
# 获取截距
b = svm.intercept_[0]import numpy as np
# 生成 0 到 7 之间的 300 个等间距的点
x1 = np.linspace(0, 7, 300)
# 计算分割超平面的直线方程,w[0] * x1 + w[1] * x2 + b = 0,解出 x2
x2 = -(w[0] * x1 + b) / w[1]
# 计算间隔边界直线方程,w[0] * x1 + w[1] * x2 + b = 1,解出 x2
x3 = (1 - (w[0] * x1 + b)) / w[1]
# 计算间隔边界直线方程,w[0] * x1 + w[1] * x2 + b = -1,解出 x2
x4 = (-1 - (w[0] * x1 + b)) / w[1]# 绘制分割超平面,线宽为 2,颜色为红色
plt.plot(x1, x2, linewidth=2, color='r')
# 绘制间隔边界,线宽为 1,颜色为红色,线条样式为虚线
plt.plot(x1, x3, linewidth=1, color='r', linestyle='--')
plt.plot(x1, x4, linewidth=1, color='r', linestyle='--')# 设置 x 轴范围
plt.xlim(4, 7)
# 设置 y 轴范围
plt.ylim(0, 5)# 获取支持向量
vets = svm.support_vectors_
# 绘制支持向量,颜色为蓝色,标记为 x
plt.scatter(vets[:, 0], vets[:, 1], c='b', marker='x')# 显示最终的图像
plt.show()
本次实例可看出在二维中支持向量机的情况,绘制分割线和支持向量的分布。
完整代码
import pandas as pd# 读取 csv 文件,文件路径需要注意转义字符,可使用原始字符串
data = pd.read_csv(r'D:\where-python\python-venv\ji_qi_xue_xi_demo\朴素贝叶斯\iris.csv', header=None)import matplotlib.pyplot as plt# 选取数据的前 50 行
data1 = data.iloc[:50, :]
# 选取数据的 50 行之后的数据
data2 = data.iloc[50:, :]# 原始数据是四维,无法展示,选择两个维度进行展示,使用 scatter 函数绘制散点图
# 以数据 1 的第 1 列和第 3 列作为 x 和 y 轴,标记为 + 号
plt.scatter(data1[1], data1[3], marker='+')
# 以数据 2 的第 1 列和第 3 列作为 x 和 y 轴,标记为 o 号
plt.scatter(data2[1], data2[3], marker='o')
# 显示绘制的散点图
plt.show()from sklearn.svm import SVC# 选取数据的第 1 列和第 3 列作为特征 x
x = data.iloc[:, [1, 3]]
# 选取数据的最后一列作为标签 y
y = data.iloc[:, -1]
# 创建 SVC 分类器,使用线性核,C 为无穷大,随机种子为 0
svm = SVC(kernel='linear', C=float('inf'), random_state=0)
# 用选取的特征和标签训练 SVC 分类器
svm.fit(x, y)# 获取训练好的分类器的系数
w = svm.coef_[0]
# 获取截距
b = svm.intercept_[0]import numpy as np
# 生成 0 到 7 之间的 300 个等间距的点
x1 = np.linspace(0, 7, 300)
# 计算分割超平面的直线方程,w[0] * x1 + w[1] * x2 + b = 0,解出 x2
x2 = -(w[0] * x1 + b) / w[1]
# 计算间隔边界直线方程,w[0] * x1 + w[1] * x2 + b = 1,解出 x2
x3 = (1 - (w[0] * x1 + b)) / w[1]
# 计算间隔边界直线方程,w[0] * x1 + w[1] * x2 + b = -1,解出 x2
x4 = (-1 - (w[0] * x1 + b)) / w[1]# 绘制分割超平面,线宽为 2,颜色为红色
plt.plot(x1, x2, linewidth=2, color='r')
# 绘制间隔边界,线宽为 1,颜色为红色,线条样式为虚线
plt.plot(x1, x3, linewidth=1, color='r', linestyle='--')
plt.plot(x1, x4, linewidth=1, color='r', linestyle='--')# 设置 x 轴范围
plt.xlim(4, 7)
# 设置 y 轴范围
plt.ylim(0, 5)# 获取支持向量
vets = svm.support_vectors_
# 绘制支持向量,颜色为蓝色,标记为 x
plt.scatter(vets[:, 0], vets[:, 1], c='b', marker='x')# 显示最终的图像
plt.show()
支持向量机实例(2)
对手写体图片进行识别。
共有2000个手写体数据,上面是一张已经经过一些初步处理过的图片,其中含有0~9的手写数字,且每一个数字都是5行,100列,共有5000个数字。
本次通过对这张分辨率为20001000的图片进行切分。将其划分成独立的数字,每个数字大小为2020像素,共计5000个。
实例步骤
- 导入数据
- 处理数据
- 切分划分数据
- 创建SVM模型
- 训练数据
- 测试数据
- 得到分类报告及准确率
导入数据
import numpy as np
import cv2
# 读取图像文件 shu_zi.png
img = cv2.imread('shu_zi.png')
处理数据
# 将图像从 BGR 颜色空间转换为灰度空间
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 将灰度图像划分为 50 行,每行再划分为 100 列,生成一个二维列表 cells
cells = [np.hsplit(row, 100) for row in np.vsplit(gray, 50)]
# 将二维列表转换为 numpy 数组
x = np.array(cells)# 将数组重塑为 (-1, 400) 的形状,并将数据类型转换为 float32
x = x.reshape(-1, 400).astype(np.float32)# 创建一个从 0 到 9 的数组
k = np.arange(10)
# 将数组 k 中的元素重复 500 次,生成标签数组 y
y = np.repeat(k, 500)
切分划分数据
from sklearn.model_selection import train_test_split
# 将数据 x 和标签 y 划分为训练集和测试集,测试集占 20%,设置随机种子为 0
x_train_w, x_test_w, y_train_w, y_test_w = train_test_split(x, y, test_size=0.2, random_state=0)
创建SVM模型
from sklearn.svm import SVC# 创建 SVC 分类器,使用径向基核函数(rbf),C 为无穷大,随机种子为 0
svm = SVC(kernel='rbf', C=float('inf'), random_state=0)
训练数据
# 使用训练集数据 x_train_w 和标签 y_train_w 训练 SVC 分类器
svm.fit(x_train_w, y_train_w)
测试数据
自测
from sklearn import metrics
# 使用训练好的分类器对训练集数据进行预测
train_pred = svm.predict(x_train_w)
测试集测试
# 使用训练好的分类器对测试集数据进行预测
test_pred = svm.predict(x_test_w)
得到分类报告及准确率
# 输出训练集的分类性能报告,包括精确率、召回率、F1 分数等指标
print(metrics.classification_report(y_train_w, train_pred))
# 输出测试集的分类性能报告
print(metrics.classification_report(y_test_w, test_pred))
# 计算分类器在测试集上的准确率
m = svm.score(x_test_w, y_test_w)
# 打印手写数字用支持向量机的准确率
print(f'手写数字用支持向量机的准确率为:{m}')
完整代码
import numpy as np
import cv2
# 导入 cv2 库用于图像处理,导入 numpy 库用于数据处理
# 读取图像文件 shu_zi.png
img = cv2.imread('shu_zi.png')
# 将读取的图像从 BGR 颜色空间转换为灰度颜色空间
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 使用 np.vsplit 将灰度图像分割成 50 行,对每一行使用 np.hsplit 分割成 100 列
# 将结果存储在 cells 列表中,列表中的每个元素是分割后的图像块
cells = [np.hsplit(row, 100) for row in np.vsplit(gray, 50)]
# 将 cells 列表转换为 numpy 数组
x = np.array(cells)# 将数组重塑为 (-1, 400) 的形状,并将数据类型转换为 float32
# 目的是将数据处理为适合机器学习算法的格式
x = x.reshape(-1, 400).astype(np.float32)# 创建一个包含 0 到 9 的数组
k = np.arange(10)
# 将数组 k 中的元素重复 500 次,作为标签数据
y = np.repeat(k, 500)from sklearn.model_selection import train_test_split
# 将数据 x 和标签 y 按照 80:20 的比例划分为训练集和测试集
# random_state=0 保证每次运行代码划分结果相同
x_train_w, x_test_w, y_train_w, y_test_w = train_test_split(x, y, test_size=0.2, random_state=0)from sklearn.svm import SVC# 创建 SVC 分类器,使用径向基核函数(rbf),C 为无穷大,随机种子为 0
svm = SVC(kernel='rbf', C=float('inf'), random_state=0)
# 使用训练集数据 x_train_w 和标签 y_train_w 训练 SVC 分类器
svm.fit(x_train_w, y_train_w)from sklearn import metrics
# 使用训练好的分类器对训练集数据进行预测
train_pred = svm.predict(x_train_w)
# 输出训练集的分类性能报告,包括精确率、召回率、F1 分数等指标
print(metrics.classification_report(y_train_w, train_pred))# 使用训练好的分类器对测试集数据进行预测
test_pred = svm.predict(x_test_w)
# 输出测试集的分类性能报告
print(metrics.classification_report(y_test_w, test_pred))
# 计算分类器在测试集上的准确率
m = svm.score(x_test_w, y_test_w)
# 打印手写数字用支持向量机的准确率
print(f'手写数字用支持向量机的准确率为:{m}')
与KNN算法准确率做对比
KNN完整代码
import numpy as np
import cv2img =cv2.imread('shu_zi.png')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
cells = [np.hsplit(row,100) for row in np.vsplit(gray,50)]
x =np.array(cells)train = x[:,:50]
test =x[:,50:100]# 将数据构造为符合KNN的输入,将每个数字的尺寸由20*20调整为1*400
train_new = train.reshape(-1,400).astype(np.float32)
test_new = test.reshape(-1,400).astype(np.float32)# 分配标签:分别为训练数据、测试数据分配标签
k = np.arange(10)
labels = np.repeat(k,250)
train_labels = labels[:,np.newaxis] # np.newaxis是numpy库中一个特殊对象用于增加一个新的维度
test_labels = np.repeat(k,250)[:,np.newaxis]# # # 构建+训练
knn =cv2.ml.KNearest_create() # 通过cv2创建一个knn模型
knn.train(train_new,cv2.ml.ROW_SAMPLE,train_labels)
ret,result,neighbours,dist=knn.findNearest(test_new,k=3)
# ret,result,neighbours,dist=knn.findNearest(a3,k=3)
# # ret:表示查找操作是否成功
# # result:浮点数数组,表示测试样本的预测标签
# # neighbours:这是一个整数数组,表示与测试样本最近的k个索引。
# # dist:这是一个浮点数组,表示测试样本与每一个最近邻居之间的距离。
matches = result==test_labels
correct = np.count_nonzero(matches)
accuracy = correct*100.0/result.size
print("当前使用KNN识别手写数字的准确率为:",accuracy)
从支持向量机算法和KNN算法对比,可看到支持向量机的准确率更高。
相关文章:
![](https://i-blog.csdnimg.cn/direct/dd56316f6ecb47d2b73f68e5bb3554c1.png)
《机器学习》——支持向量机(SVM)
文章目录 什么是支持向量机?基本原理数学模型 支持向量机模型模型参数属性信息 支持向量机实例(1)实例步骤读取数据可视化原始数据使用支持向量机训练可视化支持向量机结果完整代码 支持向量机实例(2)实例步骤导入数据…...
![](https://i-blog.csdnimg.cn/direct/d01263b53f1c470aa5972906a2ca604f.png)
【PPTist】公式编辑、插入音视频、添加动画
一、插入公式 点击公式的时候 latexEditorVisible 会变成 true src/views/Editor/CanvasTool/index.vue <Modalv-model:visible"latexEditorVisible" :width"880" ><LaTeXEditor close"latexEditorVisible false"update"data &…...
![](https://i-blog.csdnimg.cn/blog_migrate/aadffb113c7529bb0a991c3f73e8f846.gif)
LeetCode - #186 翻转字符串里的单词 II(会员题)
网罗开发 (小红书、快手、视频号同名) 大家好,我是 展菲,目前在上市企业从事人工智能项目研发管理工作,平时热衷于分享各种编程领域的软硬技能知识以及前沿技术,包括iOS、前端、Harmony OS、Java、Python等…...
![](https://www.ngui.cc/images/no-images.jpg)
Kafka核心参数与使用02
一、从基础的客户端说起 Kafka 提供了非常简单的生产者(Producer)和消费者(Consumer)API。通过引入相应依赖后,可以快速上手编写生产者和消费者的示例。 1. 消息发送者主流程 一个最基础的 Producer 发送消息的步骤…...
![](https://www.ngui.cc/images/no-images.jpg)
Three.js 渲染技术:打造逼真3D体验的幕后功臣
文章目录 前言一、着色器(Shaders)二、后处理(Post-processing)三、抗锯齿(Anti-aliasing)四、实时渲染与离线渲染五、光照模型与材质优化六、环境映射(Environment Mapping)七、纹理…...
![](https://www.ngui.cc/images/no-images.jpg)
QTcpSocket 如何统计在线时长
基本原理 QTcpSocket是 Qt 库中用于 TCP 通信的类。要统计在线时长,关键思路是记录连接建立的时间和当前时间,通过计算两者的差值来得到在线时长。实现步骤 记录连接建立时间: 在连接成功的信号槽函数中记录开始时间。例如,当QTcpSocket成功连接到服务器时,会发出connecte…...
![](https://i-blog.csdnimg.cn/direct/b709dc8d8e744d898d320c4e32af1512.png)
【Altium】AD使用智能粘贴功能把多个网络标签改成端口
1、 文档目标 使用智能粘贴功能把多个网络标签(net lable)改成端口(port) 2、 问题场景 客户有一份原理图,网络用的是net label,没用Port,然后创建一个sheet symbol,但是sheet sy…...
![](https://i-blog.csdnimg.cn/direct/25a8e8e10ae04d779bb5b273d1c2d19b.png)
.NET 终止或结束进程
如何使用 C# 终止进程。 使用简单的方法终止.NET中的现有进程Process.Kill()。有一个可选参数 true 或 false,用于结束与要结束的进程相关的所有子进程。 了解如何创建流程。 结束当前进程: System.Diagnostics.Process.GetCurrentProcess().Kill(tru…...
![](https://www.ngui.cc/images/no-images.jpg)
R.swift库的详细用法
R.swift 是一个 Swift 工具库,它提供了一个自动生成的类 R,使得你可以通过类型安全的方式访问项目中的资源,例如图片、字体、颜色、XIB 文件等。通过 R.swift,你可以避免字符串类型的错误,提升代码的可维护性。 以下是 R.swift 库的详细用法: 1. 安装 R.swift 使用 Sw…...
![](https://i-blog.csdnimg.cn/img_convert/9abeba1b8fdcd729ed107dde0eec2e8b.png)
Js的回调函数
一、什么是回调函数(Callback)? 回调函数(Callback Function)是指一个函数被作为参数传递给另一个函数,并在特定事件发生或操作完成时执行。 可以通俗地理解为一种“委托”机制。 在JavaScript中࿰…...
![](https://www.ngui.cc/images/no-images.jpg)
flutter 独立开发之笔记
1、# use: - [flutter_launcher_icons:] 每次修改完icon后,都需要执行一遍 dart run flutter_launcher_icons 2、开启混淆并打包apk flutter build apk --obfuscate --split-debug-info./out/android/app.android-arm64.symbols 3、开启windows支持 flutter con…...
![](https://www.ngui.cc/images/no-images.jpg)
PHP的扩展Imagick的安装
windows下的安装 下载:Imagick扩展 PECL :: Package :: imagick 3.7.0 for Windows 下载:ghostscript(PDF提取图片时用到,不处理PDF可以不安装) Ghostscript : Downloads 安装扩展 Imagick解压后&…...
![](https://www.ngui.cc/images/no-images.jpg)
【git】在服务器使用docker设置了一个gogs服务器,访问和现实都不理想
以下问题应该都可以通过设置custom/conf/app.ini来解决 配置文档参考地址:https://www.bookstack.cn/read/gogs_zh/advanced-configuration_cheat_sheet.md domain显示的事localhost,实际上应该是一个IP地址。 关键字: DOMAIN ROOT_URL 因为是docker…...
![](https://i-blog.csdnimg.cn/img_convert/07bb08476fe3df7c8724d562fd82e4ee.png)
多台PC共用同一套鼠标键盘
当环境中有多个桌面 pc 需要操作的时候,在 多台 pc 之间切换会造成很多的不方便 可以通过远程进行连接,但是有一个更好的方案是让多台机器之间共用同一套键盘鼠标 常用的解决方案 synergy 和 sharemouse,通过移动光标在不同的 pc 间切换 s…...
![](https://www.ngui.cc/images/no-images.jpg)
大语言模型是如何训练出来的?
近期听了不少与AI相关的播客,有理想转型AI的分享,有Character.ai出来同事的分享等,结合对Transformer架构的理解尝试大致还原大语言模型的训练过程。不过,当我这样的“中国大妈”也能够大致琢磨明白大语言模型是如何训练出来的时候…...
![](https://www.ngui.cc/images/no-images.jpg)
Vue2与Vue3在项目开发中的选择:深入探讨
文章目录 前言一、Vue2的优势与挑战二、Vue3的进步与特性三、如何做出选择?结语 前言 Vue.js 是一个用于构建用户界面的渐进式JavaScript框架。Vue2和Vue3是其两个主要版本,它们各自拥有一系列特点和优势。随着Vue3的发布,开发者们面临着在新…...
![](https://www.ngui.cc/images/no-images.jpg)
Web枚举:深入了解目标应用系统
Web枚举是渗透测试中重要的第一步,旨在全面收集目标系统的信息,以便后续攻击载荷的构建更具针对性和效率。本文将详细讨论如何通过各种方法识别目标Web应用的技术栈,并提取关键信息。 1. 识别目标系统的技术栈 技术栈指Web应用所依赖的技术组…...
![](https://i-blog.csdnimg.cn/direct/9bf4bdfdc1484703b96784aa15ccb84d.png)
RabbitMQ介绍与使用
RabbitMQ官网 RabbitMQ 介绍 RabbitMQ 是一个开源的消息代理和队列服务器,基于 AMQP(高级消息队列协议)标准,使用 Erlang 编程语言构建。它是消息队列(MQ)的一种,广泛应用于分布式系统中&#x…...
![](https://i-blog.csdnimg.cn/direct/2f5479000c5f4db9a5ba3ce34937b52d.png)
从0到机器视觉工程师(六):配置OpenCV和Qt环境
CMake配置OpenCV CMakeLists.txt文件的编写 cmake_minimum_required(VERSION 3.20) project(test_opencv LANGUAGES CXX) #寻找Opencv库 FIND_PACKAGE(OpenCV REQUIRED) include_directories(test_opencv ${OpenCV_INCLUDE_DIRS}) add_executable(test_opencv main.cpp) TARGE…...
![](https://i-blog.csdnimg.cn/direct/4f62f844bdc5415db07ef06ceacb8773.png)
计算机毕业设计Python机器学习农作物健康识别系统 人工智能 图像识别 机器学习 大数据毕业设计 算法
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
![](https://i-blog.csdnimg.cn/img_convert/01648d0248609f2d37be356a8c79cfd2.png)
(Arxiv-2023)LORA-FA:针对大型语言模型微调的内存高效低秩自适应
LORA-FA:针对大型语言模型微调的内存高效低秩自适应 paper是香港浸会大学发表在Arxiv 2023的工作 paper title:LORA-FA: MEMORY-EFFICIENT LOW-RANK ADAPTATION FOR LARGE LANGUAGE MODELS FINE-TUNING ABSTRACT 低秩自适应 (LoRA) 方法可以大大减少微调…...
![](https://www.ngui.cc/images/no-images.jpg)
huggingface/bert/transformer的模型默认下载路径以及自定义路径
当使用 BertTokenizer.from_pretrained(bert-base-uncased) 加载预训练的 BERT 模型时,Hugging Face 的 transformers 库会从 Hugging Face Model Hub 下载所需的模型文件和分词器文件(如果它们不在本地缓存中)。 默认情况下,这些…...
![](https://www.ngui.cc/images/no-images.jpg)
从 0 开始上手 Solana 智能合约
Solana CLI 基础知识 Solana CLI 是一个命令行界面工具,提供了一系列用于与 Solana Cluster 交互的命令。 我们将介绍一些最常见的命令,但你始终可以通过运行 solana --help 查看所有可能的 Solana CLI 命令列表。 Solana CLI 配置 Solana CLI 存储了…...
![](https://i-blog.csdnimg.cn/direct/ff60ece241ca43de86c102e414e62121.png)
(六)CAN总线通讯
文章目录 CAN总线回环测试第一种基于板载CAN测试第一步确认板载是否支持第二步关闭 CAN 接口将 CAN 接口置于非活动状态第三步 配置 CAN 接口第一步 设置 CAN 接口比特率第二步 设置 CAN 启用回环模式第三步 启用 CAN 接口 第四步 测试CAN总线回环捕获 CAN 消息发送 CAN 消息 第…...
![](https://i-blog.csdnimg.cn/img_convert/090ddef66350395f68bf5d2240e57803.jpeg)
新一代智能工控系统网络安全合规解决方案
01.新一代智能工控系统概述 新一代智能工控系统是工业自动化的核心,它通过集成人工智能、工业大模型、物联网、5G等技术,实现生产过程的智能化管理和控制。这些系统具备实时监控、自动化优化、灵活调整等特点,能够提升生产效率、保证产品质量…...
![](https://i-blog.csdnimg.cn/direct/488fe627b0204475995ab0f89d9950bc.png)
Vivado中Tri_mode_ethernet_mac的时序约束、分析、调整——(一)时序约束的基本概念
1、基本概念 推荐阅读,Ally Zhou编写的《Vivado使用误区与进阶》系列文章,熟悉基本概念、tcl语句的使用。 《Vivado使用误区与进阶》电子书开放下载!! 2、Vivado中的语法例程 1)语法例程 约束的语句可以参考vivado…...
![](https://i-blog.csdnimg.cn/img_convert/5be6efba75d988ccd39dd8680841e3d9.png)
车载网络:现代汽车的数字心跳
在汽车领域,“智能汽车”一词毫不夸张。如今的汽车已不再是原始的机械工程,而是通过先进的车载网络无缝连接的精密数字生态系统。这些滚动计算机由复杂的电子控制单元(ECU)网络提供动力,ECU是负责管理从发动机性能到信息娱乐系统等一切事务的…...
![](https://i-blog.csdnimg.cn/direct/8a1f427f2c624567805645ed8a31ebfb.png)
python基础和redis
1. Map函数 2. filter函数 numbers generate_numbers() filtered_numbers filter(lambda x: x % 2 0, numbers) for _ in range(5):print(next(filtered_numbers)) # 输出: 0 2 4 6 83. filter map 和 reduce 4. picking and unpicking 5. python 没有函数的重载࿰…...
![](https://i-blog.csdnimg.cn/img_convert/49150784165ba9ef502963dcb282256c.png)
w~自动驾驶~合集16
我自己的原文哦~ https://blog.51cto.com/whaosoft/12765612 #SIMPL 用于自动驾驶的简单高效的多智能体运动预测基准 原标题:SIMPL: A Simple and Efficient Multi-agent Motion Prediction Baseline for Autonomous Driving 论文链接:https://ar…...
![](https://www.ngui.cc/images/no-images.jpg)
最长的指定瑕疵度的元音子串
一、题目 最长的指定瑕疵度的元音子串 定义:开头和结尾都是元音字母(aeiouAEIOU)的字符串为 元音字符串 ,其中混杂的非元音字母数量为其 瑕疵度 。比如: “a” 、 "aa"是元音字符串,其瑕疵度都为0 "aiu…...
![](/images/no-images.jpg)
jsp是否可以做网站/seo建站需求
C#和JAVA不同,在C#中可以创建值类型,而在Java中创建的所有类型都是引用类型。在使用C#开发时,选择值类型还是引用类型对我们的程序的行为会产生很大的影响,所以我们需要对值类型和引用类型的使用场景进行了解和对二者的不同进行区…...
![](/images/no-images.jpg)
延边网站建设公司/推广网站源码
我想将一些动态参数传递给jquery onClick事件.之前,我使用过这个HTML和JavaScript:123/* JavaScript */func1(param1,param2) {// do something}参数param1和param2来自后端代码并且是动态的.我如何得到这一点并不重要.使用jQuery后,我有这个HTML和JS:$(…...
![](https://yqfile.alicdn.com/a365a45fcbf91a798f23f2e8ee1d15c7237f091f.png)
电商网站有哪些功能/合肥网站关键词优化公司
概述:验证码业务介绍 验证码(CAPTCHA)是“Completely Automated Public Turing test to tell Computers and Humans Apart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全…...
![](https://img-blog.csdnimg.cn/img_convert/8dafc50de6fe6bf23f8aca7177f6976d.png)
做平面的公司网站/怎样做网站的优化、排名
云想衣裳花想容,春风拂槛露华浓。中国有句古话说的非常的好,那就是“一失足成千古恨”,这一句话说的一点都不差,一个小小的失误可能会毁掉一个人的一生,所以我们要走好人生的每一步,虽然人生不可能百分之一…...
![](/images/no-images.jpg)
哪家网站开发公司好/免费域名申请的方法
原标题:2016年北航机械工程自动化考研复试信息辅导复试成绩构成及说明1、复试由笔试和面试两部分构成,满分500分。其中,笔试部分满分100分;面试部分满分400分。2、面试环节包含专业外语及口语考察,主要是考察考生对所学…...
织梦可以做微网站吗/热搜词排行榜关键词
SpringBoot2.x系列教程26--整合SpringMVC之路径匹配规则 作者:一一哥 本章节,我会给大家讲解Spring Boot中定制URL匹配规则的方法。 一.URL路径匹配 1.概述 在Spring Boot1.5的版本中,假如我们定义了一个’/show‘接口,默认情…...