- 博客(41)
- 收藏
- 关注
原创 【LeetCode 笔记】DFS & BFS
记录一下最近的笔试题题目描述看电影选座位,座位用m*n的二维矩阵表示,用1代表该作为已选,0代表未选。求选择出最大的相邻空座位个数(上下左右为相邻)。示例一:输入:471 0 0 1 0 0 01 0 0 0 0 1 10 0 0 1 0 0 01 1 0 1 1 0 0输出:18示例二:输入:471 0 0 1 0 0 01 0 0 1 0 1 10 0 0 1 0 0 01 1 0 1 1 0 0输出:9解题思路1. 递归查找.
2022-04-26 15:15:57
683
2
原创 李宏毅《深度学习》 - BERT
在监督学习中,模型的输入为x,若期望输出是y,则在训练的时候需要给模型的期望输出y以判断其误差——有输入和输出标签才能训练监督学习的模型。自监督学习在没有标注的训练集中,把训练集分为两部分,一个作为输入,另一个作为模型的标签。自监督学习是一种无监督学习的方法。BERT 是 Transformer 的编码器(Encoder),一般用于NLP中(也可用于图像、语音处理中),它的输入是一排文字,输出是等长的一串向量。训练 BERT 一般是两个任务:从训练集中拿出两个句子 Sentence1 和 Sentence2
2021-10-25 21:45:21
1341
2
原创 李宏毅《深度学习》- Transformer
输入一个序列,输出长度由模型决定。例如语音识别,输入的语音信号就是一串向量,输出就是语音信号对应的文字。但是语音信号的长度和输出的文字个数并无直接联系,因此需要机器自行决定:对于世界上没有文字的语言,我们可以对其直接做语音翻译。另外,Seq2seq 还可以用来训练聊天机器人:输入输出都是文字(向量序列),训练集示例如下图:各式各样的NLP问题,往往都可以看作QA问题,例如问答系统(QA),让机器读一篇文章,读入一个问题,就输出一个答案。而该问题就可以用 Seq2seq 的模型来解决:question
2021-10-22 22:39:47
3604
原创 李宏毅《深度学习》- Self-attention 自注意力机制
无论是预测视频观看人数还是图像处理,输入都可以看作是一个向量,输出是一个数值或类别。然而,若输入是一系列向量(序列),同时长度会改变,例如把句子里的单词都描述为向量,那么模型的输入就是一个向量集合,并且每个向量的大小都不一样:将单词表示为向量的方法:One-hot Encoding(独热编码)。向量的长度就是世界上所有词汇的数目,用不同位的1(其余位置为0)表示一个词汇,如下所示:但是它并不能区分出同类别的词汇,里面没有任何有意义的信息。另一个方法是Word Embedding:给单词一个向量,这个向量
2021-10-20 21:48:22
20366
7
原创 【吃瓜教程】第六章 - 支持向量机
支持向量机(SVM)算法原理几何角度:对于线性可分的数据集,SVM就是找 距离正负样本都最远的超平面,相比于感知机,其解是唯一的,且不偏不倚,泛化性能更好。假设来一个新样本误差过大,其被标注为负样本,却落在了超平面的正样本空间里。对于感知机来说,这个样本就是正样本,导致划分错误;但是SVM是找距离正负样本都最远的超平面,有一定的缓冲空间,所以泛化性能较好。
2021-10-14 15:33:11
366
2
原创 【动手学数据分析】 Task05 - 模型建立和评估
模型建立和评估的基本流程:读入数据集、特征工程、分割训练集和测试集、创建模型、输出模型预测结果
2021-09-23 20:56:19
245
原创 【动手学数据分析】 Task04 - 数据可视化
信息可视化能帮我们找出异常值、进行必要的数据转换、判断选用哪种相关模型,同时也需要数据可交互。matplotlib是一个用于绘制高质量图表的第三方包,其衍生出了多个数据可视化工具,如 seaborn。综合使用pandas,matplotlib和seaborn 可绘制出较多静态图。
2021-09-20 10:06:06
276
原创 【动手学数据分析】 Task03 - 数据重构
一、数据的合并:常见的合并方法[有 concat、append、merge、join二、使用Series类型的数据三、数据的聚合与运算
2021-09-17 10:03:02
220
原创 【动手学数据分析】 Task02 - 数据清洗及特征处理
数据清洗一方面是对NAN空数据的处理,有替换填充、删除等方法;另一方面是去重,使用DataFrame.drop_duplicates()方法。对于特征处理部分,先对连续变量进行离散化操作(分箱处理),这主要是为了提升模型的稳定性,减少过拟合出现的几率。另外是转换文本类型变量,以及对某一列进行特征提取。
2021-09-15 11:09:06
257
原创 【动手学数据分析】 Task01 - 数据载入及观察 + Pandas基础 + 探索性数据分析
一、数据载入及初步观察:首先是下载数据集,其次是导入模块并载入数据,查看表结构信息,以及判断空数据;二、pandas 基础:比较两种数据类型DataFrame和Series,筛选数据;三、探索性数据分析:通过排序、数据计算来统计数据,找出隐含信息。
2021-09-14 17:30:40
240
原创 李宏毅《机器学习》Task06 - 卷积神经网络(CNN)
卷积神经网络(Convolution Neural Network)是一种神经网络的架构设计,专门用于影像处理上。本文从神经元版本和卷积核版本对卷积层进行介绍,随后介绍池化层及其作用——把图像变小的同时保留其重要特征。最后举例一个CNN的应用场景:Alpha GO 下围棋。
2021-08-27 19:54:56
557
原创 李宏毅《机器学习》Task05 - 网络设计的技巧(优化调整)
本篇介绍深度学习中优化调整的方法:判断局部最小值与鞍点、大小批次的选择、梯度下降 + 动量的综合应用以优化梯度下降、学习率的自动调整(RMSProp 算法和Learning Rate Scheduling等)、损失函数选择的影响和批标准化等。
2021-08-25 22:53:06
488
1
原创 李宏毅《机器学习》Task04 - 深度学习介绍和反向传播机制
本文分别介绍了深度学习和反向传播机制。其中深度学习的三步骤类似于机器学习:神经网络、模型评估、函数择优。反向传播是基于梯度下降算法和链式求导法则的一种计算的参数算法,其有两种传播机制:向前和向后传播。
2021-08-22 16:28:12
670
原创 李宏毅《机器学习》Task03 - 误差和梯度下降
对于机器学习的Regression,有两种因素影响其训练结果:bais 和 variance。减小误差可使用交叉验证或N-折交叉验证方法。梯度下降法有三种方法对其进行优化:调整学习率(Adagrad 算法)、随机梯度下降法和特征缩放。
2021-08-20 21:02:01
496
2
原创 李宏毅《机器学习》Task02 - 回归
一、回归(Regression)能做什么?除了上一节说的预测 PM2.5 之外,还有其他非常有用的案例:股市预测:输入:过去十年内各种股票的涨跌资料或某些公司并购的资料输出:未来道琼工业平均指数自动驾驶:输入:无人车红外线所探测的数据、镜头所看到的数据输出:方向盘的角度(左转15°、右转35°等)推荐系统:输入:使用者A + 商品B输出:使用者A 购买 商品B的 可能性二、利用回归进行预测预测宝可梦的CP值背景“CP值”是一只宝可梦的战斗力。你抓到一只宝可
2021-08-17 22:21:47
490
原创 李宏毅《机器学习》Task01 - 机器学习介绍
一、机器学习介绍1. 机器学习的由来人工智能——目标最初在1950年代出现了 “Artificial Intelligence” 这个词,人们希望机器可以跟人一样聪明。然而在很长一段时间人们并不知道怎么做。机器学习——手段到1980年代后,有了机器学习的方法。顾名思义,其意义为“让机器具有学习的能力”,即通过机器学习的手段,让它可以和人一样聪明。深度学习深度学习是机器学习的其中一个方法。生物的行为取决于两件事:后天学习的结果、先天本能。在有机器学习之前,人们通过设定好机器的本能来达到预
2021-08-16 17:15:10
1066
6
原创 Docker 常用命令
狂神说Java Bilibili地址:Docker最新超详细版教程通俗易懂Docker命令关系图常用命令attach Attach to a running container # 当前 shell 下 attach 连接指定运行镜像build Build an image from a Dockerfile # 通过 Dockerfile 定制镜像commit Create a new image from a container chang.
2021-07-09 16:21:31
119
原创 Linux Task05 - 磁盘管理
磁盘管理我们在操作系统课程中学过,磁盘是由表面涂有磁性物质的金属或塑料构成的圆形盘片,通过磁头从磁盘存取数据。磁盘地址用“柱面号·盘面号·扇区号(块号)”表示。而新的磁盘只是一个含有磁性记录材料的空白盘,需要对其进行一定操作才能够使用,该操作为 磁盘管理。在 Linux 中,磁盘管理分为五个步骤:#mermaid-svg-CtVDrZQ4nef8TC45 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermai
2021-06-24 19:33:14
207
原创 Linux Task04 - 文件和目录管理
1. 目录Linux 中的目录结构是以"/"根目录为起始的树状结构。目录有四种交互状态:static(不可变)/variable(可变),shareable(共享)/unshareable(独享)。static 文件包括二进制文件、库、文档文件和其他未经干预不会更改的文件。1.1 目录结构来源: linux系统目录结构说明1.2 常用路径路径解释/根目录/bin基本用户命令二进制文件目录/etc配置文件目录/boot引导文件/dev
2021-06-21 10:01:27
188
原创 Linux Task03 - 用户和组管理
一、用户与用户组用户Linux是多用户多任务的操作系统,不同的用户可以同时执行不同的任务,用户需要向系统管理员申请账户才能使用系统资源。用户分为超级用户(root)和普通用户用户组引入用户组的目的是为了让多个用户能同时拥有某种权限,方便集中管理。用户组分为主用户组(primary group)和次用户组(secondary group),当用户被创建之后默认属于同名用户组,即主用户组,后来再将该用户加入其他用户组的话,加入的用户组为该用户的次用户组。各用户组信息保存位置如下:
2021-06-17 10:15:47
136
原创 Linux Task02 - 系统安装(Ubuntu)
一、相关工具及版本虚拟机:VMware Workstation 16 ProUbuntu版本:20.04.2.0二、创建虚拟机成功安装VMware后,打开软件在开始之前,我们首先要准备好Ubuntu ISO镜像文件,这里选取的是ubuntu-20.04.2.0-desktop-amd64.iso。具体操作步骤如下:新建一个虚拟机选择自定义后,点击“下一步”再点击“下一步”选择“稍后安装”,单击“下一步”选择待安装的操作系统类型及版本,这里是Ubuntu64位
2021-06-15 20:13:25
143
原创 Linux Task01 - Linux 简介
Linux 概述Linux是一种免费和开放源码的类UNIX操作系统,是一个基于POSIX(可移植操作系统接口)的多用户、多任务、支持多线程和多CPU的操作系统。通常说的Linux指的是Linux内核。Linux的历史
2021-06-14 13:15:45
157
1
原创 二叉排序树的相关算法
1. 判断给定的二叉树是否是二叉排序树利用中序遍历,若始终能保持前一个值比后一个值小,则是二叉排序树。int predt = -32767; //中序前驱的值int JudgeBST(BiTree bt){ int left, right; if(bt == NULL) //空树 return 1; else { left = JudgeBST(bt->lchild); //判断左子树 if(left == 0 || predt >= bt->data) //左子
2020-12-10 16:36:10
1650
3
原创 【LeetCode 笔记】树
由于树的非线性结构特殊,大多数题目均可采用递归的求解方式。但递归带来的问题就是它的递归栈需要额外的空间,并且在某种程度上也会出现重复访问的情况(子问题重叠)。
2020-08-08 21:01:53
350
2
原创 在二叉排序树中,找所有结点值小于 x 中的最大结点
题目描述找二叉排序树中,结点值小于 x 且是所有小于 x 的结点中最大的结点。其中,二叉排序树定义如下:typedef struct BTNode { int val; struct BTNode *lchild; struct BTNode *rchild;} BSTNode, *BiTree;算法思路用max记录当前遍历到的比x小的最大值,使用bt遍历二叉排序树;在 bt->val >= x 的结点的左子树中查找;在 bt->val < x 的结点的右子
2020-07-04 18:29:17
3102
7
原创 【C语言】复试系列问题
1.从C语⾔执⾏效率⽅便,简述下C语⾔采取了哪些措施提⾼执⾏效率。①.使⽤指针:有些程序⽤其他语⾔也可以实现,但C能够更有效地实现;有些程序⽆法⽤其它语⾔实现,如直接访问硬件,但C却可以。正因为指针可以拥有类似于汇编的寻址⽅式,所以可以使程序更⾼效。②.使⽤宏函数:宏函数仅仅作为预先写好的代码嵌⼊到当前程序,不会产⽣函数调⽤,所以仅仅是占⽤了空间,⽽使程序可以⾼效运⾏。在频繁调⽤同⼀个宏函数的...
2020-04-14 14:24:59
15126
3
原创 【C语言】关于各类变量的存放信息
题目描述根据下面的代码,填写表格。整数算2字节,字符1字节,指针4字节。每个区域的起始地址都是0,内存按2字节编址。int num = 2; void main() { char str1[10]={"UESTC"}; char *str2="CHENGDU"; char p; } void func(int m) { int n = 10; }解释...
2020-04-10 10:22:01
436
转载 二分查找算法细节详解
思路我相信对很多读者朋友来说,编写二分查找的算法代码属于玄学编程,虽然看起来很简单,就是会出错,要么会漏个等号,要么少加个 1。不要气馁,因为二分查找其实并不简单。看看 Knuth 大佬(发明 KMP 算法的那位)怎么说的:Although the basic idea of binary search is comparatively straightforward,the detai...
2020-04-08 20:30:30
2492
2
原创 【LeetCode 笔记】动态规划
一篇博文便涉水:《为什么你学不过动态规划?告别动态规划,谈谈我的经验》从中摘出来的中心思想方法:文中讲解了3道例题,依次为:以下均是基于数组空间的DP解法,在后续可以对空间进行优化,达到 O(1)O(1)O(1)大佬的经验附:LeetCode 动态规划入口解题思路:想到了一次的正序遍历,但是结果求出的是非连续序列的最大和:官方题解:简而言之,就是检测:定义数组元素含义定义记录局部最大和,表示当前局部最大和定义状态转移方程要取最大值,则要看 是加了之后变大,还是原来就比较大,肯定不能是加了一个数之后反
2020-04-07 17:52:54
533
原创 【LeetCode 笔记】数组
1. 两数之和26. 删除排序数组中的重复项27. 移除元素48. 旋转图像54. 螺旋矩阵59. 螺旋矩阵 II189. 旋转数组面试题 10.03. 搜索旋转数组33. 搜索旋转排序数组169. 多数元素1207. 独一无二的出现次数717. 1bit 与2bit 字符1351. 统计有序矩阵中的负数1337. 方阵中战斗力最弱的 K 行448. 找到所有数组中消失的数字
2020-04-05 20:10:37
913
原创 【LeetCode 笔记】数学
数学172. 阶乘后的零204. 计数质数最大公因数 & 最小公倍数367. 有效的完全平方数172. 阶乘后的零给定一个整数 n,返回 n! 结果尾数中零的数量。输入: 3输出: 0解释: 3! = 6, 尾数中没有零。解题思路参考大佬的思路:首先题目的意思是末尾有几个0比如6! = 【1 × 2 × 3 × 4 × 5 × 6】其中只有2×5末尾才有0,所以就...
2020-04-05 10:36:47
383
原创 【LeetCode 笔记】字符串
LeetCode 字符串一类部分习题242. 有效的字母异位词1332. 删除回文子序列409. 最长回文串205. 同构字符串696. 计数二进制子串67. 二进制求和796. 旋转字符串1170. 比较字符串最小字母出现频次557. 反转字符串中的单词 III3. 无重复字符的最长子串
2020-04-02 22:35:28
859
原创 【LeetCode 笔记】链表
LeetCode 链表部分练习题前言21. 合并两个有序链表24. 两两交换链表中的节点83. 删除排序链表中的重复元素86. 分隔链表92. 反转链表 II141. 环形链表160. 相交链表234. 回文链表1290. 二进制链表转整数143. 重排链表2. 两数相加1290. 二进制链表转整数
2020-04-01 15:09:37
727
原创 【C语言】字符数组和字符指针
char *name[5] 和 char name[5][9]相同之处name 都是二级指针,*name 都表示一级指针,**name 都表示存储的字符内容。不同之处注:char * s[] 是字符指针数组,数组元素是字符指针,s[i]是一级字符指针,指向常量字符串。...
2020-04-01 11:38:28
370
原创 【LeetCode 笔记】双指针
283. Move Zeroes题目描述给定一个数组 nums,编写一个函数将所有 000 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:1. 必须在原数组上操作,不能拷贝额外的数组。2. 尽量减少操作次数。解题思路方法:双指针用两个指针i, j从头到尾依次遍历:遇到零元素就记录该位置遇到...
2020-03-29 21:55:58
390
原创 【LeetCode 笔记】二进制 + 位运算
LeetCode 1290. Convert Binary Number in a Linked List to Integer题目描述给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。请你返回该链表所表示数字的 十进制值 。示例 1:输入:head = [1,0,1]输出:5**解释:**二进制数 (101) ...
2020-03-29 21:24:33
431
原创 操作系统、计算机网络、数据库系统概论等相关面试问题
操作系统1. 中断和陷入有什么异同?外中断时指来自处理机和内存外部的中断,如I/O中断、定时器中断、外部信号中断等。狭义上也叫中断;内中断主要指在处理机和内存内部产生的中断,也称陷入,如校验错、页面失效、溢出、除数为零等;中断和陷阱的主要区别:(1) 陷入通常由处理机正在执行的现行指令引起,而中断则是由与现行指令无关的中断源引起的。(2) 陷阱处理程序提供的服务为当前进程所用,而中断...
2020-03-27 11:23:57
9031
原创 【Python 爬虫】监控教务网成绩 + 成绩邮件推送
本博文转自 2018 年个人的 GitHub 博客编写的文章:Python 3.6 监控爬取成绩并推送到邮箱(基于百度云接口的验证码识别)简介本程序模拟登录正方教务系统获取本人当前学期成绩(也可以手动改学期学年),20 分钟检测一次,当有新成绩公布时就发送到邮箱,本程序用到的是我学校的教务网网址。
2020-03-23 23:29:56
1736
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人