自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

酱懵静的博客

算法与数据结构、机器学习

  • 博客(124)
  • 资源 (3)
  • 收藏
  • 关注

原创 【机器学习】深度学习

深度学习本身是一个非常庞大的方向, 其下属的研究内容十分广泛,且颇具研究价值。而本文的内容,是一篇导论性质的文章,仅供初入机器学习和深度学习的学者们参考。随着人工智能的兴起和计算机算力的不断提升,深度学习从机器学习的众多方向中脱颖而出,并不断迸发出强烈生机。基于此,近年来有关深度学习的研究在不断更新,不断前进,有关它的相关领域也早已形成了自己特有的一些研究范畴。

2023-12-27 15:06:43 687

原创 【马蹄集】—— 百度之星 2023

BD202302 蛋糕划分题目描述 小度准备切一个蛋糕。这个蛋糕的大小为 N × N,蛋糕每个部分的重量并不均匀。小度一共可以切 K 刀,每一刀都是垂直或者水平的,现在小度想知道在切了 K 刀之后,最重的一块蛋糕最轻的重量是多少。

2023-11-04 20:08:24 1783 2

原创 【马蹄集】—— 搜索专题

首先对本题的意思进行一个简化:输入 n 个科学家开始理解第五维度的时间点 S_i 以及其单位时间能得到的理解力 V_i (均为非负整数),那么随着时间的推移,全部科学家的总理解力肯定是不断增加的。一旦总理解力达到了 m ,则认为人类能理解第五维度。但是,现在有一个具有上帝视角的人,他总能找到在这些科学家中具有最高理解力的那位并将其从抹除(则他的理解力也将消失),那么这时候人类还能理解第五维度么?如果能,则输出在这样的前提下人类理解第五维度的最早时间;否则输出 -1。

2023-10-29 16:51:12 541

原创 【机器学习】支持向量机(实战)

高斯核的本质是(假设原数据集的样本点个数为 n )计算样本点 i 与其他所有样本点的相似度,从而得到一个长度为 n-1 的向量,并以该向量作为该样本点的新特征(此时的特征向量即为 [x_1,…,x_{i-1},x_{i+1}…,x_n])。因此,在用高斯核函数对数据进行处理后,数据的特征将发生本质改变。而新特征的长度则仅与数据集中的样本点个数相关。总结:高斯核是通过计算相似度来进行特征替换的。

2023-10-24 10:00:00 233

原创 【马蹄集】—— 概率论专题:第二类斯特林数

这是一道经典的盒子放球问题,简化描述如下:n 个不同的球放入r 个不同的盒子,使每个盒子至少有一个球,问总的放置方案。这实际上是一个集合划分问题,为解决此类问题定义第二类斯特林数 ,表示将 n 个不同元素划分成 m 个非空集合(读作“n 子集 m”)。由于该定义是将元素分成若干集合,故又将第二类斯特林数称为斯特林子集数。

2023-10-20 20:22:00 843

原创 【马蹄集】—— 概率论专题:排列组合

箱子中只有一个红球和一个白球,因此第一次抽取时,抽到红球和抽到白球的概率各占一半。接下来对该箱子进行盲抽,如果抽出红色则停止抽奖;如果抽到白色则重新放入一个白球(已被抽出的白球不放回)。这就是说,对该箱子的每一次抽取,其内部总是含有一个红球和一个白球。因此这个模型实际上是一个 p=12p=\frac{1}{2}p=21​ 的伯努利概型。本题要求的,是停止抽奖时 “中奖球数/摸出总球数” 的数学期望。从理论上说,“抽到奖时摸出的总球数” 可以取到无穷大(即永远抽不到)。因此,本题限制假设最多能抽 M 次。

2023-10-16 22:19:29 945

原创 【马蹄集】—— 数论专题:筛法

注意到在埃式筛法过程中,存在相当一部分重复筛除工作。例如,当确定 2 为质数时,后续会将其倍数:4、6、8、10、12、……全部筛除。而接下来当确定 3 为质数时,后续会将 6、9、12、……全部筛除。这时,所有以 2×3=6 为因数的数,如 6、12、18、24、……等都会被重复纳入筛除进程中,这无疑浪费了相当一部分计算资源。因此,出现了一种更节约时间的筛法——欧拉筛法(线性筛法)。欧拉筛法的整体思路和埃式筛法相似,都是通过将已得到质数的倍数从数据集中筛除来减少判断时间。不过为了让某个数只执行一次筛除

2023-09-22 14:30:15 363

原创 【马蹄集】—— 数论专题:质数

