自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lumoumou`s blogs

记录成长

  • 博客(127)
  • 收藏
  • 关注

原创 九、基础算法精讲:动态规划二

在图论中,独立集(Independent Set)是一种顶点的集合,其中任意两个顶点都不相邻,也就是说,集合中的顶点之间没有边相连。换句话说,独立集是一组顶点,其中没有两个顶点通过一条边相连。因为回文子序列从左往右或者从右往左都是一样的,因此可以求解序列。的最长公共子序列(LCS),即为最长公共子序列。

2023-11-27 16:28:13 202

原创 八、基础算法精讲:动态规划一

目录一、从记忆化搜索到递推1.1 打家劫舍1.2 打家劫舍 II二、01背包 完全背包 至多/恰好/至少2.1 目标和2.2 零钱兑换2.3 和为目标值的最长子序列的长度三、最长公共子序列 LCS3.1 最长公共子序列3.2 编辑距离四、最长递增子序列 LIS4.1 最长递增子序列4.2 最长递增子序列 II4.3 无矛盾的最佳球队一、从记忆化搜索到递推1.1 打家劫舍Leetcode 198解法一:递归+记录中间结果 = 记忆化搜索class Solution: def rob(self

2023-11-21 18:40:48 242

原创 七、基础算法精讲:回溯

【代码】七、基础算法精讲:回溯。

2023-11-17 20:20:23 210

原创 六、基础算法精讲:二叉树与递归

先遍历左右子树,再判断节点值,即当前节点大于左子树区间的最大值,小于右子树区间的最小值,将区间往上传。分别代表当前节点子树值的范围(开区间)。中序遍历二叉搜索树后一定会得到一个。的长度时,将该结点记录到。

2023-11-09 19:36:20 124

原创 五、基础算法精讲:链表-删除系列

【代码】五、基础算法精讲:链表-删除系列。

2023-10-31 10:52:22 87

原创 四、基础算法精讲:链表-快慢指针

【代码】四、基础算法精讲:链表-快慢指针。

2023-10-31 09:31:08 69

原创 三、基础算法精讲:链表-反转系列

python 中,参数注解。

2023-10-31 09:01:08 119

原创 二、基础算法精讲:二分

Q:返回数组中大于等于 targettargettarget 第一个数的索引,如果所有数都小于 targettargettarget,则返回 −1-1−1。二分查找三种写法:建议使用闭区间写法,比较容易记忆闭区间写法左闭右开写法开区间写法二分查找四种任务之间转换(查找整数的任务前提下):所有任务都可以基于第一个任务进行转换Leetcode 34时间复杂度:O(logn)O(logn)O(logn)空间复杂度:O(1)O(1)O(1)2、二分查找-习题课2.1 寻找峰值Leetcode

2023-10-28 11:43:33 97

原创 一、基础算法精讲:双指针

注意,这里可以使用相向双指针的原因是因为这里的数组是非递减的。反过来说,如果在待替换子串之外的任意字符的出现次数都不超过。将原问题转换为求解数组中最长的子数组,使得子数组的元素和为。,那么无论怎么替换,都无法使这个字符的出现次数等于。为平衡字符串,即每个字符的出现次数均为。注意:一个凹槽由三个位置决定【最左边(之外的任意字符的出现次数超过。这里能够使用双指针是因为。,那么可以通过替换,使。条件中是满足单调性的。

2023-10-28 09:36:08 144

原创 专题简介和链接

这个专题是为了复习算法题而重新创建的,之前的《算法笔记》专题过于冗杂,复习难度较大,所以新建了这个专题。这个专题以灵神的算法笔记为基础,记录刷题思路和过程。

2023-10-26 10:40:07 36

原创 七、用户画像

在机器学习中提到的用户面像通常是基于给定的数据对用户属性以及行为进行描述,然后提取用户的个性化指标,再以此分析可能存在的群体共性,并落地应用到各种业务场景中。

2023-07-29 09:56:02 257

原创 六、模型融合

本章主要分为构建多样性、训练过程融合和训练结果融合三部分。模型融合常常是竞赛取得胜利的关键,相比之下具有差异性的模型融合往往能给结果带来很大提升。

2023-07-23 15:55:37 442

原创 五、模型训练

可选择的模型主要分为线性模型、树模型和神经网络三种。

2023-07-23 11:18:55 201

原创 四、特征工程

在机器学习应用中,特征工程介于数据和算法之间,特征工程是将原始数据转化为特征,进而使我们能够从各种各样新的维度来对样本进行刻画。特征可以更好地向预测模型描述潜在的问题,从而提高模型对未见数据进行预测分析的准确性。高质量的特征有助于提高模型整体的泛化性能,特征在很大程度上与基本问题相关联。特征工程主要分为数据预处理、特征变换、特征提取、特征选择这四个部分。

2023-07-22 14:40:03 132

原创 三、数据探索

数据探索可以帮助回答以上这三点,并能确保竞赛的最佳结果。它是一种总结、可视化和熟悉数据集中重要特征的方法。数据探索有利于我们发现数据的一些特征、数据之间的关联性,有助于后续的特征构建。

2023-07-21 18:08:50 79

原创 二、问题建模

问题建模主要可以分为赛题理解、样本选择、线下评估策略三个部分.

2023-07-20 19:55:54 246

原创 一、初见竞赛

有些竞赛(如JDATA 智汇平台)就常常会有⼀些不同于⼀般分类和回归评价指标的评估方式,参赛者往往需要根据对赛题的理解自行利用主办方提供的数据构造训练集与测试集,这种竞赛极大地考验参赛者的问题建模水平,这也是这类竞赛的难点所在。在竞赛当中,不同参赛者之间的个人差异很大,涉及问题建模、特征工程、模型训练等流程时都会有差异,这就导致不同参赛者之间的方案存在着巨大差异,而差异带来的模型融合效果却是极佳的,并且差异越大,效果提升就越大。在传统宽表的数据中,通常匹配有样本的唯⼀ id 索引以及特征列。

2023-07-20 17:26:14 63

原创 第十一章 其它题目

方法二:计算出总的岛屿数量,因为有一对相邻两个陆地,边的总数就减 2,那么在计算出相邻岛屿的数量就可以了。方法一:遍历每一个空格,遇到岛屿,计算其上下左右的情况,遇到水域或者出界的情况,就可以计算边了。方法三:将链表分割成两个链表,然后把第二个链表反转,最后再拼接。排序 + 哈希 + 从后往前遍历(方便处理数值相同的情况)代码中未统计下边和右边的相邻矩阵是为了防止重复计算。这个题目是有向图,复杂了一些,方法二:双向队列模拟。

2023-06-08 16:40:36 587

原创 第九章 动态规划

目录一、基础题目1.1 斐波那契数1.2 爬楼梯1.3 使用最小花费爬楼梯1.4 不同路径1.5 不同路径 Ⅱ1.6 整数拆分1.7 不同的二叉搜索树二、背包问题2.1 01 背包2.1.1 分割等和子集2.1.1.1 划分为k个相等的子集2.1.1.2 火柴拼正方形2.1.2 最后一块石头的重量 Ⅱ2.1.3 目标和2.1.4 一和零2.2 完全背包2.2.1 零钱兑换 Ⅱ2.2.2 组合总和 Ⅳ2.2.3 爬楼梯2.2.4 零钱兑换2.2.5 完全平方数2.2.6 单词拆分2.3 多重背包三、打家劫舍3

2023-06-03 09:17:37 585

原创 第十章 单调栈

从栈头(元素从栈头弹出)到栈底的顺序应该是从小到大的顺序。因为一旦发现添加的柱子高度大于栈头元素了,此时就出现凹槽了,栈头元素就是凹槽底部的柱子,栈头第二个元素就是凹槽左边的柱子,而添加的元素就是凹槽右边的柱子。当前列雨水面积:min(左边柱子的最高高度,记录右边柱子的最高高度) - 当前柱子高度。单调栈:求一个元素右边第一个更大元素,单调栈就是递增的;求一个元素右边第一个更小元素,单调栈就是递减的。遇到相同的元素,更新栈内下标,就是将栈里元素(旧下标)弹出,将新元素(新下标)加入栈中。

2023-05-28 08:33:59 850

原创 第八章 贪心

上面使用 vector 非常费时,C++ 中 vector(可以理解是一个动态数组,底层是普通数组实现的)如果插入元素大于预先普通数组大小,vector 底部会有一个扩容的操作,即申请两倍于原先普通数组的大小,然后把数据拷贝到另一个更大的数组上。所以使用 vector(动态数组)来 insert,是费时的,插入再拷贝的话,单纯一个插入的操作就是。那么要是最终利润最多,就只需要统计为正数的利润即可,正利润的区间就是股票买卖的区间。账单是20,优先消耗一个10和一个5,如果不够,再消耗三个5。

2023-05-27 08:41:24 621

原创 第七章 回溯

那么就可以在 for 循环中增加判断条件:如果下一层的 sum(就是本层的 sum + candidates[i])已经大于 target,就可以结束本轮 for 循环。排列是有序的,也就是说 [1,2] 和 [2,1] 是两个集合,这和之前的子集以及组合所不同的地方。的时候,依然是会进入下一层递归,只是在下一层递归结束判断的时候,会判断。组合问题和分割问题都是收集树的叶子节点,而子集问题是找树的所有节点!棋盘的宽度就是for循环的长度,递归的深度就是棋盘的高度。的时候,同样不满足题目条件了。

2023-05-24 10:17:45 468

原创 第一章 数学基础

比如抛硬币,假设随机抛出硬币 10000 次,结果 8000 次人像在上,2000 次数字在上,就可以推测出该硬币可能比较特殊,进而可得该硬币的具体参数,即人像的概率为 0.8,数字的概率为 0.2。概率:在特定环境下某件事情发生的可能性,即在结果没有产生之前,根据环境中的参数,来预测某件事情发生的概率。逆概率问题就比如上面摸球问题,在之前并不知道箱子里面有什么颜色的球,而是摸出一个球,观察这个球的颜色,进而预测这个箱子里面有什么颜色的球,这种。向量是一组标量排列而成的,只有一个轴,沿着行或者列的方向。

2023-05-22 20:51:56 1787

原创 第三章 卷积神经网络

卷积神经网络,Convolutinal Neural Network,CNN在之前两章的由线性模型构成的神经网络都是全连接神经网络。

2023-05-22 09:36:23 682

原创 第六章 二叉树

目录一、二叉树的遍历方式1.1 二叉树的前序遍历1.1.1 N 叉树的前序遍历1.2 二叉树的中序遍历1.3 二叉树的后序遍历1.3.1 N 叉树的后序遍历1.4 二叉树的层序遍历1.4.1 二叉树的层序遍历 II1.4.2 二叉树的右视图1.4.3 二叉树的层平均值1.4.4 N叉树的层序遍历1.4.5 在每个树行中找最大值1.4.6 填充每个节点的下一个右侧节点指针1.4.7 填充每个节点的下一个右侧节点指针II1.4.8 二叉树的最大深度1.4.9 二叉树的最小深度二、二叉树的属性2.1 对称二叉树2

2023-05-22 08:38:32 293

原创 第二章 逻辑分类模型

矩阵变换,实质上是一种空间变换的函数,上述变换过程就将输入 feature=8 的空间映射到输出 feature=1 的空间。同样,也可以实现从 feature=8 映射到输出 feature=x 的空间,其中 x 可以自行设置。如果每次梯度下降仅使用一个点的梯度,这样带来的好处是可以克服求导时的。上面过程都是线性变换的,需要在每一次映射之后引入一个非线性函数(比如 sigmod 函数),使得该神经网络可以去拟合一个非线性的变换。,这样训练出的模型性能可能会更好,但是训练时优化的时间会非常长。

2023-05-20 16:19:54 580

原创 第一章 线性模型

由上式可以知道,不管多少层的一个线性的神经网络模型,都可以化简为一个仅包含一层的神经网络模型,这样的话,那些设计多个隐藏层的神经网络模型就没有意义了。所以在每一层的结尾都需要一个非线性函数,改进后的模型如下,其中。注意,在 Pytorch 中的一个基本单位是张量(Tensor),它可以用于动态创建计算图,其中包含数据(data)以及损失函数对于该张量的梯度(grad)。随机梯度下降(Stochastic Gradient Desce,SGD),多指 mini-batch 的随机梯度下降。

2023-05-18 15:56:20 443

原创 第五章 栈与队列

使用优先队列(披着队列外衣的堆),如果使用的是大顶堆,每次弹出堆顶最大的一个数,就不能保证题目找出频率最高的。个数,而且使用大顶堆每次要对整个堆进行排序,浪费时间。如果是使用小顶堆,每次仅保留。方便再前后两端进行操作,但是这里可以直接使用一个数组。个频率最高的元素在堆里面,就需要只对。的作用是队列中队头和队尾的位置。个元素进行排序,节省时间开销。这个题目参考文章里面使用了库。单调队列经典题目,具体实现看。代替,效率更高,数组。

2023-05-17 11:21:14 225

原创 第0章 刷题题单

Leetcode 704 二分查找Leetcode 35 搜索插入位置Leetcode 34 在排序数组中查找元素的第一个和最后一个位置Leetcode 69 x 的平方根Leetcode 367 有效的完全平方数Leetcode 27 移除元素Leetcode 26 删除有序数组中的重复项Leetcode 283 移动零Leetcode 844 比较含退格的字符串Leetcode 977 有序数组的平方Leetcode 209 长度最小的子数组Leetcode 904 水果成篮Leetcode 76 最小

2023-05-17 11:21:04 264

原创 第四章 字符串

可以先统计字符串中空格的个数,然后将字符串长度扩充到替换后的字符串的长度。接下来,采用双指针从后往前遍历,在由重复子串组成的字符串中,最长相等前后缀不包含的子串就是最小重复子串。指向旧长度的末尾,遇到空格就替换掉。详细 KMP 算法解释见。为了将时间复杂度做到。

2023-05-17 09:36:20 233

原创 第三章 哈希表

先对数组排序,然后使用两个指针分别指向两个数组开始,如果两个指针指向元素不相等,将数值较小的指针右移。如果两个指针指向元素相同,则将该元素加入结果中,并同时右移两个指针。,字符进入窗口相应元素数目减一,出窗口加一。如果使用哈希表,这个题目不好判重,会非常麻烦,细节很多。对于第三种情况,考虑每一位数的最大数字的下一个数(即每一位数平方之和)是多少。这个题目和上一个题目类似,结果依然使不能重复的,唯一区别在于多了一层。之后只需要把字符串的首地址赋值过去,可以减少一次拷贝操作,提高效率。表示字符串平均长度。

2023-05-16 11:04:08 248

原创 第二章 链表

先统计两个链表长度,再将较长链表先遍历到两个链表能尾部对其的位置,再开始遍历。

2023-05-15 09:24:51 339

原创 第一章 数组

target不在数组的大小范围内target在数组的大小范围内,但是target不在数组中target在数组的大小范围内且在数组中public :// 情况一 if(rightBorder - leftBorder > 1) return {// 情况三 return {// 情况二 } // 寻找右边界 int getRightBorder(vector < int > & nums , int target) {// 初始值 while(l <= r) {

2023-05-14 09:56:10 305

原创 第一章 绪论

底层的处理层接收原始输入,然后对其进行抽象处理,其后的每一层都在前一层的结果上进行更深层次的抽象,最后一层的抽象结果即为输入的一个表示,用于最终的目标任务。其中的抽象处理,是由模型内部的参数进行控制的,而参数的更新值则是根据训练数据上模型的表现,使用反向传播算法学习得到的。然而,由于自然语言处理这一认知类任务所具有的 “主观性” 特点,以及其所面对的任务和领域众多,使得标注大规模语料库的时间过长,人力成本过于高昂,因此自然语言处理的标注数据往往不够充足,很难满足深度学习模型训练的需要。

2023-04-17 16:12:38 336

原创 第八章 Attention

就图 8-2 的例子来说,输入“猫” 时的 LSTM 层的输出(隐藏状态)受此时输入的单词 “猫” 的影响最大。不过,与我们的简单模型不同,这里可以看到许多为了提高翻译精度而做的改进,比如 LSTM 层的多层化、双向 LSTM(仅编码器的第 1 层)和 skip connection 等。这里重要的是,在这个控制器的外侧有一张 “大纸”(内存)。为了模仿计算机的内存操作,NTM 的内存操作使用了两个 Attention, 分别是 “基于内容的 Attention” 和 “基于位置的 Attention”。

2023-04-17 10:46:04 232

原创 一、摄影基础课

对于夜间拍摄,在固定快门速度(夜间快门速度不能太低)和设置最大光圈前提下,画面依然比较暗,这时就必须提高 ISO;光圈越大,背景虚化效果越强,使拍摄主体从画面中分离出来,更加突出。(这里快门速度不能过低)和设置最大光圈的前提下,画面依旧比较暗,这时也必须提高 ISO。当拍摄黑色物体的时候,需要减曝光补偿。,相机进入多少光线,就决定照片的明暗是否合适。光圈:通过控制相机通光孔来控制进入相机光线的多少,由一组叶片旋转围绕组成。数字越大,光圈越小。当快门关闭的时候,光线一点都无法进入相机,即一张照片曝光结束。

2023-04-16 16:46:41 474

原创 第七章 基于 RNN 的生成文本

在第 5 章和第 6 章中,我们仔细研究了 RNN 和 LSTM 的结构及其实现。现在我们已经在代码层面理解了它们。首先,本章将使用语言模型进行文本生成。具体来说,就是使用在语料库上训练好的语言模型生成新的文本。然后,我们将了解如何使用改进过的语言模型生成更加自然的文本。通过这项工作,我们可以(简单地)体验基于 AI 的文本创作。另外,本章还会介绍一种结构名为 seq2seq 的新神经网络。

2023-04-15 16:59:02 860

原创 第六章 Gated RNN

上一章的 RNN 存在环路,可以记忆过去的信息,其结构非常简单,易于实现。不过,遗憾的是,这个 RNN 的效果并不好。原因在于,许多情况下它都无法很好地学习到时序数据的长期依赖关系。现在,上一章的简单 RNN 经常被名为 LSTM 或 GRU 的层所代替。实际上,当我们说 RNN 时,更多的是指 LSTM 层,而不是上一章的 RNN。顺便说一句,当需要明确指上一章的 RNN 时,我们会说“简单 RNN”或 “Elman”。LSTM 和 GRU 中增加了一种名为 “门” 的结构。

2023-04-15 15:20:57 438

原创 第五章 RNN

到目前为止, 我们看到的神经网络都是前馈型神经网络。前馈(feedforward)是指网络的传播方向是单向的。具体地说,先将输入信号传给下一层(隐藏层),接收到信号的层也同样传给下一层,然后再传给下一 层……像这样,信号仅在一个方向上传播。虽然前馈网络结构简单、易于理解,但是可以应用于许多任务中。不过, 这种网络存在一个大问题,就是不能很好地处理时间序列数据(以下简称为 “时序数据”)。更确切地说,单纯的前馈网络无法充分学习时序数据的性质(模式)。于是,

2023-04-15 11:32:52 405

原创 第四章 word2vec 的高速化

word2vec 的机制中的 CBOW 模型。因为 CBOW 模型是一个简单的 2 层神经网络,所以实现起来比较简单。但是,目前的实现存在几个问题,其中最大的问题是,随着语料库中处理的词汇量的增加,计算量也随之增加。实际上,当词汇量达到一定程度之后,上一章的 CBOW 模型的计算就会花费过多的时间。如图 4-1 所示,上一章的 CBOW 模型接收拥有 2 个单词的上下文,并基于它们预测 1 个单词(目标词)。此时,通过输入层和输入侧权重(Win​。

2023-04-15 09:27:10 238

空空如也

空空如也

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

TA关注的人

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