常见聚类方法与朴素贝叶斯
本文整理了最近学习(来自NJUSE的数据仓库课程)的一些常见聚类方法,包括K-Means、凝聚层次、DBSCAN方法,以及概率统计中的朴素贝叶斯方法(贝叶斯公式的拓展)和拉普拉斯修正。
K-MeansK - Means算法是一种划分式聚类算法,目标是将数据集划分为 K 个不同的聚类。它的基本思想是通过不断地迭代,使得同一聚类中的数据点尽可能相似(距离较近),不同聚类中的数据点尽可能不同(距离较远)。
举例说明:
假设我们有一群学生,他们的考试成绩包括语文、数学和英语三门科目,我们想根据成绩把学生分成 3 个小组(这里的 K = 3)。
第一步:选择初始聚类中心
随机挑选 3 名学生的成绩作为初始的聚类中心。比如学生 A(语文 80,数学 70,英语 75)、学生 B(语文 60,数学 80,英语 65)、学生 C(语文 90,数学 90,英语 80)。这三个点就代表了三个初始的聚类中心。
第二步:分配数据点到聚类
计算其他每个学生的成绩与这三个聚类中心的距离。距离的计算可以使用欧几里得距离公式,比如对于学生 D(语文 70,数学 75,英语 70),与学生 A 的 ...
C++基础语法与C++11特性
C++基础语法与概念编译内存段C++程序编译后的内存布局可分为 静态内存段(可执行文件中预设的段) 和 运行时动态分配的内存段。
静态内存段(在编译时确定,存储在可执行文件中):
代码段(.text 段) 存储程序的 可执行指令(机器码),如函数体的二进制代码。该段是只读的,确保程序运行时的稳定性
数据段(.data 段) 存储 已初始化的全局变量和静态变量(包括 static 修饰的局部变量)。
BSS 段(.bss 段) 存储 未初始化的全局变量和静态变量,默认初始化为零值。
常量区(.rodata 段) 存储 只读数据,如字符串常量和 const 修饰的全局常量。
动态内存段(运行时动态分配):
堆(Heap) 由程序员通过 new/malloc 动态分配内存,需手动释放(delete/free)。
栈(Stack) 存储 函数调用的上下文,包括局部变量、参数、返回地址等。
静态链接与动态链接静态链接(Static Linking)在静态链接中,所有用到的库代码在编译时被直接打包到最终的可执行文件中。生成的可执行文件是独立的,不依赖外部的库文件。
...
LeetCode日常刷题总结
本文记录了在LeetCode练习中针对部分题目的思路与题解。
排序912. 排序数组题干给你一个整数数组 nums,请你将该数组升序排列。
你必须在 不使用任何内置函数 的情况下解决问题,时间复杂度为 O(nlog(n)),并且空间复杂度尽可能小。
示例 1:
输入:nums = [5,2,3,1]输出:[1,2,3,5]
示例 2:
输入:nums = [5,1,1,2,0,0]输出:[0,0,1,1,2,5]
提示:
1 <= nums.length <= 5 * 104
-5 * 104 <= nums[i] <= 5 * 104
题解快速排序思路
快速排序由两部分构成,quickSort作为主体,通过递归的方式进行排序,partition辅助函数返回一个元素在数组中排序后的下标
采用分治的思想,通过选择一个基准元素(pivot),将列表分为两部分:一部分小于基准元素,另一部分大于基准元素,然后递归地对这两部分进行排序
细节
多看多写几次吧
代码
class Solution {public: int partition(v ...
C#常见概念与常用语法
本文介绍了一些关于C#的常见概念与常用语法。
C#脚本生命周期
Awake:初始化。
Enable:渲染启用时调用,初始化方法不能写在里面。
Start:第一次Enable后调用。
Update:每一帧调用一次。
LateUpdate:update执行完lateupdate就会执行。
FixedUpdate:类似定时器,定期执行,与机器性能帧数无关,仅和时间有关。默认0.02s。
UnDisable:非激活状态调用。
OnDestroy:销毁时调用。
Time
上一帧到下一帧的游戏时间Time.deltaTime。
时间缩放值Time.timeScale。
Application
游戏数据文件夹路径(只读,加密压缩)Applicants.dataPath。
持久化文件夹路径(可写)Applicants.persistentDataPath。
StreamingAssets文件夹路径(只读,不加密)Application.streamingAssetsPath。
临时文件夹Application.temporaryCachePath。
后台运行Application.ru ...
DWA path planning algorithm
本文介绍了关于动态窗口算法(Dynamic Window Approaches, DWA)的一些基本概念与算法步骤。
基本概念动态窗口算法(Dynamic Window Approaches, DWA),核心思想是根据无人设备当前的位置状态和速度状态在速度空间 (v,ω) 中确定一个满足无人设备硬件约束的采样速度空间,然后计算无人设备在这些速度情况下移动一定时间内的轨迹,并通过评价函数对该轨迹进行评价,最后选出评价最优的轨迹所对应的速度作为无人设备运动速度,如此循环直至移动无人设备到达目标点。
系统设计过程中对动态窗口算法的实现主要从三个方面出发,速度采样、轨迹预测、轨迹评价。
速度采样现实中不同型号的无人设备所具有的硬件和结构不同,在物理层面上存在一定的限制,例如马力和重量会导致其最大加速度和最大转向加速度受到限制,反映在运动上的限制是运行速度的改变和方向变换的及时性。
在系统的仿真模拟中,不同模型的无人船也会设置不同的加速度参数,动态窗口算法的速度采样空间Vs会收到约束。
速度范围约束:由于真实环境中阻力等物理因素的存在,针对无人船进行建模时根据它的型号对线速度和角速度范围进行了限 ...
A* path planning algorithm
本文介绍了关于A*路径规划算法的一些基本概念与算法步骤。
基本概念G:起点A到网格中的指定点所花费的代价
H:指定点到终点所花费的代价
F:F = G + H,起点到终点经过指定点的总代价
open_list:用来寻找最短的路径的中间点
closed_list:不会被考虑的点
结束条件:1. 终点出现在open_list;2. open_list为空
详细步骤
从起点S开始,把S作为一个等待检查的方格,放入到open_list中
寻找起点S周围可以到达的方格(最多八个) ,将它们放入到open_list,并设置它们的父方格为S
从open_list中删除起点S,并将放入到closed_list中(closed_list存放的是不再需要检查的方格)
计算每个周围方格的F值
从open_list中选择F值最低的方格,将它从open_list中移除,并且把它可达的方格(障碍和closed_list中的方格舍弃)加入到open_list
如果可达方格不在open_list中,则父方格设置为当前方格;如果可达方格已经在open_list中,已当前方格为中间点得到的G值比原来的更小,则更 ...
常见船舶局部路径规划算法
本文是一篇综述,从路径搜索和轨迹优化这两个层面来对目前的路径规划算法进行总结。
路径搜索
Astar*文章提到了两种Astar的改进算法:一种稀疏Astar算法,对转角的最大增量做了限制,得到的曲线更加平滑;一种结合自适应替换缓存(ARC)策略与基于Astar算法的Theta star算法——Angular rate-constrained path planning algorithm for unmanned surface vehicles,考虑了角速度约束得到了更符合其运动特性的规划路径(我认为比较符合我们的需求)
另外除了海域内的障碍,还需要考虑到船只,以及船舶安全领域、国际海上避碰规则等真实因素限制。
虚拟势场法包含人工势场法和快速行进法
人工势场法*人工势场APF借鉴了电势场的概念,目标点产生引力,而障碍物产生斥力,引力场与斥力场叠加形成包含引导USV到达目标点及避障信息的人工势场。传统APF针对动态避障效果较差,集群运动需要考虑到船舶之间的距离。
The hybrid path planning algorithm based on improved A* and a ...
基于Flask与SpringCloud的酒店管理系统
本项目用于辅助SpringCloud相关技术的学习,通过代码实践进行学习。
设计经过对SpringCloud的基础知识学习后,希望将它应用到酒店管理系统这个项目中去。我的规划如下:
在功能需求已知的情况下,分析并将业务拆解成多个模块实现微服务架构
进行初步的实体类设计,数据库设计
优先使用已掌握技能完成基础功能模块,如处理秒杀库存暂时不考虑使用分布式锁,目前计划使用synchronized解决
当前阻力:
前端设计
用户权限控制管理这块没有系统的学习,只能基础的使用JWT进行token解析
Flask框架并没有实际上手写过,也并没有使用Python进行过与数据库交互的项目开发,没有编写过脚本
消息中间件没有过多实际编码经验,尚无法确认能否顺利投入到项目使用中
理想状态:
能够熟练的使用SpringCloud对项目各个服务模块进行开发
引入消息中间件来实现对高并发的支持,引入redis缓存来提高秒杀效率
补充SpringSecurity知识,对权限认证进行完善
2023.09.13
redis和SpringSecurity在后续学习的时候再用于这个项目
2024.11 ...
Flask的基本概念与使用方法
本文记录了一些关于Flask的基本概念与使用方法。Flask是一个轻量级的web框架,支持前后端整合,并且可在前端中直接使用相关的python语句。支持ORM(Object Relational Mapping),很好的结合mvc模式进行开发。
依赖安装# Flask依赖pip install Flask# 与数据库交互pip install flask-sqlalchemy# 将已有数据库导入pip install sqlacodegen# 注册发送邮件pip install flask-mail# 前端表单验证pip install wtforms
Jinja2Jinja2是一个Python模板引擎,它提供一种将数据和模板结合在一起,以生成动态文本的方法。它能够生成具有清晰而简洁的结构、更易读取的网页代码
它的常用使用方法有:python变量、语句直接在模板中使用或执行
使用{ { } }来包含一个变量,在render_template中通过额外的参数传递变量至定位的模板中,在该模板中可以使用{ { var } }来使用传递的变量
return render_template(& ...
SpringCloud GateWay的基本概念与应用
本文介绍了一些关于SpringCloud GateWay的基本概念与应用。
网关功能
身份认证,权限认证
服务路由,负载均衡
请求限流
搭建网关
添加依赖,nacos服务发现以及网关的依赖
<!--nacos --><dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!--网关依赖--><dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency>
编写路由配置以及nacos的地址
server: port: ...