KNN的调参方法
目录
- 1. K 值(邻居数 K)的选择
- 2. 距离度量方式
- 2.1 常见距离度量
- 2.2 如何选择距离度量
- 3. 权重策略(weights)
- 4. 特征预处理
- 4.1 特征缩放(标准化/归一化)
- 4.2 处理异常值
- 5. 特征选择或降维
- 6. 使用交叉验证来综合调参
- 6.1 为什么需要交叉验证
- 6.2 GridSearchCV/RandomizedSearchCV
- 7. 总结
在使用KNN(K-Nearest Neighbors)算法时,最重要的超参数(Hyperparameters)主要包括下面几个方面:
- K 值(邻居数)
- 距离度量方式
- 权重策略(weights)
- 特征预处理
- 特征选择或降维(在高维数据中尤其重要)
下面将一一介绍,以及如何利用交叉验证来进行KNN的调参。
1. K 值(邻居数 K)的选择
K 值是决定 KNN 算法效果最关键的因素之一。
-
K 值过小:
- 好处:能够更贴近局部数据特性。
- 坏处:对异常点和噪声非常敏感,容易过拟合。
-
K 值过大:
- 好处:具有较强的平滑性,受噪声影响相对较小。
- 坏处:容易造成欠拟合,因为大量不太相似的点也被纳入投票或回归的计算之中。
通常的做法是选择一个区间(例如从1到20,或1到30),在这个区间内使用交叉验证(Cross Validation)或 留一交叉验证(Leave-One-Out Cross Validation)来选择使得模型在验证集上表现最优的 K 值。
在 scikit-learn
中,可以使用 GridSearchCV
或者 RandomizedSearchCV
来自动选择最佳 K。例如:
from sklearn.model_selection import GridSearchCV
from sklearn.neighbors import KNeighborsClassifier# 定义要搜索的 K 的范围
param_grid = {'n_neighbors': list(range(1, 31))}knn = KNeighborsClassifier()
grid_search = GridSearchCV(knn, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)print("最佳参数:", grid_search.best_params_)
print("最佳得分:", grid_search.best_score_)
2. 距离度量方式
2.1 常见距离度量
-
欧氏距离(Euclidean Distance)
d ( x , y ) = ∑ i = 1 n ( x i − y i ) 2 d(x, y) = \sqrt{\sum_{i=1}^n (x_i - y_i)^2} d(x,y)=i=1∑n(xi−yi)2
这是KNN中最常用的一种距离度量,适合数值型特征。 -
曼哈顿距离(Manhattan Distance)
d ( x , y ) = ∑ i = 1 n ∣ x i − y i ∣ d(x, y) = \sum_{i=1}^n |x_i - y_i| d(x,y)=i=1∑n∣xi−yi∣
当特征是稀疏分布或带有明显坐标解释(如网格路径)时,曼哈顿距离也常被使用。 -
闵可夫斯基距离(Minkowski Distance)
d ( x , y ) = ( ∑ i = 1 n ∣ x i − y i ∣ p ) 1 p d(x, y) = \left(\sum_{i=1}^n |x_i - y_i|^p \right)^{\frac{1}{p}} d(x,y)=(i=1∑n∣xi−yi∣p)p1
当 (p=2) 时等价于欧氏距离,(p=1) 时等价于曼哈顿距离。 -
切比雪夫距离(Chebyshev Distance)
d ( x , y ) = max i ( ∣ x i − y i ∣ ) d(x, y) = \max_i(|x_i - y_i|) d(x,y)=imax(∣xi−yi∣)
2.2 如何选择距离度量
- 对于连续型的数值特征,欧氏距离和曼哈顿距离最常见。
- 对于离散或非线性分布的特征,可以考虑其它更合适的距离度量方式。
在 scikit-learn
中,通过 metric
参数来指定距离度量方式:
knn = KNeighborsClassifier(n_neighbors=5, metric='euclidean')
knn = KNeighborsClassifier(n_neighbors=5, metric='manhattan')
knn = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2) # 与欧氏距离相同
同样可以使用交叉验证或网格搜索,对不同距离度量方式进行评估,并选择最优的。
3. 权重策略(weights)
KNN 在投票(或做回归)时,对于距离较近的邻居可以赋予更高的权重,以增加对更近邻居的重视。scikit-learn
中有两个常见策略:
- uniform:所有邻居权重相同,即普通投票。
- distance:距离越近的邻居权重越高,一般用 1 d i s t a n c e \frac{1}{distance} distance1 之类的函数来表示权重。
在 scikit-learn
中,可以通过 weights
参数来进行设置:
knn = KNeighborsClassifier(n_neighbors=5, weights='uniform')
knn = KNeighborsClassifier(n_neighbors=5, weights='distance')
同样可以通过交叉验证自动选择哪一种权重策略更好。
4. 特征预处理
4.1 特征缩放(标准化/归一化)
KNN 十分依赖距离计算,特征之间的数量级差异会严重影响距离结果,因此特征缩放往往必不可少:
- 标准化(StandardScaler):将特征转换为均值 0,标准差 1
- 归一化(MinMaxScaler):将特征缩放到 [0, 1] 区间
常见做法是在管道(Pipeline)中先对特征进行缩放,再训练 KNN。例如:
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScalerpipeline = Pipeline([('scaler', StandardScaler()),('knn', KNeighborsClassifier())
])# 然后再用 GridSearchCV
param_grid = {'knn__n_neighbors': list(range(1,31)),'knn__metric': ['euclidean', 'manhattan']}grid_search = GridSearchCV(pipeline, param_grid, cv=5)
grid_search.fit(X_train, y_train)
4.2 处理异常值
如果数据中有异常值(Outliers),这些异常值对距离会产生较大影响,需要结合业务场景,决定是否过滤或平滑处理异常值。
5. 特征选择或降维
在高维数据(特征数量多)下,KNN 可能会遭遇维度灾难(Curse of Dimensionality),导致在高维空间中所有点都变得“差不多远”,从而降低KNN性能。常见解决方法:
-
特征选择
- 根据业务经验或统计方法(如相关系数、Chi-square等)筛选对分类/回归更重要的特征。
- 可以尝试基于树模型(如随机森林)得到特征重要性,再做特征选择。
-
降维
- PCA(主成分分析):将数据投影到一个低维的子空间。
- LDA(线性判别分析):如果是有监督的场景,可以使用 LDA 来降维。
在做完降维或特征选择后,再使用 KNN 进行训练和预测。
6. 使用交叉验证来综合调参
6.1 为什么需要交叉验证
为了找到最优的超参数组合(例如:K 值、距离度量方式、权重策略、是否降维等),我们需要对训练集做充分的评估,防止只在固定的测试集上调参而过拟合。
6.2 GridSearchCV/RandomizedSearchCV
- GridSearchCV:在给定的超参数网格上做穷举搜索。
- RandomizedSearchCV:在给定的超参数分布上做随机搜索,更适合搜索空间特别大的情况。
示例(综合调参):
from sklearn.model_selection import GridSearchCV
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler# 使用 Pipeline
pipeline = Pipeline([('scaler', StandardScaler()),('knn', KNeighborsClassifier())
])param_grid = {'knn__n_neighbors': [3, 5, 7, 9, 11],'knn__weights': ['uniform', 'distance'],'knn__metric': ['euclidean', 'manhattan']
}grid_search = GridSearchCV(pipeline, param_grid, cv=5, scoring='accuracy')
grid_search.fit(X_train, y_train)print("最佳参数:", grid_search.best_params_)
print("最佳交叉验证得分:", grid_search.best_score_)# 使用最佳参数在测试集上评估
best_model = grid_search.best_estimator_
test_score = best_model.score(X_test, y_test)
print("测试集准确率:", test_score)
这里我们通过 param_grid
同时搜索以下超参数:
n_neighbors
:候选值为[3, 5, 7, 9, 11]
weights
:候选值为[uniform, distance]
metric
:候选值为[euclidean, manhattan]
并在 5 折交叉验证(cv=5
)上进行评估,选出得分最高的组合。
7. 总结
- K 值:可通过交叉验证从一个合理的范围内挑选最优值。
- 距离度量:根据数据特性选择合适的度量方式,如欧氏距离、曼哈顿距离等;同样可通过交叉验证挑选。
- 权重策略:决定是使用统一权重还是基于距离衰减的权重;也可通过交叉验证确定。
- 特征预处理:包括特征缩放和对异常值的处理,对 KNN 性能极其重要。
- 特征选择/降维:在高维数据中,先做特征选择或降维再进行 KNN,往往能显著提升效果。
- 交叉验证:是调参的关键工具,能够帮助选择最优超参数并避免过拟合。
通过上述方法综合调参,可以让 KNN 模型在不同数据集下达到更好的表现。
相关文章:
KNN的调参方法
目录 1. K 值(邻居数 K)的选择2. 距离度量方式2.1 常见距离度量2.2 如何选择距离度量 3. 权重策略(weights)4. 特征预处理4.1 特征缩放(标准化/归一化)4.2 处理异常值 5. 特征选择或降维6. 使用交叉验证来综…...
mac 电脑上安装adb命令
在Mac下配置android adb命令环境,配置方式如下: 1、下载并安装IDE (android studio) Android Studio官网下载链接 详细的安装连接请参考 Mac 安装Android studio 2、配置环境 在安装完成之后,将android的adb工具所在…...
P3934 [Ynoi2016] 炸脖龙 I Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an). 有 m m m 个操作,分以下两种: modify ( l , r , k ) \operatorname{modify}(l,r,k) modify(l,r,k):对每个 i ∈ [ l , r ] i \in [l…...
数据库-多表查询
介绍(什么是多表查询?) 多表查询:查询时从多张表中获取所需数据 单表查询的SQL语句:select 字段列表 from 表名; 那么要执行多表查询,只需要使用逗号分隔多张表即可 如: select 字段列表 from …...
PID控制的优势与LabVIEW应用
PID控制(比例-积分-微分控制)已在工业控制领域得到广泛应用,尤其在实时控制和自动化系统中,其核心优点是简单、稳定且高效。尽管许多现代控制方法(如自适应控制、模型预测控制等)逐渐崭露头角,P…...
Next.js:构建大模型智能体GPT研究者应用的 Web开发框架
Next.js:构建大模型智能体GPT研究者应用的 Web开发框架 Next.js 基础知识 Next.js 是由 Vercel 公司开发维护的框架,极大地简化了 React 应用的开发流程。其核心特性包括: 服务器端渲染(SSR)与静态站点生成ÿ…...
航空航天混合动力(7)航空航天分布式电推进系统
航空航天分布式电推进系统 1.概述2.分布式电推进系统组成3.关键技术4.分布式电推进系统优势5.国内外研究情况5.1 国外5.2 国内6.分布式电推进系统应用场景6.1 航空领域6.2 航天领域tips:资料来自网上,仅供参考学习使用 1.概述 分布式推进系统是指飞行器推力由位于整个航空器…...
Java定时任务实现方案(一)——Timer
这篇笔记,简单来介绍一下Java如何使用Timer来实现定时任务,以及该方案的优点和缺点。 Timer是JDK自带的类,可以用来实现定时任务。使用 1.创建定时任务 定义一个实现了java.lang.Runnable接口的类,重写run()方法,…...
Linux(UOS系统:DNS)
赛题拓扑: 题目: 2.DNS 安装BIND9。配置为DNS根域服务器。其他未知域名解析,统一解析为该本机IP。创建正向区域“chinaskills.cn”。类型为Slave。主服务器为“AppSrv”。 rootispsrv:~# apt-get install bind9 -y rootispsrv:~# cd /etc/…...
一. 初始 Redis(快速入门-00)
一. 初始 Redis(快速入门-00) 文章目录 一. 初始 Redis(快速入门-00)Redis 概述:关系型数据库(如 MySQL ) 问题NoSQL 数据库(非关系性数据库)最后: Redis 概述: Redis 官方地址: https://redis.io/ Reids 中文的官方地址…...
Qt中的Item Widget组控件:QListWidget、QTreeWidget 和 QTableWidget使用方法(详细图文教程)
💪 图像算法工程师,专业从事且热爱图像处理,图像处理专栏更新如下👇: 📝《图像去噪》 📝《超分辨率重建》 📝《语义分割》 📝《风格迁移》 📝《目标检测》 &a…...
汇编与逆向(一)-汇编工具简介
RadASM是一款著名的WIN32汇编编辑器,支持MASM、TASM等多种汇编编译器,Windows界面,支持语法高亮,自带一个资源编辑器和一个调试器。 一、汇编IDE工具:RadASM RadASM有内置的语言包 下载地址:RadASM asse…...
澎峰科技计算软件栈与沐曦GPU完成适配和互认证
近期,澎峰科技与沐曦完成了对PerfXLM(推理引擎)、PerfXCloud(大模型服务平台)与沐曦的曦云系列通用计算GPU的联合测试,测试结果表明PerfXLM、PerfXCloud软件与沐曦GPU产品实现了全面兼容。 PerfXLM高性能大…...
如何用vscode断点调试Vue.js的项目
源码放在git上了,大家自己去看吧,非常简单,视频教程里面也有。 GitHub - SpaceView/howto_debug_vue_js_with_vscode: A basic project show how to debug vue with vscode How to Debug? Following, Creating a Project | Vue CLI to …...
C++17 新特性解析:Lambda 捕获 this
C17 引入了许多改进和新特性,其中之一是对 lambda 表达式的增强。在这篇文章中,我们将深入探讨 lambda 表达式中的一个特别有用的新特性:通过 *this 捕获当前对象的副本。这个特性不仅提高了代码的安全性,还极大地简化了某些场景下…...
Springboot自动配置的原理
先拿redis来举个例子 第一步导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> 第二步配置 spring: redis: database:host:127.0.0.1 port…...
第13章:Python TDD完善货币加法运算(二)
写在前面 这本书是我们老板推荐过的,我在《价值心法》的推荐书单里也看到了它。用了一段时间 Cursor 软件后,我突然思考,对于测试开发工程师来说,什么才更有价值呢?如何让 AI 工具更好地辅助自己写代码,或许…...
solidity基础 -- 存储类型
在Solidity智能合约开发中,存储类型是一个至关重要的概念。它不仅影响合约的性能,还决定了数据的存储位置和生命周期。Solidity提供了三种主要的存储类型:storage、memory和calldata。本文将结合给定的代码示例,并通过更多实例详细…...
GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比
GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比 目录 GA-CNN-LSTM-Attention、CNN-LSTM-Attention、GA-CNN-LSTM、CNN-LSTM四模型多变量时序预测一键对比预测效果基本介绍程序设计参考资料 预测效果 基本介绍 基于GA-CNN-LST…...
AI对齐与开源发展:多学科融合创新之路
标题:AI对齐与开源发展:多学科融合创新之路 文章信息摘要: 本文分析了AI对齐研究中多学科融合的重要性及开源AI领域的最新发展。文章指出,AI对齐问题需要计算机科学与社会选择理论等学科深度结合,特别是在RLHF领域的应…...
大华Java开发面试题及参考答案 (下)
口述一种排序算法,如快排。 快速排序(Quick Sort): 快速排序是一种分治算法,基本思想是将一个数组分成两个子数组,然后递归地对这两个子数组进行排序。首先,从数组中选择一个元素作为基准元素(pivot),可以选择第一个元素、最后一个元素或随机元素。然后,将小于等于基…...
[Spring] OpenFeign的使用
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏: 🧊 Java基本语法(97平均质量分)https://blog.csdn.net/2301_80050796/category_12615970.html?spm1001.2014.3001.5482 🍕 Collection与…...
java文件按行写入数据后并创建行索引及查询
背景 当有很多数据需要存储,这些数据只是想要简单的按行存储和查询,不需要进行其他条件搜索,此时就可以考虑不需把这些数据存储在数据库,而是直接写入文件,然后从文件中查询 但是正常情况下,如果仅仅只是按…...
在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤
之前有用户反馈,在EasyNVR平台中添加Pull时使用海康设备的RTSP流地址无法播放。经过研发的优化及一系列严谨的验证流程,我们已确认优化后的EasyNVR平台,通过Pull方式添加海康设备的RTSP流已经能够正常播放。以下是具体的操作步骤:…...
OS2.【Linux】基本命令入门(1)
目录 1.操作系统是什么? 2.好操作系统的衡量标准 3.操作系统的核心工作 4.在计算机上所有行为都会被转换为硬件行为 5.文件 6.简单介绍一些基本命令 1.clear 2.pwd 3.ls 1.ls -l 2.隐藏文件的创建 3.ls -al 4.ls -ld 5.ls -F(注意是大写) 4.cd 1.cd .. "…...
WPF 复杂页面布局及漂亮 UI 界面设计全解析
在 WPF 开发领域,打造一个既具备复杂功能又拥有美观 UI 界面的应用程序是众多开发者追求的目标。复杂页面布局与漂亮的 UI 设计不仅能提升用户体验,还能展现应用的专业性和独特性。本文将深入探讨如何在 WPF 中实现复杂页面布局以及设计出令人眼前一亮的…...
002-SpringBoot整合AI(Alibaba)
SpringBoot整合AI 一、引入依赖二、配置application.yml三、获取 api-key四、编写 controller五、起服务调用 一、引入依赖 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><vers…...
c++模板进阶
前言 一、非类型模板参数 模板参数分类类型形参与非类型形参。 类型形参即:出现在模板参数列表中,跟在class或者typename之类的参数类型名称。非类型形参,就是用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数…...
99.8 金融难点通俗解释:净资产收益率(ROE)
目录 0. 承前1. 简述2. 比喻:养母鸡赚钱2.1 第一步:投资母鸡2.2 第二步:母鸡下蛋2.3 第三步:计算赚钱2.4 第四步:计算ROE 3. 生活中的例子3.1 好的ROE3.2 一般的ROE3.3 差的ROE 4. 小朋友要注意4.1 ROE高不一定好4.2 R…...
原生HTML集合
一、表格 1、固定表格 <div class"tablebox"><div class"table-container"><table id"myTable" border"0" cellspacing"0" cellpadding"0"><thead><tr></tr></thead>…...
【计算机网络】- 应用层HTTP协议
目录 初识HTTP 什么是HTTP 版本 HTTPS 模型 HTTP抓包工具 为什么使用 抓包工具的下载 下载后的重要操作 Fiddler的使用 HTTP请求与响应的基本格式 HTTP请求基本格式编辑 HTTP响应基本格式 协议格式总结❗️❗️❗️编辑 HTTP 详解 认识 URL URL基本格式 …...
python学opencv|读取图像(四十)掩模:三通道图像的局部覆盖
【1】引言 前序学习了使用numpy创建单通道的灰色图像,并对灰色图像的局部进行了颜色更改,相关链接为: python学opencv|读取图像(九)用numpy创建黑白相间灰度图_numpy生成全黑图片-CSDN博客 之后又学习了使用numpy创…...
数据库:MongoDB命令行帮助解释
MongoDB命令: mongodmongosmongoperrormongoexportmongofilesmongoimportmongorestoreMongostat MongoDB包中的核心组件包括: mongod 是 MongoDB 的核心服务器进程,负责数据存储和管理。mongos 是分片集群的路由进程,负责将请求路由到正确…...
python 统计相同像素值个数
目录 python 统计相同像素值个数 最大值附近的值 python 统计相同像素值个数 import cv2 import numpy as np import time from collections import Counter# 读取图像 image cv2.imread(mask16.jpg)# 将图像转换为灰度图像 gray_image cv2.cvtColor(image, cv2.COLOR_BGR2…...
工作流引擎Camunda与LiteFlow核心组件对比
以下为 Camunda 7 和 LiteFlow 详细的介绍,包括它们的核心组件和用途。 1. Camunda 7 详细介绍 Camunda 7 是一个基于 BPMN 2.0 标准的企业级工作流和决策自动化平台。它被广泛应用于复杂业务流程的管理和执行,其核心目标是通过流程自动化来提升企业效…...
记一个Timestamp时区问题的坑
resultSet.getTimestamp(“kpi_collect_time”)查出来的Timestamp居然是带时区的, 如果该Timestamp不是UTC时区的,Timestamp.toInstant().atZone(ZoneId.of(“UTC”))会把Timestamp转成UTC时区 使用Timestamp.toLocalDateTime()可以直接把时区信息抹除 …...
R语言学习笔记之开发环境配置
一、概要 整个安装过程及遇到的问题记录 操作步骤备注(包含遇到的问题)1下载安装R语言2下载安装RStudio3离线安装pacman提示需要安装Rtools4安装Rtoolspacman、tidyfst均离线安装完成5加载tidyfst报错 提示需要安装依赖,试错逐步下载并安装…...
Hive部署
1. 最小化安装Hive 本次安装的版本是Hive的3.1.3版本 解压缩Hive压缩包 # 解压缩 tar -zxvf apache-hive-3.1.3-bin.tar.gz、 # 修改文件夹名称(看个人习惯,可以不执行) mv apache-hive-3.1.3-bin apache-hive-3.1.3在conf目录下,新增hive-env.sh&…...
Windows第一次上手鸿蒙周边
端云一体所需装备 很重要:C/D/E/F盘要有二三十G的可用空间! 硬件:华为鸿蒙实验箱(基础版)》飞机板核心板环境监测板 软件:Visual Studio Code写代码 终端编译 Hiburn烧录到开发板 MobaXterm (…...
【java数据结构】二叉搜索树
【java数据结构】二叉搜索树 一、二叉搜索树的概念二、二叉搜索树的操作2.1 插入2.2 查找2.3 删除(重点以及难点)2.3.1 删除节点的左边为null2.3.2 删除节点的右边为null2.3.3 删除的左右节点都不为空 三、二叉搜索树的性能分析3.1 最优情况3.2 最差情况…...
3D Vision--计算点到平面的距离
写在前面 本文内容 计算点到平面的距离 平台/环境 python open3d 转载请注明出处: https://blog.csdn.net/qq_41102371/article/details/121482246 目录 写在前面准备Open3D代码完 准备Open3D pip install open3d代码 import open3d as o3ddef compute_points2…...
相机内参的作用原理
由三角形角度关系,得到X_image / focal_length X_real / Z_distance 用双目测距得到Z_distance之后 然后联合X_image / focal_length可以计算得到真实世界的X_real...
计算机网络介质访问控制全攻略:从信道划分到协议详解!!!
一、信道划分介质访问控制 介质访问控制:多个节点共享同一个“总线型”广播信道时,可能发生“信号冲突” 应该怎么控制各节点对传输介质的访问,才能减少冲突,甚至避免冲突? 时分复用(TDM) 时分复用:将时间分为等长的“…...
代码随想录day1
704.二分查找: 1.左闭右闭 int search(vector<int>& nums, int target) {int right nums.size() - 1;int left 0;while(left < right){int middle left ((right - left) >> 1);if(nums.at(middle) target){return middle;}else if(nums[m…...
IJK播放器问题集
IJK播放器问题集 在使用ijkplayer进行播放时候,时常会遇到一些问题,故记录下: 1 ijkplayer出现小窗切换到大窗画面卡住问题 检查是否大小窗口切换时候,频繁设置了surface。某些底层api频繁设置会导致画面不动。 //holder判断是…...
macOS使用LLVM官方发布的tar.xz来安装Clang编译器
之前笔者写过一篇博文ubuntu使用LLVM官方发布的tar.xz来安装Clang编译器介绍了Ubuntu下使用官方发布的tar.xz包来安装Clang编译。官方发布的版本中也有MacOS版本的tar.xz,那MacOS应该也是可以安装的。 笔者2015款MBP笔记本,CPU是intel的,出厂…...
【设计模式-行为型】观察者模式
一、什么是观察者模式 说起观察者模式,不得不说一位观察者模式的高级应用者,朱元璋。不知道大家有没有看过胡军演的电视剧《朱元璋》。这部剧背景是元朝末年,天下大乱,朱元璋自幼父母双亡,沦为乞丐,后遁入空…...
HTML5 新表单属性详解
HTML5 为 <form> 和 <input> 标签引入了一系列新属性,极大地增强了表单的功能和用户体验。这些新属性不仅简化了开发者的工作,还为用户提供了更友好、更高效的交互方式。本文将详细介绍这些新属性,并结合代码示例帮助大家更好地理…...
Android程序中使用FFmpeg库
目录 前言 一、环境 二、创建APP 三. 添加FFmpeg库文件到app中 1. 复制ffmpeg头文件和so库到app中 2. 修改CMakeLists.txt文件内容. 3. 修改ffmpeglib.cpp 文件内容 4. 修改NativeLib.kt 文件添加方法和加载库 5. 调用 四. 增加解析视频文件信息功能 总结 前言 前面…...
到华为考场考HCIE的注意事项和考试流程
大家好,我是张同学,来自成都职业技术学院2021级计算机网络专业。最近成功通过了 Datacom HCIE 考试,在这里和大家分享一下我的经验。 考证契机 在母校的培养下,我接触到ICT这个行业,打好了基础,开始了成…...