- 博客(50)
- 收藏
- 关注
原创 与熵有关的知识
熵是一个物理学、信息论等多个领域有着重要应用的概念。在物理学中的熵是用来衡量系统混乱程度的量,越混乱熵越大。在信息论中,熵是用来衡量信息的不确定性的量,如果发生一个事件的概率很低,那么它包含的信息量就很大,信息熵也就越高。
2025-04-08 15:50:02
58
原创 最近邻模型 待更新
思想:它们都能做分类和回归。无论分类还是回归,基本思想是一样的,一种是根据距离它最近的k个样本点进行预测,一般有投票法、平均法、加权平均、加权投票。另一种是指定半径,根据半径内的样本点进行预测,同样的也有投票法、平均法、加权平均、加权投票。其中投票法和加权投票法是用在分类任务中的,平均法和加权平均法是用在回归任务中的。我将上面的这两种近邻分别称作k近邻和半径近邻。注意加权平均法在乘完权重然后求和后要除以权重的和。可以认为投票法是加权投票法的特例,平均法是加权平均法的特例。
2025-04-06 21:53:56
29
原创 sklearn的Pipeline
变换器用于对数据进行预处理,如特征缩放、特征选择等;估计器用于进行模型训练和预测,如分类器、回归器等。将多个步骤封装成一个对象,减少了代码的复杂度,使代码更加简洁易读。可以将多个数据处理步骤和机器学习模型组合成一个序列,其中每个步骤都是一个变换器(进行参数调优,而不需要分别对每个步骤进行调参。
2025-04-06 10:36:05
60
原创 kd树和球树
kd树是一种二叉树形数据结构和一种查找算法的结合,kd树有好几种,但是思想相同实际应用起来的差异不大,可以只了解其中一种即可。它常用于解决最近邻搜索问题,它能提升k近邻的效率。暂时不需要知道它的详细步骤,会应用即可。kd树的构建:它的大致流程是依次选择方差大的维度进行划分,为了使构建的树比较平衡会选择中位数进行划分(有的kd树不用中位数进行划分),让中位数作为每一维的节点(它是非叶子节点),这样就形成了二叉树形结构。
2025-04-05 16:11:16
21
原创 latex笔记
LaTeX 默认每个章节第一段首行顶格,之后的段落首行缩进。如果想要段落顶格,在要顶格的段落前加 \noindent 命令即可。如果希望全局所有段落都顶格,在文档的某一位置使用 \setlength{\parindent}{0pt} 命令,之后的所有段落都会顶格。\hspace{100em}用来产生空格效果,其中em是单位,1em表示当前字体下大写M的宽度。LaTeX 支持两种类型的列表:有序列表(enumerate)和无序列表(itemize)。会使用一个杠作为标志,你甚至可以使用一个单词,比如。
2025-03-29 20:14:55
244
原创 sklearn绘图 待更新
sklearn绘图很方便,它将不同种类的图由不同的类来实现,并统一类的方法,即不同种类的图需要用不同的类,但是这些类的使用却是基本一样的。
2025-03-27 21:31:48
149
原创 sklearn特征提取
这里只介绍"filename"和"content",一般使用是都配合它的fit_transform方法使用,使用方法见下面代码。去除口音,默认不做任何操作。
2025-03-21 10:11:37
16
原创 数据集获取
sklearn有四部分数据。其中sklearn的数据集有两部分真实的数据,一部分嵌入到了sklearn库中,即安装好sklearn后就自带了一部分数据,这些数据的规模比较小称为small toy datasets ,还有一部分数据是需要在网上下载的,sklearn提供了下载的api接口,这些数据规模比较大。
2025-03-20 23:03:34
80
原创 稀疏矩阵的存储
稀疏矩阵的存储主要有三种格式:coo、crc、csr。知道有这三种格式就行,其实不需要了解这个具体的内容,下面的内容可以不用看,因为对于稀疏矩阵的储存有scipy中有现成的函数。以后遇到这种问题可以直接去学习如何使用scipy库调用相关接口。
2025-03-20 22:14:09
47
原创 矩阵分解和线性方程组求解算法介绍
介绍:主要用来求最小二乘解。优点:1、适用于大规模问题。尤其是矩阵为稀疏矩阵时,lsqr算法能有效减少计算量和储存空间。2、无需矩阵求逆,lsqr巧妙的避开了矩阵求逆,避免了矩阵求逆过程中可能出现的数值不稳定问题以及高昂的计算成本,特别是大型矩阵求逆计算量和难度都非常大。缺点:1、依赖初始值。2、解的精度取决于迭代次数和收敛条件。
2025-03-17 22:29:07
100
原创 正则化介绍
正则化是用于控制模型的复杂度,防止模型在训练数据上过度拟合(overfitting)。正则化通过在模型的损失函数中引入额外的惩罚项,来对模型的参数进行约束,从而降低模型的复杂度。这个额外的惩罚通常与模型参数的大小或者数量相关,旨在鼓励模型学习简单的规律,而不是过度拟合训练数据。正则化的作用有:防止模型过拟合,减少模型复杂程度,提高模型鲁棒性。简单来说,正则化就是让对模型影响小的权重趋向零。使用L1正则化的模型叫做Lasso回归,使用L2正则化的模型叫做Ridge回归(岭回归)方法:在损失函数后面加上倍的权重
2025-03-16 13:22:55
38
原创 有不等式约束的拉格朗日乘子法
凸优化中对偶问题可以分为强对偶和弱对偶,强对偶表示原问题的最优解是对偶问题的最优解,弱对偶表示原问题的最优解大于对偶问题的最优解。如果原问题满足slater条件,那么原问题的对偶问题一定是一个强对偶的。slater条件内容:若原问题为凸优化问题,即和为凸函数,为仿射函数,且其可行域中至少有一点使不等式约束严格成立。严格成立就是小于号成立。
2025-03-16 11:45:47
19
原创 git常用指令
git add . 将工作区添加到缓冲区git commit -m "注释" 将缓冲区提交到本地仓库git status 查看状态git-log 查看git提交到本地仓库的日志,使用之前要用命令进行配置,其实就是其了个别名,需要下面的命令配置。
2025-03-09 22:41:34
256
原创 esp32 arduino开发常用函数(需要和乐鑫的arduino文档配合使用)
说明:1、由于写函数参数浪费时间并且没有说明只有参数意义不大,所以在此函数一般只以函数名出现。2、esp32有两个核心,编号为0和1,如果启动了wifi和蓝牙,则会默认将wifi和蓝牙运行在编号为0的核心上。3、esp32adc2的引脚尽量不使用,因为wifi会用到。esp32引脚图和硬件资源如下所示。硬件资源如下,其中I2C、I2S、UART等外设可以被定义到任意管脚上。• 34 个 GPIO 口• 12-bit SAR ADC,多达 18 个通道• 2 个 8-bit D/A 转换器。
2025-03-07 20:13:41
835
1
原创 esp32开发环境搭建(arduino作为idf组件)
idf接口复杂偏向底层,但是api丰富,灵活性高;esp32-arduino的api少,灵活性不够,但是接口却简单易用,能大幅提高开发效率。那么通过让esp32-arduino作为idf的组件,这样既能使用esp32-arduino的接口又能使用idf的接口,同时兼顾各自优点于一身。
2025-03-02 15:28:14
451
原创 获取系统启动以来的微秒数
定时器加一需要的时间配置为(17+1)/72us,即0.25us,arr配置为3,则定时器每1us触发一次update中断(要在cubemx中开启update中断),即定时器中的计数器从0变到0需要1us,每1us计数器就会重新计数。
2024-12-22 20:56:59
284
原创 定时器实现pwm波
在上方的模式中有4个频道,以1频道举例,选择pwm generation ch1或pwm generation ch1 ch1N,这里的ch1 ch1N表示正常输出和互补输出,可以实现led灯的交替点亮,其实频道中的选项(选项后面的no output表示两种输出都禁止,chx表示只使能正常输出,chxn表示只使能互补输出,chx chxn表示两种输出都使能 )都能输出pwm方波,它们分别对应上图,只不过前面带有pwm的是我们常用的,下方pwm配置中有pwm mode 1和pwm mode 2。
2024-12-22 19:42:07
352
原创 驱动外设总结
4、内部储存器地址:首先说明一点内部储存器地址长度是由容量决定的,首地址从0开始,然后依次递增,也就是说地址可以是0可以是1可以是2,但是最大是由位数决定的。AT24C01、AT24C02地址长度为8位。3、设备地址:地址位数为8,前四位固定为1010,后四位中的前三位由3个引脚决定,最后一位是R/W位,即最后一位由写或读决定,写是0,读是1。但不是每个器件的设备地址都全由A0、A1和A2来控制,有的有其中两个来控制有的有一个甚至有的不由A0、A1和A2来控制,这是由于剩下的位用来做内部存储器地址。
2024-11-29 10:26:47
371
原创 定时器延时公式
在cubemx中配置定时器:点击internal clock,下面参数部分填写prescaler,把auto-reload preload的值设为enable,其他的值一般不需要改变。注意最大延迟是65535x定时器加一需要的时间,其中65535储存在一个16位的寄存器中。公式:定时器加一需要的时间=(prescaler+1)/这个定时器的频率。根据这个公式可知stm32f103c8t6的最小延时是1/72微秒。
2024-11-28 14:56:20
169
原创 stlink utility烧录stm32f103c8t6配置
如果意外发生了,你发现你的单片机没有按你的想法运行,你怀疑没有正确的烧录进程序,那么你可以这样来印证自己的想法,点击target下的erase chip就是清空芯片程序的意思,然后connect一下看看读出来的flash数据是否都是ffffffff,如果是的话说明我们清空了芯片,然后再烧录一下程序,再connect一下,如果读出的flash数据还是一堆ffff那么说明我们的程序并没有烧录进去,这一般是步骤2没有成功,你可以再安步骤2配置一下。1、确保电脑、stlink和单片机接好线。
2024-11-23 13:39:20
1184
原创 GitHub上传项目
2、首先,确认你是否在使用VPN。VPN的使用可能会改变本机的系统端口号,从而影响到Git的正常连接。也就是开了vpn你将会在git push -u origin main 行代码报连接不上的错误,但是如果不开vpn则你上传文件会很慢。如果开了vpn代理则需要做一些配置。注意代码中的127.0.0.1:<你的端口号>需要跟据你的电脑填写,在设置》网络和internet》代理》手动设置代理》编辑,点击编辑就可以看到ip和端口了。以上命令可以在仓库中看到,只不过替换了一些参数而已,。
2024-11-22 20:21:10
283
原创 clion配置stm32开发环境
1、 clion,注意clion默认带有cmake,每个版本 的clion都支持一个范围的cmake,比如2021版的clion最高支持3.19的cmake,而有个版本的cubemx生成代码后要求cmake至少3.22,这是个大坑,所以一定要确定自己的clion和cubemx的cmake要求能对应上。我就遇到了这个问题,曾经我的clion能正常编译之前生成的cubemx,但是后来更新了cubemx后就不行了。我最终的解决了,这里我测试好的clion是2024版,cubemx是 win-v6.11.1版。
2024-11-22 16:56:35
570
原创 解决vue/uniappx数据渲染不及时更新问题
首先为什么vue会有数据渲染不及时更新问题,其实这是因为vue是异步更新dom的,即 Vue 在数据变化后不会立即更新 DOM,而是会等待一段时间,将所有的数据变化整合到一个更新周期中,然后在下一个“tick”(即下一个事件循环的迭代)中统一更新 DOM。比如我在项目中改变了this.i的值然后又执行了一些其他操作,发现改变后的this.i的值并没有在dom中更新,那么可以按照这个顺序来写代码:1、改变了this.i的值。使用 this.$nextTick()函数能有效解决该问题。
2024-11-19 22:11:44
486
原创 uniapp本地(离线)打包apk
4、build一下,报一个连接超时的错误,它会给出http链接,点一下这个链接浏览器会下载相应文件,然后将这个文件放到C:/Users/你的用户名/.gradle/wrapper/dists下,再在Android studio工程目录中修改gradle script中的gradle-wrapper.properties中的url链接,将它改为。然后修改.xml后缀的文件,具体操作:在dcloud的开发者中心生成appkey,①修改文件assets/data 下的。,它以APPID命名。
2024-11-18 14:24:02
670
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人