MT2206 tax。小码哥要交税,交的税钱是收入 n 的最大因子(该最大因子为不等于 n 的最大因子),但是现在小码哥为了避税,把钱拆成几份(每份至少为 2),使交税最少,输出税钱。格式输入格式:一个正整数 n 表示收入(总钱数)。输出格式:输出一个正整数表示税钱。

2023-09-15 14:08:37 260

原创 【马蹄集】—— 数论专题:高精度计算

多位数加法的过程涉及到对各个位的加法运算,因此在处理大数的加法运算时,通常会用一个 int 型数组来存储大数在各个位上的值。例如,数:122333444455555666666,可通过一个足够长的数组进行存储。采取数位与索引大小相对应

2023-08-31 19:16:11 433

原创 【马蹄集】—— 数论专题:进位制

本题要求找出尚未在输入数据中出现的最小值(所有数据的最小取值为 0)。但是题目给出的数据为二进制字符串(合法的),因此为了找出最小未出现的数,我们需要先将所有输入的二进制字符串转换为十进制数,并将这些数存放进一个集合 nums 中。接下来,从 0 开始逐步向后枚举整数,一旦存在某个数不在集合 nums 中,就说明这个数是尚未在输入数据中出现的最小数。注意:我们还需对这个数进行格式转换!即将这个数由十进制再转换为二进制字符串(长度需要和输入数据的长度一致)。

2023-08-18 18:43:44 852

原创 【马蹄集】—— 进位制与字符串专题

对于输入的任意新十六进制字符串,如果要找到其对应的十进制数,我们可以通过顺序查找的方式进行求解。即从 0 开始依次枚举该数对应的十六进制数,同时再定义一个计数器 cnt 来记录当前找到的合法的新十六进制数个数,当存在某个十进制数对应的十六进制数与输入的新十六进制数一致时,计数器 cnt 保存的值即为所求。

2023-08-13 20:02:23 290

原创 【机器学习】支持向量机(下)

支持向量机作为传统机器学习算法中的霸主,其背后的数学知识是相当复杂且精密的。对于每个学习机器学习的同学而言,理解并掌握支持向量机的思路对于认识和学习其他算法也会起到非常巨大的推动作用。

2023-07-04 21:16:15 995

原创 【机器学习】支持向量机(上)

支持向量机(Support Vector Machine, SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。支持向量机作为传统机器学习算法中的霸主,其背后的数学知识是相当复杂且精密的。

2023-07-04 18:54:14 1269

原创 【马蹄集】—— 动态规划专题

提瓦特大陆上有个贫穷的占星术士小码哥,他要从蒙德去往璃月,两个地方相隔很远,所以要搭乘车队。但是搭乘车队需要金币,而小码哥没有太多金币,幸运的是,车队在这一路上有 n 个停靠点,每两个停靠点之间所需要的金币数不一样,如果能选择好的话说不定能省点钱。于是小码哥找来了每个站点之间所需的路费,请你帮他找出他完成这一旅途所需要的最少的旅费。。

2023-06-22 13:52:22 850

原创 【马蹄集】—— 动态规划专题

这道题本质是求“最长上升子序列”,是动态规划最经典的问题之一。对于需要进行动态规划的题目而言,其核心点在于如何设计转移方程和转移数组。对于上升序列,其中的元素必定满足后者不小于前者,因此我们在求上升子序列时可以从此角度出发,不断从后往前进行寻找(或从前往后)。基于此,可设转移数组 dp[i] 为“以索引 i 结尾的子序列中,其含有的上升序列个数”,则最终的待求答案即为:dp[ ] 数组中的最大值。

2023-06-14 15:21:27 710

原创 【马蹄集】—— 树状数组专题

若要用最少的邻项交换次数使得该序列变为升序,那么我们每次交换就一定要减少整个序列的逆序对个数(进行有效交换)。在这样的情况下,如果我们交换了 n 次,就表示该序列有 n 个逆序对。例如题目给出的例子中(序列 {9, 8, 7, 6, 5} )含有的逆序对为:{, , , , , , , , , }共10 个,因此其通过邻项交换使原序列变得有序的最低交换次数就为10。

2023-06-06 18:51:23 655

原创 【机器学习】集成学习(实战)

集成学习(Ensemble Learning),通过构建并结合多个学习器来完成学习任务。一般结构是:先产生一组“个体学习器”,再用某种策略将它们结合起来。结合策略主要有平均法、投票法和学习法等。因此,有时也称集成学习为多学习器系统(multiclassifier system)、基于委员会的学习。Bagging 模型首先对训练数据集进行多次采样,保证每次得到的采样数据都是不同的。接下来会分别训练多个同质模型,例如树模型。在预测时需得到所有模型的预测结果再进行集成。

2023-06-05 00:11:56 669

原创 【马蹄集】—— 并查集专题

现在有 n 个蜂巢,每一个蜂窝都对应了一个蜂蜜值 s_i。小码哥发现:有一些蜂窝相互联结,使得他们可以共享蜂蜜值,即该蜂巢的蜂蜜值变为:它和它连接(直接连接或间接连接)的蜂巢的蜂蜜值的和。现在小码哥想要查询一下一些蜂巢的蜂蜜值。

2023-05-30 23:56:54 1868 2

原创 【马蹄集】—— 前缀和与差分专题

实际上,题目的要求是找出指定序列中所有“均值不低于指 $t$ 的子序列”个数。一个很直观的想法是,既然你要求序列均值不低于 $t$ ,那我们可以将原序列中的每个数都与 $t$ 做差,这样一来,得到的新序列里一旦存在某串序列之和大于 0,那就说明这段序列的均值是大于 $t$ 的(即符合要求的序列)

2023-05-23 17:27:38 827

原创 【我的创作纪念日】—— 纪念四年的坚持

在这 4 年里,不多不少,刚刚发布了 101 篇原创文章。在这 4 年里,收获了 1710 个粉丝,3118 个点赞,6697 次收藏(截至我写这篇帖子)。我很开心有这么多人对我予以肯定和认可,对我鼓励和支持,这是对我创作的最大认证!!!所以,在这里诚挚地向我所有粉丝致谢。

2023-05-20 14:37:12 966 3

原创 【洛谷】P1404 平均数

给一个长度为n的数列,我们需要找出该数列的一个子串,使得子串平均数最大化,并且子串长度≥m。

2023-05-19 19:15:38 849

原创 【马蹄集】—— 模拟与枚举专题

首先要知道一件事,箭的射程是无限的,对于射出的任意箭,它必定能将一系列高度为等差递减序列的靶子全部射穿。具体做法是,对于输入的高度,我们每次都将当前高度进行下沉,这样最终就能把不同位置的具有连续递减性质的丛数给记录下来。因此,为了简化上述复杂的分情况讨论环节,我们可以用一种更简单的方式进行:将原始数据存储至一维空间,执行“将数据向后移动若干位”后再按二维的方式进行输出。这样的方式显然是可行的。又到了冬季,竹鼠们也要谈恋爱,因为竹鼠们都太胖了,它们的活动范围有限,这里统一规定它们的活动范围为。

2023-05-16 17:06:01 630

原创 【机器学习】集成学习(理论)

集成学习(Ensemble Learning),通过构建并结合多个学习器来完成学习任务。一般结构是:先产生一组“个体学习器”,再用某种策略将它们结合起来。结合策略主要有平均法、投票法和学习法等。因此,有时也称集成学习为多学习器系统(multiclassifier system)、基于委员会的学习(committee-based learning)。

2023-05-08 21:24:49 3376 6

原创 【马蹄集】—— 哈希表与集合专题

有 N 只虫子,每只虫子有6条腿,每条腿都有长度且长得很奇怪,如下图所示。第 i 只虫子六条腿的长度从某条腿开始依次记为 a_1,a_2,…,a_6 。但是,不同人选择的起始腿不同,记录方向也可能不同(顺时针或逆时针),这就导致记录的序列可能也有所不同。但是,他们所得的六元组序列都代表形状相同的虫子。例如,a_1,a_2,…,a_6 和 a_2,a_3,…,a_6,a_1 就是形状相同的虫子;a_1,a_2,…,a_6 和 $a_6,a_5,…,a_2,a_1 也是形状相同的虫子。

2023-05-05 15:27:15 397

原创 【马蹄集】—— 模拟专题

题目的要求很简单,有一个会提两类询问的系统:一个是增加数据,另一个是输出现有数列的中位数。我们的任务是对系统的所有指令给予执行。这是一道很明显的模拟题。基于此,我们可以定义一个数组。每当系统要求增加数据时,可采取 `选择排序` 的方法来执行插入,以维持数组的有序性;每当系统要求输出中位数时,又能根据当前数组的长度来找到其中位数。这是最简单直接的办法,但是其必定超时。因为对于一次插入数据请求而言:选择插入位置和调整数组中的元素位置的时间复杂度均为

2023-04-24 22:21:35 613

原创 【马蹄集】—— 堆栈专题

在用栈对目标字符串进行处理时,大家首先想到的肯定都是直接设一个 `stack` 型的栈,接下来扫描输入的字符串,若不为 `)` 就入栈,若为 `)` 就出栈(并开始对此栈进行 pop() 操作,直到遇到 `(` 时停止),接下来对出栈操作获取到的字符串进行处理即可(因为这里获取到的字符串可能会含有 `|` ,这种情况下必须选其中最长的那一串 `a` 串作为最终的结果,并将此字串再次push()进栈内)。

2023-04-18 20:06:29 767

原创 【洛谷】P1631 序列合并

如果你足够敏感,你应该会立刻想到一个数据结构——堆。堆是一种建立为O(n)级、插入和删除都为O(log⁡n)级的数据结构。显然,在面对N×N个数据时,用他们直接建立规格为 N×N 的堆依然有可能超时(此时的时间复杂度为 O(N^2)),因此需考虑别的方法。试想,我们能否能利用堆的这种具有快速修改能力的数据结构来动态构建一个长度为 N 的数据结构,并通过某种较为快速的取值方式对N×N个数据进行快速扫描并取值以更新该数据结构。为此,引入偏序集。

2023-04-18 17:36:37 807 2

原创 【马蹄集】—— 排序专题

注意到:对于满足匹配条件的两个人而言,其中一人的 A、B 能力之差应与其匹配对象的 A、B 能力之差互反。举个例子,假设某个对象 i 的 A、B 能力分别为: Person[i].A = 24, Person[i].B = 18,则该对象的 A、B 能力之差 Person[i].gap = 24-18 = 6;那他的匹配对象 Person[j] 要满足什么条件呢?很简单,只要 Person[j].gap = -Person[i].gap = -6 即可。

2023-04-15 16:10:36 718

原创 【马蹄集】—— 递归与分治专题

在求子三角形个数时,为了避免漏解,我们应当从某个 “连续” 的属性出发,去一一算出在该情况下的解的个数,然后再进汇总即可。一个很直观的 “属性” 是子三角形的边长(也许第一次做题的你会很难想到,但当你做多了这种类型的题后,你就会慢慢地习得这一技能了)。于是,从这一层面出发,该问题就转变为 “求边长为 1 的三角形个数 + 求边长为 2 的三角形个数 + ……” 。

2023-04-14 22:14:12 886

原创 【机器学习】决策树(实战)

决策树不仅在理论上很容易理解(机器学习“最友好”的算法),实现时还能对构建过程进行可视化(诸如神经网络等算法本身就是黑盒模型,更难可视化展示模型的构建)。因此,决策树的另一大优势就是能利用相关包来查看构建的树模型。下面介绍一个可以对决策树进行可视化展示的包。

2023-04-11 19:36:08 4091 2

原创 【机器学习】决策树(理论)

决策树(Decision Tree)是一种分类和回归方法,是基于各种情况发生的所需条件构成决策树,以实现期望最大化的一种图解法。由于这种决策分支画成图形很像一棵树的枝干,故称决策树。它的运行机制非常通俗易懂,因此被誉为机器学习中,最“友好”的算法。决策树由结点和有向边组成。结点有两种类型:内部结点(圆)和叶结点(矩形)。其中,内部结点表示一个特征(属性);叶结点表示一个类别。而有向边则对应其所属内部结点的可选项(属性的取值范围)。

2023-03-02 22:03:32 9909 12

原创 【机器学习】聚类算法(实战)

聚类(Clustering),是指在一大推数据中采用某种方式或准则来将一些具有相同或相似性质和特征的数据划分为一类。聚类是无监督学习的典型算法,相较于有监督学习,由于聚类针对的大多是无标签数据,因此对于最终构建的模型而言,在进行模型评估时会比较麻烦。同时,在对算法进行调参时也会因为这种不确定性而稍带困难。

2023-02-10 22:51:04 882 3

原创 【机器学习】聚类算法(理论)

聚类分析,即聚类(Clustering),是指在一大推数据中采用某种方式或准则来将一些具有相同或相似性质和特征的数据划分为一类。聚类是无监督学习的典型算法,相较于有监督学习,由于聚类针对的大多是无标签数据,因此对于最终构建的模型而言,在进行模型评估时会比较麻烦。同时,在对算法进行调参时也会因为这种不确定性而稍带困难。

2023-02-01 02:17:43 1891 4

原创 【机器学习】逻辑回归(实战)

决策边界的绘制步骤如下:① 构建坐标数据,合理的范围当中,根据实际训练时输入数据来决定(可参考 iris.DESCR)② 整合坐标点,得到所有测试输入数据坐标点③ 预测,得到所有点的概率值④ 绘制等高线,完成决策边界

2023-01-28 23:30:00 1931 2

原创 【机器学习】逻辑回归(理论)

逻辑回归(Logistic Regression)是一种分类方法,主要用于二分类问题(即输出只有两个结果:是与不是)。因此,其与线性回归的不同之处仅在最终的输出结果上。对于任意输入的特征向量,我们仍然可用线性回归的方式来先算出该向量的预测值,然后再将该预测值作为阶跃函数 sgn(x) 的输入,最终由阶跃函数的输出值作为逻辑回归的最终结果。此时,当测值大于零时就判为正例;小于零则判为反例;预测值为临界值 0 时则任意判别。

2023-01-16 23:51:34 1489 2

原创 【机器学习】线性回归(实战)

首先计算在所有数据上的损失值,然后再进行梯度下降。具体操作步骤是:遍历全部数据集算一次损失函数,然后算函数对各个参数的梯度,并更新梯度。这种方法每更新一次参数,都要把数据集里的所有样本计算一遍,因此得出的梯度往往都是朝着正确的方向;但是其缺陷是计算量过大,导致计算速度慢,因而不支持在线学习。

2023-01-12 22:02:38 976 2

原创 【机器学习】线性回归(理论)

线性回归的目的,是根据已知的特征信息 X 和对应的函数值 y ,来寻找一个能尽可能拟合真实情况的回归方程(即求出 θ 向量)。在概率论中,若已知一组观测数据和这组数据服从的分布,我们要如何求出该组数据满足的分布的具体数值呢?一个比较直观的方法是:极大似然估法。

2023-01-01 23:01:17 2315 11

原创 【机器学习】模型评估与选择(实战)

为了设计实验来对学习器的泛化误差进行评估,并对各指标进行测试,在此设计二分类实验。由于 Mnist 数据集含有数字 0-9 (具有多类),一种简单直接的设计模式是:选择某个数字(如 5 )作为正例,则其余数字即为反例。因此,这样就构建好了一个二分类实验。

2022-12-27 18:58:14 1573 2

原创 【机器学习】模型评估与选择(理论)

测试集很宝贵,最好是在调参、优化之后,最终再用于测试。就像历年高考真题一样,最好用在最终临考前进行测试,以评估自己大概能取得怎样的成绩。所以对于训练集而言,可以单独划分一些数据出来用于提前“测试”(可以理解为月考),来帮助用于调整、优化自己。因此,可把单独划分出来的这部分数据称为“验证集”。例如,可将训练集中的数据划分为互斥的 k 份(尽量保证数据分布的一致性),将其中的 k-1 份用于训练,剩下的那 1 份用于验证(按这样的划分方式可获得 k 组训练 / 测试集)。

2022-12-25 22:01:03 1385 6

原创 【机器学习】EM算法

EM算法的思路如下:1. 给 𝜃~𝐴~ 、 𝜃~𝐵~ 一个初始值;2. 分别计算每组实验在抛掷硬币A、硬币B的情况下所得概率,并根据该概率值去分别计算两硬币正面朝上次数的期望值。因此,此步骤也被称为“E过程”;3. 分别用第 2 步中计算的每组期望值来计算 𝜃~A~^(𝑖)^、𝜃~B~^(𝑖)^;4. 将计算得到的 𝜃~A~^(𝑖)^、𝜃~B~^(𝑖)^ 回代第 2、3 步,并不断迭代得到 𝜃~A~^(𝑖+1)^、𝜃~B~^(𝑖+1)^ , 直至收敛(或到一定精度)。

2022-11-23 23:02:57 1956 4

c3p0-all(version-2020-5-27).zip

本资源是用于数据库连接池用的系列jar包(截至2020-5-27的最新版本),包括:c3p0-0.9.5.5.jar、mchange-commons-java-0.2.20.jar、mysql-connector-java-8.0.20.jar共三个jar包。所用数据库是mysql,其版本是8.0.20

2020-05-27

c3p0-all(version-2020-5-27).zip

本资源是用于数据库连接池用的系列jar包(截至2020-5-27的最新版本),包括:c3p0-0.9.5.5.jar、mchange-commons-java-0.2.11.jar、mysql-connector-java-8.0.20.jar共三个jar包。所用数据库是mysql,其版本是8.0.20

2020-05-27

json-lib-all(version-2020-5-25).zip

截至2020-5-25最新的json-lib.jar包(全套),包括:json-lib-2.4-jdk15.jar、commons-beanutils.jar、commons-collections.jar、commons-lang.jar、commons-logging.jar、ezmorph-1.0.6.jar。 下载后即可导入项目使用(要求jdk版本 >= 1.8)

2020-05-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除